Skip to main content

dbt_yaml/value/
debug.rs

1use crate::mapping::Mapping;
2use crate::value::{Number, Value};
3use std::fmt::{self, Debug};
4
5impl Debug for Value {
6    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
7        // TODO: print the span as well
8        match self {
9            Value::Null(..) => formatter.write_str("Null"),
10            Value::Bool(boolean, ..) => write!(formatter, "Bool({})", boolean),
11            Value::Number(number, ..) => write!(formatter, "Number({})", number),
12            Value::String(string, ..) => write!(formatter, "String({:?})", string),
13            Value::Sequence(sequence, ..) => {
14                formatter.write_str("Sequence ")?;
15                formatter.debug_list().entries(sequence).finish()
16            }
17            Value::Mapping(mapping, ..) => Debug::fmt(mapping, formatter),
18            Value::Tagged(tagged, ..) => Debug::fmt(tagged, formatter),
19        }?;
20        write!(formatter, " @{{{:?}}}", self.span())
21    }
22}
23
24impl Debug for Number {
25    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
26        write!(formatter, "Number({})", self)
27    }
28}
29
30impl Debug for Mapping {
31    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
32        formatter.write_str("Mapping ")?;
33        let mut debug = formatter.debug_map();
34        for (k, v) in self {
35            debug.entry(k, v);
36        }
37        debug.finish()
38    }
39}