parseDocComponentsFile function

List<DocComponent> parseDocComponentsFile(
  1. String fileContent
)

Parses the content of a file containing DocComponent definitions.

Implementation

List<DocComponent> parseDocComponentsFile(String fileContent) {
  final unit = parseString(content: fileContent).unit;
  final components = <DocComponent>[];

  // find "const docComponents = [...]" in the file
  unit.declarations.whereType<TopLevelVariableDeclaration>().forEach((decl) {
    final variable = decl.variables.variables.first;
    final variableName = variable.name.toString();
    if (variableName == 'docComponents' ||
        // backwards compatibility with old `liquid_flutter` package name:
        variableName == 'ldDocComponents') {
      final initializer = variable.initializer;
      if (initializer is ListLiteral) {
        for (var element in initializer.elements) {
          if (element is MethodInvocation) {
            final name = element.methodName.name;
            if (name == 'DocComponent' ||
                // backwards compatibility with old `liquid_flutter` package name:
                name == 'LdDocComponent') {
              final component = parseDocComponent(element);
              components.add(component);
            }
          }
        }
      }
    }
  });

  return components;
}