parse static method
Implementation
static Map<String, dynamic> parse(String text) {
final Map<String, dynamic> data = {};
final lines = text.split( '\n' );
String? string;
Map target = data;
final stack = [data];
// debugger;
for ( final line in lines ) {
if (line.contains('=')){
final assignment = line.split( '=' );
final lhs = assignment[ 0 ].trim();
final rhs = assignment[ 1 ].trim();
if ( rhs.endsWith( '{' ) ) {
final Map<String, dynamic> group = {};
stack.add(group);
target[ lhs ] = group;
target = group;
}
else {
target[ lhs ] = rhs;
}
}
else if (line.endsWith( '{' )) {
final Map<String,dynamic> group = target[string] ?? {};
stack.add( group );
target[string] = group;
target = group;
}
else if ( line.endsWith( '}' ) ) {
stack.removeLast();
if (stack.isEmpty) continue;
target = stack[ stack.length - 1 ];
}
else if ( line.endsWith( '(' ) ) {
final Map<String, dynamic> meta = {};
stack.add(meta);
string = line.split( '(' )[ 0 ].trim();
target[string] = meta;
target = meta;
}
else if(line.endsWith( ')' ) ) {
stack.removeLast();
target = stack[ stack.length - 1 ];
}
else {
string = line.trim();
}
}
return data;
}