MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / write_frontmatter_field

Function write_frontmatter_field

atomic-repository/src/repository/vault.rs:1028–1072  ·  view source on GitHub ↗

Write a single frontmatter field in YAML format.

(output: &mut String, key: &str, value: &serde_json::Value)

Source from the content-addressed store, hash-verified

1026
1027/// Write a single frontmatter field in YAML format.
1028fn write_frontmatter_field(output: &mut String, key: &str, value: &serde_json::Value) {
1029 use std::fmt::Write;
1030 match value {
1031 serde_json::Value::String(s) => {
1032 // Keep simple strings readable, but quote values that our parser
1033 // would otherwise reinterpret as another scalar/container type.
1034 // JSON string syntax is valid YAML and preserves escapes.
1035 let parsed_unquoted = parse_yaml_value(s);
1036 let has_edge_whitespace = s.chars().next().is_some_and(char::is_whitespace)
1037 || s.chars().last().is_some_and(char::is_whitespace);
1038 if parsed_unquoted != serde_json::Value::String(s.clone())
1039 || s.contains(": ")
1040 || s.contains('#')
1041 || s.contains('\n')
1042 || s.starts_with('{')
1043 || s.starts_with('[')
1044 || s.starts_with('"')
1045 || s.starts_with('\'')
1046 || has_edge_whitespace
1047 {
1048 let rendered = serde_json::to_string(s).unwrap_or_else(|_| "\"\"".to_string());
1049 let _ = writeln!(output, "{}: {}", key, rendered);
1050 } else {
1051 let _ = writeln!(output, "{}: {}", key, s);
1052 }
1053 }
1054 serde_json::Value::Number(n) => {
1055 let _ = writeln!(output, "{}: {}", key, n);
1056 }
1057 serde_json::Value::Bool(b) => {
1058 let _ = writeln!(output, "{}: {}", key, b);
1059 }
1060 serde_json::Value::Array(arr) => {
1061 let rendered = serde_json::to_string(arr).unwrap_or_else(|_| "[]".to_string());
1062 let _ = writeln!(output, "{}: {}", key, rendered);
1063 }
1064 serde_json::Value::Object(_) => {
1065 // Inline JSON for nested objects
1066 let _ = writeln!(output, "{}: {}", key, value);
1067 }
1068 serde_json::Value::Null => {
1069 let _ = writeln!(output, "{}: null", key);
1070 }
1071 }
1072}
1073
1074// ── Deflation helpers ───────────────────────────────────────────────────
1075

Callers 1

render_entry_to_markdownFunction · 0.85

Calls 5

parse_yaml_valueFunction · 0.85
lastMethod · 0.80
nextMethod · 0.45
cloneMethod · 0.45
containsMethod · 0.45

Tested by

no test coverage detected