1 extern crate yaml_rust;
2 
3 use std::env;
4 use std::fs::File;
5 use std::io::prelude::*;
6 use yaml_rust::yaml;
7 
print_indent(indent: usize)8 fn print_indent(indent: usize) {
9     for _ in 0..indent {
10         print!("    ");
11     }
12 }
13 
dump_node(doc: &yaml::Yaml, indent: usize)14 fn dump_node(doc: &yaml::Yaml, indent: usize) {
15     match *doc {
16         yaml::Yaml::Array(ref v) => {
17             for x in v {
18                 dump_node(x, indent + 1);
19             }
20         }
21         yaml::Yaml::Hash(ref h) => {
22             for (k, v) in h {
23                 print_indent(indent);
24                 println!("{:?}:", k);
25                 dump_node(v, indent + 1);
26             }
27         }
28         _ => {
29             print_indent(indent);
30             println!("{:?}", doc);
31         }
32     }
33 }
34 
main()35 fn main() {
36     let args: Vec<_> = env::args().collect();
37     let mut f = File::open(&args[1]).unwrap();
38     let mut s = String::new();
39     f.read_to_string(&mut s).unwrap();
40 
41     let docs = yaml::YamlLoader::load_from_str(&s).unwrap();
42     for doc in &docs {
43         println!("---");
44         dump_node(doc, 0);
45     }
46 }
47