generate method

String generate(
  1. Map<String, dynamic> data, {
  2. Map<String, dynamic>? keyMeta,
  3. Map<String, dynamic>? metaData,
})

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