icydb-core 0.68.7

IcyDB — A type-safe, embedded ORM and schema system for the Internet Computer
Documentation
//! Module: visitor::sanitize
//! Responsibility: module-local ownership and contracts for visitor::sanitize.
//! Does not own: cross-module orchestration outside this module.
//! Boundary: exposes this module API while keeping implementation details internal.

use crate::{
    traits::Visitable,
    visitor::{VisitorContext, VisitorMut},
};

///
/// SanitizeVisitor
/// Walks a tree and applies sanitization at each node.
///

#[derive(Debug, Default)]
pub(crate) struct SanitizeVisitor;

impl SanitizeVisitor {
    #[must_use]
    pub(crate) const fn new() -> Self {
        Self
    }
}

impl VisitorMut for SanitizeVisitor {
    fn enter_mut(&mut self, node: &mut dyn Visitable, ctx: &mut dyn VisitorContext) {
        node.sanitize_self(ctx);
        node.sanitize_custom(ctx);
    }

    fn exit_mut(&mut self, _: &mut dyn Visitable, _: &mut dyn VisitorContext) {}
}