use super::ShapeNode;
use super::definition_doc::non_empty;
use super::definitions::Definitions;
use crate::schema::Field;
#[derive(Debug, Clone, PartialEq, crate::Schema)]
pub struct FieldDoc {
pub name: String,
pub doc: Option<String>,
pub shape: ShapeNode,
pub required: bool,
pub range: Option<[f64; 2]>,
}
impl FieldDoc {
pub(super) fn all(fields: &[Field], defs: &mut Definitions) -> Vec<FieldDoc> {
fields
.iter()
.map(|f| FieldDoc {
name: f.name.to_owned(),
doc: non_empty(f.doc),
shape: ShapeNode::of(&(f.shape)(), defs),
required: f.required,
range: f.range.map(|(lo, hi)| [lo, hi]),
})
.collect()
}
}