Joshua Bemenderfer 9d9757e868 Updates.
2025-09-08 16:24:38 -04:00

49 lines
1.1 KiB
Rust

//! Example demonstrating basic Terrace parsing in Rust.
use terrace::{TerraceDocument, StringReader};
#[tokio::main]
async fn main() {
let content = r#"
config
database
host localhost
port 5432
name mydb
server
port 3000
host 0.0.0.0
ssl enabled
"#;
println!("Parsing Terrace document:");
println!("{}", content);
println!("Results:");
let reader = StringReader::new(content);
let mut doc = TerraceDocument::with_reader(reader);
while let Some(node) = doc.next().await {
if !node.is_empty() {
println!("{:indent$}{}: '{}'",
"",
node.head(),
node.tail(),
indent = node.level() * 2);
}
}
println!("\n--- Filtering Example ---");
// Example of filtering
let reader2 = StringReader::new(content);
let doc2 = TerraceDocument::with_reader(reader2);
let port_nodes = doc2.filter(|node| node.head() == "port").await;
println!("Found {} port configurations:", port_nodes.len());
for node in port_nodes {
println!(" Port: {} (level {})", node.tail(), node.level());
}
}