]>
git.proxmox.com Git - rustc.git/blob - src/vendor/toml/examples/toml2json.rs
0d406804a38be144de5fbef88fe0f19dbeee8219
4 extern crate rustc_serialize
;
9 use std
::io
::prelude
::*;
12 use rustc_serialize
::json
::Json
;
15 let mut args
= env
::args();
16 let mut input
= String
::new();
17 let filename
= if args
.len() > 1 {
18 let name
= args
.nth(1).unwrap();
19 File
::open(&name
).and_then(|mut f
| {
20 f
.read_to_string(&mut input
)
24 io
::stdin().read_to_string(&mut input
).unwrap();
28 let mut parser
= toml
::Parser
::new(&input
);
29 let toml
= match parser
.parse() {
32 for err
in &parser
.errors
{
33 let (loline
, locol
) = parser
.to_linecol(err
.lo
);
34 let (hiline
, hicol
) = parser
.to_linecol(err
.hi
);
35 println
!("{}:{}:{}-{}:{} error: {}",
36 filename
, loline
, locol
, hiline
, hicol
, err
.desc
);
41 let json
= convert(Value
::Table(toml
));
42 println
!("{}", json
.pretty());
45 fn convert(toml
: Value
) -> Json
{
47 Value
::String(s
) => Json
::String(s
),
48 Value
::Integer(i
) => Json
::I64(i
),
49 Value
::Float(f
) => Json
::F64(f
),
50 Value
::Boolean(b
) => Json
::Boolean(b
),
51 Value
::Array(arr
) => Json
::Array(arr
.into_iter().map(convert
).collect()),
52 Value
::Table(table
) => Json
::Object(table
.into_iter().map(|(k
, v
)| {
55 Value
::Datetime(dt
) => Json
::String(dt
),