generate method

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

Generates Markdown 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 frontmatter metadata

Returns a Markdown 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();
  final lineEnding = _getLineEnding(keyMeta);
  final leadingNewlines = _getLeadingNewlines(keyMeta);

  // Add frontmatter if metadata is provided
  if (metaData != null && metaData.isNotEmpty) {
    buffer.write('---');
    buffer.write(lineEnding);
    _writeFrontmatter(buffer, metaData, lineEnding);
    buffer.write('---');
    buffer.write(lineEnding);
  }

  // Add leading whitespace
  for (var i = 0; i < leadingNewlines; i++) {
    buffer.write(lineEnding);
  }

  // Generate body content
  _writeDataContent(buffer, data, keyMeta, lineEnding, 0);

  final result = buffer.toString();
  // Trim trailing whitespace while preserving line ending style
  return result.trimRight();
}