icydb_core/visitor/
sanitize.rs1use crate::{
2 traits::Visitable,
3 visitor::{
4 PathSegment, VisitorContext, VisitorIssues, VisitorMut, VisitorMutAdapter,
5 perform_visit_mut,
6 },
7};
8
9pub(crate) fn sanitize(node: &mut dyn Visitable) -> Result<(), VisitorIssues> {
17 let visitor = SanitizeVisitor::new();
18 let mut adapter = VisitorMutAdapter::new(visitor);
19
20 perform_visit_mut(&mut adapter, node, PathSegment::Empty);
21
22 adapter.result()
23}
24
25#[derive(Debug, Default)]
31pub struct SanitizeVisitor;
32
33impl SanitizeVisitor {
34 #[must_use]
35 pub const fn new() -> Self {
36 Self
37 }
38}
39
40impl VisitorMut for SanitizeVisitor {
41 fn enter_mut(&mut self, node: &mut dyn Visitable, ctx: &mut dyn VisitorContext) {
42 node.sanitize_self(ctx);
43 node.sanitize_custom(ctx);
44 }
45
46 fn exit_mut(&mut self, _: &mut dyn Visitable, _: &mut dyn VisitorContext) {}
47}