generate method
Generates YAML from data using key metadata for layout preservation.
data - The JSON data map to convert
keyMeta - The key-level metadata for layout information
metaData - Optional metadata to include under _meta key
Returns a YAML string with preserved layout from the original document.
Implementation
String generate(
Map<String, dynamic> data, {
Map<String, dynamic>? keyMeta,
Map<String, dynamic>? metaData,
}) {
final buffer = StringBuffer();
// Check for multi-document YAML
final docMeta = keyMeta?['_document'];
final isMultiDocument = docMeta != null &&
docMeta is Map<String, dynamic> &&
docMeta['yamlMeta']?['comment']
?.toString()
.contains('Multi-document') ==
true;
if (isMultiDocument) {
return _generateMultiDocument(data, keyMeta);
}
// Add metadata if provided
Map<String, dynamic> outputData = data;
if (metaData != null && metaData.isNotEmpty) {
outputData = <String, dynamic>{
'_meta': metaData,
...data,
};
}
// Generate single document
_writeMap(buffer, outputData, keyMeta, 0);
return buffer.toString().trimRight();
}