generateModel function

String generateModel(
  1. String rootClassName,
  2. Map<String, dynamic> json,
  3. String sourcePath
)

Implementation

String generateModel(
  String rootClassName,
  Map<String, dynamic> json,
  String sourcePath,
) {
  final classes = <GeneratedClass>[];

  void process(String className, Map<String, dynamic> json) {
    classes.add(GeneratedClass(className, json));

    json.forEach((key, value) {
      if (value is Map<String, dynamic>) {
        final nestedName = _capitalize(_toCamelCase(key));
        process(nestedName, value);
      }
    });
  }

  process(rootClassName, json);

  final buffer = StringBuffer();

  // ✅ Add ParsingHelper import
  buffer.writeln("import 'package:your_project/utils/parsing_helper.dart';\n");

  for (final cls in classes.reversed) {
    buffer.writeln(_buildClass(cls.name, cls.json));
  }

  final file = File(sourcePath);
  final dir = file.parent.path;
  final outputPath = '$dir/${rootClassName.toLowerCase()}.dart';

  File(outputPath).writeAsStringSync(buffer.toString());

  print("✅ Generated at: $outputPath");

  return outputPath;
}