diff --git a/src/main.rs b/src/main.rs index 4e3b951..6bbb467 100644 --- a/src/main.rs +++ b/src/main.rs @@ -50,6 +50,13 @@ fn main() -> Result<(), Box> { let mut handle = stdin.lock(); read_html(&mut handle)? }; + + let mut out: Box = if let Some(path) = opt.output { + let mut file = File::open(&path)?; + Box::new(file) + } else { + Box::new(stdout()) + }; let css_selector = opt.selector; @@ -75,7 +82,7 @@ fn main() -> Result<(), Box> { // Let's get the actual text in this text node. A text node wraps around // a RefCell, so we need to call borrow() to get a &str out. //let text = text_node.as_text().unwrap().borrow(); - write!(stdout(), "{}", serialize_node(as_node)?); + write!(out, "{}", serialize_node(as_node)?); /*if let Some(child) = as_node.first_child() { //TODO: Convert Nodes to String, as this only works for Nodes containing plain text diff --git a/src/opts.rs b/src/opts.rs index 9fac89d..409964d 100644 --- a/src/opts.rs +++ b/src/opts.rs @@ -9,4 +9,6 @@ pub struct Opts { #[structopt(parse(from_os_str))] pub input: Option, + #[structopt(short = "o", long = "out", parse(from_os_str))] + pub output: Option, }