Module visitor

Module visitor 

Source
Expand description

Visitor pattern for read-only AST traversal

This module provides the Visitor trait for read-only traversal of AST nodes. Visitors are useful for collecting information, counting elements, or performing analysis without modifying the AST structure.

§Example

use markdown_ppp::ast::*;
use markdown_ppp::ast_transform::{Visitor, VisitWith};

struct TextCollector {
    texts: Vec<String>,
}

impl Visitor for TextCollector {
    fn visit_inline(&mut self, inline: &Inline) {
        if let Inline::Text(text) = inline {
            self.texts.push(text.clone());
        }
        self.walk_inline(inline);
    }
}

let doc = Document {
    blocks: vec![Block::Paragraph(vec![Inline::Text("hello".to_string())])],
};

let mut collector = TextCollector { texts: Vec::new() };
doc.visit_with(&mut collector);
assert_eq!(collector.texts, vec!["hello"]);

Traits§

VisitWith
Extension trait for visiting documents
Visitor
Visitor trait for traversing AST nodes without modification