parseDocComponentsFile function
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;
}