OXYGENHUB

Coverage / src/cli/json.rs 100.0%

23 of 23 lines run, 37 of 48 functions · run #427 on main · run missed

1
//! Tiny JSON building for `--json` outputs: one document on stdout,
2
//! nothing else, with string escaping shared with the hooks payloads.
3
4
pub use oxy_core::repo::{json_array as arr, json_str as s};
5
6113×
pub fn obj<I: IntoIterator<Item = (&'static str, String)>>(pairs: I) -> String {
7113×
    let inner: Vec<String> = pairs
8113×
        .into_iter()
9718×
        .map(|(k, v)| format!("{}:{v}", s(k)))
10113×
        .collect();
11113×
    format!("{{{}}}", inner.join(","))
12113×
}
13107×
pub fn b(v: bool) -> String {
14107×
    v.to_string()
15107×
}
1681×
pub fn n<T: std::fmt::Display>(v: T) -> String {
1781×
    v.to_string()
1881×
}
1962×
pub fn opt<T>(v: Option<T>, f: impl Fn(T) -> String) -> String {
2062×
    match v {
2113×
        Some(x) => f(x),
2249×
        None => "null".into(),
23
    }
2462×
}
2539×
pub fn hashes(v: &[oxy_core::hash::ChangeHash]) -> String {
2640×
    arr(v.iter().map(|h| s(&h.to_hex())))
2739×
}