| extern crate yaml_rust; |
| |
| use std::env; |
| use std::fs::File; |
| use std::io::prelude::*; |
| use yaml_rust::yaml; |
| |
| fn print_indent(indent: usize) { |
| for _ in 0..indent { |
| print!(" "); |
| } |
| } |
| |
| fn dump_node(doc: &yaml::Yaml, indent: usize) { |
| match *doc { |
| yaml::Yaml::Array(ref v) => { |
| for x in v { |
| dump_node(x, indent + 1); |
| } |
| } |
| yaml::Yaml::Hash(ref h) => { |
| for (k, v) in h { |
| print_indent(indent); |
| println!("{:?}:", k); |
| dump_node(v, indent + 1); |
| } |
| } |
| _ => { |
| print_indent(indent); |
| println!("{:?}", doc); |
| } |
| } |
| } |
| |
| fn main() { |
| let args: Vec<_> = env::args().collect(); |
| let mut f = File::open(&args[1]).unwrap(); |
| let mut s = String::new(); |
| f.read_to_string(&mut s).unwrap(); |
| |
| let docs = yaml::YamlLoader::load_from_str(&s).unwrap(); |
| for doc in &docs { |
| println!("---"); |
| dump_node(doc, 0); |
| } |
| } |