parse method
Parses YAML content with layout metadata extraction.
Returns a LayoutAwareParseResult containing both the parsed data map and key-level metadata for preserving layout information.
yaml - The YAML string to parse
Implementation
LayoutAwareParseResult parse(String yaml) {
if (yaml.isEmpty) {
return const LayoutAwareParseResult(data: {});
}
try {
// Check for multi-document YAML
final documents = _parseMultiDocument(yaml);
if (documents.length > 1) {
return _parseMultipleDocuments(yaml, documents);
}
// Single document parsing
final doc = loadYaml(yaml);
if (doc == null) {
return const LayoutAwareParseResult(data: {});
}
// Get the raw YAML node for metadata extraction
final yamlDoc = loadYamlDocument(yaml);
final result = _parseNode(yamlDoc.contents, yaml);
return LayoutAwareParseResult(
data: result.data is Map<String, dynamic>
? result.data as Map<String, dynamic>
: {'_value': result.data},
keyMeta: result.keyMeta.isEmpty ? null : result.keyMeta,
);
} catch (e) {
throw FormatException(TurboConstants.failedToParseYaml(e));
}
}