]> git.proxmox.com Git - rustc.git/blob - vendor/yaml-rust/examples/dump_yaml.rs
New upstream version 1.43.0+dfsg1
[rustc.git] / vendor / yaml-rust / examples / dump_yaml.rs
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
8 fn print_indent(indent: usize) {
9 for _ in 0..indent {
10 print!(" ");
11 }
12 }
13
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
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 }