diff options
| author | Philipp A | 2018-11-20 10:53:34 +0100 |
|---|---|---|
| committer | Philipp A | 2018-11-20 10:53:34 +0100 |
| commit | 32d660c23ca7d44da44112187f2efb18fa4077ed (patch) | |
| tree | c2cd2dd0c1493a16727f97744044ad239da0365f | |
| parent | bb184822fc281e9fbfcd706a091be2e9d3ac38f4 (diff) | |
| download | rust-rst-32d660c23ca7d44da44112187f2efb18fa4077ed.tar.bz2 | |
added silly xml serializing
| -rw-r--r-- | Cargo.toml | 1 | ||||
| -rw-r--r-- | src/bin.rs | 10 | ||||
| -rw-r--r-- | src/parser.rs | 7 |
3 files changed, 14 insertions, 4 deletions
@@ -31,6 +31,7 @@ pest_derive = { git = 'https://github.com/pest-parser/pest' } serde = '1.0.80' serde_derive = '1.0.80' serde_json = '1.0.33' +serde-xml-rs = '0.2.1' quicli = '0.3.1' structopt = '0.2.13' @@ -6,18 +6,21 @@ use structopt::StructOpt; use clap::{_clap_count_exprs, arg_enum}; use quicli::{main, fs::read_file, prelude::Verbosity}; -use self::parser::serialize_json; +use self::parser::{ + serialize_json, + serialize_xml, +}; arg_enum! { #[derive(Debug)] - enum Format { json } + enum Format { json, xml } } #[derive(Debug, StructOpt)] #[structopt(raw(setting = "structopt::clap::AppSettings::ColoredHelp"))] struct Cli { #[structopt( - long = "format", short = "f", default_value = "json", + long = "format", short = "f", default_value = "json", // xml is pretty defunct… raw(possible_values = "&Format::variants()", case_insensitive = "true"), )] format: Format, @@ -31,5 +34,6 @@ main!(|args: Cli, log_level: verbosity| { let stdout = std::io::stdout(); match args.format { Format::json => serialize_json(&content, stdout)?, + Format::xml => serialize_xml (&content, stdout)?, } }); diff --git a/src/parser.rs b/src/parser.rs index 69ead45..a75d2a1 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -125,9 +125,14 @@ pub fn parse(source: &str) -> Result<Document, Error> { } -/// only until we can serialize DocumentTrees pub fn serialize_json<W>(source: &str, stream: W) -> Result<(), Error> where W: Write { let parsed = parse(source)?; serde_json::to_writer(stream, &parsed)?; Ok(()) } + +pub fn serialize_xml<W>(source: &str, stream: W) -> Result<(), Error> where W: Write { + let parsed = parse(source)?; + serde_xml_rs::serialize(&parsed, stream)?; + Ok(()) +} |
