parse static method

Map<String, dynamic> parse(
  1. String text
)

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