use qubit_redact::Redact;
use qubit_redact::RedactionWriter;
use super::Value;
use super::ValueRepr;
use super::internal::RedactedStringMap;
use crate::MultiValues;
use crate::MultiValuesRef;
use crate::NamedMultiValues;
use crate::NamedValue;
use crate::ValueContainer;
impl Redact for Value {
fn write_redacted(&self, writer: &mut RedactionWriter<'_>) {
match &self.repr {
ValueRepr::StringMap(values) => {
writer.record("Value", |fields| {
fields.map("StringMap", values);
});
}
#[cfg(feature = "json")]
ValueRepr::Json(value) => {
writer.record("Value", |fields| {
fields.json_value("Json", value);
});
}
_ => {
writer.unredacted(self);
}
}
}
}
impl Redact for MultiValues {
fn write_redacted(&self, writer: &mut RedactionWriter<'_>) {
match self.view() {
MultiValuesRef::StringMap(values) => {
writer.sequence(|items| {
items.for_each(values, |items, values| {
items.nested_item(&RedactedStringMap { values });
});
});
}
MultiValuesRef::String(values) => {
writer.sequence(|items| {
items.for_each(values, |items, value| {
items.unredacted_item(|| value);
});
});
}
#[cfg(feature = "json")]
MultiValuesRef::Json(values) => {
writer.sequence(|items| {
items.for_each(values, |items, value| {
items.json_value_item(value);
});
});
}
_ => {
writer.unredacted(self);
}
}
}
}
impl Redact for ValueContainer {
fn write_redacted(&self, writer: &mut RedactionWriter<'_>) {
match self {
Self::Scalar(value) => {
writer.tuple("ValueContainer", |fields| {
fields.nested("Scalar", value);
});
}
Self::Collection(values) => {
writer.tuple("ValueContainer", |fields| {
fields.nested("Collection", values);
});
}
}
}
}
impl Redact for NamedValue {
fn write_redacted(&self, writer: &mut RedactionWriter<'_>) {
writer.record("NamedValue", |fields| {
fields.unredacted("name", || self.name());
fields.keyed_nested("value", self.name(), self.value());
});
}
}
impl Redact for NamedMultiValues {
fn write_redacted(&self, writer: &mut RedactionWriter<'_>) {
writer.record("NamedMultiValues", |fields| {
fields.unredacted("name", || self.name());
fields.keyed_nested("value", self.name(), self.values());
});
}
}