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