parseClasses method

List<TypedefInfo> parseClasses(
  1. String content
)

Parses classes from a file

Implementation

List<TypedefInfo> parseClasses(String content) {
  final classes = <TypedefInfo>[];
  final enums = parseEnums(content);

  // Find class declarations and extract their content manually
  final lines = content.split('\n');

  for (var i = 0; i < lines.length; i++) {
    final line = lines[i].trim();

    // Match class declaration
    final classMatch = RegExp(r'^class\s+(\w+)\s*\{').firstMatch(line);
    if (classMatch != null) {
      final className = classMatch.group(1)!;

      // Find the class body (from current line to closing brace)
      var braceCount = 1;
      final classBodyLines = <String>[];

      for (var j = i + 1; j < lines.length && braceCount > 0; j++) {
        final bodyLine = lines[j];
        classBodyLines.add(bodyLine);

        // Count braces to find the end of class
        braceCount += '{'.allMatches(bodyLine).length;
        braceCount -= '}'.allMatches(bodyLine).length;
      }

      // Remove the last line (closing brace)
      if (classBodyLines.isNotEmpty) {
        classBodyLines.removeLast();
      }

      final classBody = classBodyLines.join('\n');

      // Parse fields from class body
      final fields = _parseClassFields(classBody, enums);

      if (fields.isNotEmpty) {
        classes.add(TypedefInfo(
          name: className,
          fields: fields,
          isClass: true,
        ));
      }
    }
  }

  return classes;
}