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

Function write_frontmatter_field

atomic-repository/src/repository/vault.rs:1264–1308  ·  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

1262
1263/// Write a single frontmatter field in YAML format.
1264fn write_frontmatter_field(output: &mut String, key: &str, value: &serde_json::Value) {
1265 use std::fmt::Write;
1266 match value {
1267 serde_json::Value::String(s) => {
1268 // Keep simple strings readable, but quote values that our parser
1269 // would otherwise reinterpret as another scalar/container type.
1270 // JSON string syntax is valid YAML and preserves escapes.
1271 let parsed_unquoted = parse_yaml_value(s);
1272 let has_edge_whitespace = s.chars().next().is_some_and(char::is_whitespace)
1273 || s.chars().last().is_some_and(char::is_whitespace);
1274 if parsed_unquoted != serde_json::Value::String(s.clone())
1275 || s.contains(": ")
1276 || s.contains('#')
1277 || s.contains('\n')
1278 || s.starts_with('{')
1279 || s.starts_with('[')
1280 || s.starts_with('"')
1281 || s.starts_with('\'')
1282 || has_edge_whitespace
1283 {
1284 let rendered = serde_json::to_string(s).unwrap_or_else(|_| "\"\"".to_string());
1285 let _ = writeln!(output, "{}: {}", key, rendered);
1286 } else {
1287 let _ = writeln!(output, "{}: {}", key, s);
1288 }
1289 }
1290 serde_json::Value::Number(n) => {
1291 let _ = writeln!(output, "{}: {}", key, n);
1292 }
1293 serde_json::Value::Bool(b) => {
1294 let _ = writeln!(output, "{}: {}", key, b);
1295 }
1296 serde_json::Value::Array(arr) => {
1297 let rendered = serde_json::to_string(arr).unwrap_or_else(|_| "[]".to_string());
1298 let _ = writeln!(output, "{}: {}", key, rendered);
1299 }
1300 serde_json::Value::Object(_) => {
1301 // Inline JSON for nested objects
1302 let _ = writeln!(output, "{}: {}", key, value);
1303 }
1304 serde_json::Value::Null => {
1305 let _ = writeln!(output, "{}: null", key);
1306 }
1307 }
1308}
1309
1310// ── Deflation helpers ───────────────────────────────────────────────────
1311

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