toYaml method
String
toYaml({
- KeyValueBuilderDef? keyBuilder,
- KeyValueBuilderDef? listItemBuilder,
- int indent = 0,
- bool includeMetaData = true,
- String metaDataKey = TSDefaults.metaDataKey,
Implementation
String toYaml({
KeyValueBuilderDef? keyBuilder,
KeyValueBuilderDef? listItemBuilder,
int indent = 0,
bool includeMetaData = true,
String metaDataKey = TSDefaults.metaDataKey,
}) {
if (!includeMetaData) {
remove(metaDataKey);
}
keyBuilder ??= (key, value) => key.toSnakeCase();
final buffer = StringBuffer();
final prefix = ' ' * indent;
for (final entry in entries) {
final rawKey = entry.key.toString();
final key = keyBuilder(rawKey, entry.value);
final value = entry.value;
if (value is Map) {
buffer.writeln('$prefix$key:');
buffer.write(value.toYaml(keyBuilder: keyBuilder, indent: indent + 1));
} else if (value is List) {
buffer.writeln('$prefix$key:');
for (final item in value) {
if (item is Map) {
buffer.writeln('$prefix- ');
buffer.write(
item.toYaml(keyBuilder: keyBuilder, indent: indent + 2),
);
} else {
buffer.writeln(
'$prefix${listItemBuilder?.call(rawKey, item) ?? '- $item'}',
);
}
}
} else if (value == null) {
buffer.writeln('$prefix$key:');
} else if (value is String && value.contains('\n')) {
buffer.writeln('$prefix$key: |');
for (final line in value.split('\n')) {
buffer.writeln('$prefix $line');
}
} else if (value is String) {
buffer.writeln('$prefix$key: "$value"');
} else {
buffer.writeln('$prefix$key: $value');
}
}
return buffer.toString();
}