substrate_data/schema/description/
shape_doc.rs1use super::definitions::Definitions;
5use super::{DefinitionDoc, ShapeNode};
6use crate::schema::{Ordered, Shape};
7
8#[derive(Debug, Clone, PartialEq, crate::Schema)]
11pub struct ShapeDoc {
12 pub root: ShapeNode,
14 pub defs: Ordered<DefinitionDoc>,
16}
17
18impl ShapeDoc {
19 #[must_use]
21 pub fn of(shape: &Shape) -> ShapeDoc {
22 let mut defs = Definitions::default();
23 let root = ShapeNode::of(shape, &mut defs);
24 ShapeDoc {
25 root,
26 defs: defs.finish(),
27 }
28 }
29
30 #[must_use]
32 pub fn definition(&self, name: &str) -> Option<&DefinitionDoc> {
33 self.defs.0.iter().find(|(n, _)| n == name).map(|(_, d)| d)
34 }
35}