vojtech@29: /** vojtech@29: * parameter-lister (Rust implementation) vojtech@29: * Copyright © 2016 Vojtěch Král vojtech@29: * vojtech@29: * This program is free software: you can redistribute it and/or modify vojtech@29: * it under the terms of the GNU General Public License as published by vojtech@29: * the Free Software Foundation, either version 3 of the License, or vojtech@29: * (at your option) any later version. vojtech@29: * vojtech@29: * This program is distributed in the hope that it will be useful, vojtech@29: * but WITHOUT ANY WARRANTY; without even the implied warranty of vojtech@29: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the vojtech@29: * GNU General Public License for more details. vojtech@29: * vojtech@29: * You should have received a copy of the GNU General Public License vojtech@29: * along with this program. If not, see . vojtech@29: */ vojtech@29: use std::io; vojtech@29: vojtech@29: use outputmodule::*; vojtech@29: vojtech@29: pub static MOD_NAME: &'static str = "xml"; vojtech@29: vojtech@29: vojtech@29: trait XMLEscape { vojtech@29: fn xml_escape(self) -> Self; vojtech@29: } vojtech@29: vojtech@29: impl XMLEscape for String { vojtech@29: fn xml_escape(self) -> String { vojtech@29: self.replace("&", "&").replace("<", "<").replace(">", ">") vojtech@29: } vojtech@29: } vojtech@29: vojtech@29: vojtech@29: pub struct XMLModule; vojtech@29: vojtech@29: impl XMLModule { vojtech@29: pub fn new() -> XMLModule { XMLModule } vojtech@29: vojtech@29: fn process_io(&self, output: &mut Write, parameters: Vec) -> io::Result<()> { vojtech@29: try!(write!(output, "\n")); vojtech@29: for p in parameters { vojtech@29: try!(write!(output, "\t{}\n", p.xml_escape())); vojtech@29: } vojtech@29: try!(write!(output, "\n")); vojtech@29: Ok(()) vojtech@29: } vojtech@29: } vojtech@29: vojtech@29: impl OutputModule for XMLModule { vojtech@29: fn process(&self, output: &mut Write, parameters: Vec) -> Result<(), String> { vojtech@29: match self.process_io(output, parameters) { vojtech@29: Ok(()) => Ok(()), vojtech@29: Err(err) => Err(format!("{}", err)), vojtech@29: } vojtech@29: } vojtech@29: }