generate method

String generate()

Implementation

String generate() {
  final taskMap = <String, List<ClsItem>>{};
  for (final item in items) {
    final hashCls = item.hashCls;
    if (taskMap.containsKey(hashCls)) {
      taskMap[hashCls]!.add(item);
    } else {
      taskMap[hashCls] = [item];
    }
  }

  final outMap = <String, String>{};
  List<String> widgetList = [];
  List<String> constructorList = [];

  var index = 1;
  taskMap.forEach((key, value) {
    final constructor = "\$Div${index++}";
    final item = value.first;
    widgetList.add(WidgetGenerator(item, constructor).generate());
    constructorList.add(constructor);

    for (final item in value) {
      outMap[item.srcCls] = constructor;
    }
  });

  final widgetCode = widgetList.join("\n\n");

  final output = StringBuffer();
  output.writeln("// Generated by EasyDSL");
  output.writeln("// Do Not Modify By Hand\n");
  output.writeln(
      "// ignore_for_file: unused_element, prefer_const_constructors");

  output.writeln("part of '$partOfUri';\n");

  // output.writeln(_genMapCode(outMap));
  output.writeln(_genDivCode(constructorList, outMap));
  // output.writeln(_genConstCode());
  output.writeln(widgetCode);
  return formatter.format(output.toString());
}