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

Function write_frontmatter_field

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

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

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