From 5d64e9e8719bd70d08ab4c00dc86144d01637491 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Sun, 24 Sep 2023 10:58:05 +0200 Subject: [PATCH] c2rs: write to file. --- src/bin/c2rs.rs | 58 ++++++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/src/bin/c2rs.rs b/src/bin/c2rs.rs index 6130154..a2c7cb2 100644 --- a/src/bin/c2rs.rs +++ b/src/bin/c2rs.rs @@ -1,6 +1,8 @@ use std::{ env, - fs + fs, + fs::{File}, + io::{self, Write} }; use quick_xml::de::from_str; @@ -124,40 +126,52 @@ pub struct ZakFormElementRadioOption { pub content: String, } +fn get_output(args: &Args) -> Box { + if args.output_file == "stdout" { + Box::new(io::stdout()) + } else { + Box::new(File::create(&args.output_file).expect("Cannot create file")) + } +} + fn main() { let args = Args::parse(); - let content = fs::read_to_string(args.input_file).expect("something went wrong reading the file"); + // input + let content = fs::read_to_string(&args.input_file).expect("something went wrong reading the file"); + + // output + let mut output = get_output(&args); let form: ZakForm = from_str(&content).unwrap(); println!("{:?}", form); - println!("let mut f = zakform::form::Form::new();"); + writeln!(output, "let mut f = zakform::form::Form::new();"); for e in form.elements { - println!(""); + writeln!(output, ""); match e.etype.as_str() { - "zak_form_cgi_form_element_text" => { println!(r#"let mut fi = zakform::fields::FieldText::new("{}")"#, e.id); }, - "zak_form_cgi_form_element_text_area" => { println!(r#"let mut fi = zakform::fields::FieldTextArea::new("{}")"#, e.id); }, - "zak_form_cgi_form_element_radio" => { println!(r#"let mut fi = zakform::fields::FieldRadio::new("{}")"#, e.id); }, - "zak_form_cgi_form_element_select" => { println!(r#"let mut fi = zakform::fields::FieldSelect::new("{}")"#, e.id); }, - "zak_form_cgi_form_element_submit" => { println!(r#"let mut fi = zakform::fields::FieldButton::new("{}")"#, e.id); }, + "zak_form_cgi_form_element_text" => { writeln!(output, r#"let mut fi = zakform::fields::FieldText::new("{}")"#, e.id); }, + "zak_form_cgi_form_element_text_area" => { writeln!(output, r#"let mut fi = zakform::fields::FieldTextArea::new("{}")"#, e.id); }, + "zak_form_cgi_form_element_radio" => { writeln!(output, r#"let mut fi = zakform::fields::FieldRadio::new("{}")"#, e.id); }, + "zak_form_cgi_form_element_select" => { writeln!(output, r#"let mut fi = zakform::fields::FieldSelect::new("{}")"#, e.id); }, + "zak_form_cgi_form_element_submit" => { writeln!(output, r#"let mut fi = zakform::fields::FieldButton::new("{}")"#, e.id); }, _ => { continue; }, }; if let Some(l) = e.label { if l != "" { - println!(r#"fi.set_label("{}")"#, l); + writeln!(output, r#"fi.set_label("{}")"#, l); } } if e.max_length > 0 { - println!("fi.set_maxlen({})", e.max_length); + writeln!(output, "fi.set_maxlen({})", e.max_length); } if e.rows > 0 { - println!("fi.set_rows({})", e.rows); + writeln!(output, "fi.set_rows({})", e.rows); } match e.format { @@ -168,36 +182,36 @@ fn main() { }; for option in e.options { - println!(r#"fi.add_option(zakform::fields::FOption{{ value: String::from("{}"), label: String::from("{}") }});"#, option.id, option.text); + writeln!(output, r#"fi.add_option(zakform::fields::FOption{{ value: String::from("{}"), label: String::from("{}") }});"#, option.id, option.text); } match e.zakcgi_options { Some(zako) => { for option in zako.options { - println!(r#"fi.add_option(zakform::fields::FOption{{ value: String::from("{}"), label: String::from("{}") }});"#, option.value, option.content); + writeln!(output, r#"fi.add_option(zakform::fields::FOption{{ value: String::from("{}"), label: String::from("{}") }});"#, option.value, option.content); } }, None => { }, } if e.to_load == "FALSE" { - println!("fi.set_to_load(false)"); + writeln!(output, "fi.set_to_load(false)"); } if e.to_save == "FALSE" { - println!("fi.set_to_save(false)"); + writeln!(output, "fi.set_to_save(false)"); } if e.editable == "FALSE" { - println!("fi.set_disabled(true)"); + writeln!(output, "fi.set_disabled(true)"); } for filter in e.filters { match filter.ftype.as_str() { - "zak_form_element_filter_trim" => { println!("fi.add_filter(zakform::filters::filter_trim);"); }, + "zak_form_element_filter_trim" => { writeln!(output, "fi.add_filter(zakform::filters::filter_trim);"); }, "zak_form_element_filter_luc" => { match filter.text.as_str() { - "upper" => { println!("fi.add_filter(zakform::filters::filter_uppercase);"); }, - "lower" => { println!("fi.add_filter(zakform::filters::filter_lowercase);"); }, - "camel" => { println!("fi.add_filter(zakform::filters::filter_capitalcase);"); }, + "upper" => { writeln!(output, "fi.add_filter(zakform::filters::filter_uppercase);"); }, + "lower" => { writeln!(output, "fi.add_filter(zakform::filters::filter_lowercase);"); }, + "camel" => { writeln!(output, "fi.add_filter(zakform::filters::filter_capitalcase);"); }, _ => { }, }; }, @@ -205,6 +219,6 @@ fn main() { }; } - println!("f.add_field(Box::new(fi);"); + writeln!(output, "f.add_field(Box::new(fi);"); } } -- 2.49.0