parse method

Parses JSON with layout metadata extraction.

Returns a LayoutAwareParseResult containing both the parsed data and formatting metadata for layout preservation.

Implementation

LayoutAwareParseResult parse(String json) {
  if (json.trim().isEmpty) {
    return const LayoutAwareParseResult(data: {});
  }

  final data = jsonDecode(json);
  if (data is! Map<String, dynamic>) {
    return LayoutAwareParseResult(
      data: {'_value': data},
    );
  }

  final indentSpaces = _detectIndentation(json);
  final isMinified = _isMinified(json);

  final keyMeta = <String, dynamic>{
    '_root': KeyMetadata(
      jsonMeta: JsonMeta(
        indentSpaces: isMinified ? 0 : indentSpaces,
      ),
    ).toJson(),
  };

  return LayoutAwareParseResult(
    data: data,
    keyMeta: keyMeta,
  );
}