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"]);