Updates.
This commit is contained in:
48
packages/rust/examples/basic.rs
Normal file
48
packages/rust/examples/basic.rs
Normal file
@@ -0,0 +1,48 @@
|
||||
//! 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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user