getPropertyValue method

String? getPropertyValue(
  1. Node node,
  2. String propertyName
)

Implementation

String? getPropertyValue(Node node, String propertyName) {
  if (node is Settings) {
    final isUserSetting =
        node.mimeType == 'application/x-ncl-user-settings' ||
            node.rawAttributes['type'] == 'application/x-ncl-user-settings';

    bool hasCurrentUser = node.rawAttributes['user'] == 'currentUser';
    if (!hasCurrentUser && node == _settings) {
      hasCurrentUser = _hasUserSettingsMedia(_body);
    }

    if (isUserSetting || hasCurrentUser) {
      // NOT COMPLIANT: <rule> with user
      final hasPropertyDecl = node.children.whereType<Property>().any(
            (p) => p.name == propertyName,
          );
      // NOT COMPLIANT ends
      if (hasPropertyDecl) {
        final user = users.activeUser;
        if (user != null) {
          final userVal = user.getProperty(propertyName);
          if (userVal != null) {
            return userVal.toString();
          }
        }
      }
    }
  }

  var currentNode = node;
  final referId = currentNode.rawAttributes['refer'];
  if (referId != null) {
    final refNode = getNodeById(referId);
    if (refNode != null) {
      currentNode = refNode;
    }
  }
  final prop = currentNode.children
      .whereType<Property>()
      .where((p) => p.name == propertyName)
      .firstOrNull;
  return prop?.value;
}