use crate::ast::Node;
mod container;
mod document;
mod effect;
mod helpers;
mod leaf;
mod special;
pub(in crate::format::writer) use document::write_document_body;
use container::{write_frame, write_group, write_table};
use effect::{write_light, write_mesh};
use leaf::{
write_chart, write_code, write_ellipse, write_image, write_line, write_pattern, write_polygon,
write_polyline, write_rect, write_text,
};
use special::{
write_connector, write_field, write_footnote, write_instance, write_shape, write_toc,
write_unknown_node,
};
pub(super) fn write_node(node: &Node, out: &mut String, depth: usize) {
match node {
Node::Rect(r) => write_rect(r, out, depth),
Node::Ellipse(e) => write_ellipse(e, out, depth),
Node::Line(l) => write_line(l, out, depth),
Node::Text(t) => write_text(t, out, depth),
Node::Code(c) => write_code(c, out, depth),
Node::Frame(f) => write_frame(f, out, depth),
Node::Group(g) => write_group(g, out, depth),
Node::Image(i) => write_image(i, out, depth),
Node::Polygon(p) => write_polygon(p, out, depth),
Node::Polyline(p) => write_polyline(p, out, depth),
Node::Instance(i) => write_instance(i, out, depth),
Node::Field(f) => write_field(f, out, depth),
Node::Toc(t) => write_toc(t, out, depth),
Node::Footnote(f) => write_footnote(f, out, depth),
Node::Table(t) => write_table(t, out, depth),
Node::Shape(s) => write_shape(s, out, depth),
Node::Connector(c) => write_connector(c, out, depth),
Node::Unknown(u) => write_unknown_node(u, out, depth),
Node::Pattern(p) => write_pattern(p, out, depth),
Node::Chart(c) => write_chart(c, out, depth),
Node::Light(l) => write_light(l, out, depth),
Node::Mesh(m) => write_mesh(m, out, depth),
}
}
pub(super) fn write_children_block(children: &[Node], out: &mut String, depth: usize) {
for child in children {
write_node(child, out, depth + 1);
}
}
pub(in crate::format::writer) fn write_component_children(
children: &[Node],
out: &mut String,
depth: usize,
) {
write_children_block(children, out, depth);
}