vojtech@29
|
1 |
/**
|
vojtech@29
|
2 |
* parameter-lister (Rust implementation)
|
vojtech@29
|
3 |
* Copyright © 2016 Vojtěch Král <vojtech@kral.hk>
|
vojtech@29
|
4 |
*
|
vojtech@29
|
5 |
* This program is free software: you can redistribute it and/or modify
|
vojtech@29
|
6 |
* it under the terms of the GNU General Public License as published by
|
vojtech@29
|
7 |
* the Free Software Foundation, either version 3 of the License, or
|
vojtech@29
|
8 |
* (at your option) any later version.
|
vojtech@29
|
9 |
*
|
vojtech@29
|
10 |
* This program is distributed in the hope that it will be useful,
|
vojtech@29
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
vojtech@29
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
vojtech@29
|
13 |
* GNU General Public License for more details.
|
vojtech@29
|
14 |
*
|
vojtech@29
|
15 |
* You should have received a copy of the GNU General Public License
|
vojtech@29
|
16 |
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
vojtech@29
|
17 |
*/
|
vojtech@29
|
18 |
use std::io;
|
vojtech@29
|
19 |
|
vojtech@29
|
20 |
use outputmodule::*;
|
vojtech@29
|
21 |
|
vojtech@29
|
22 |
pub static MOD_NAME: &'static str = "xml";
|
vojtech@29
|
23 |
|
vojtech@29
|
24 |
|
vojtech@29
|
25 |
trait XMLEscape {
|
vojtech@29
|
26 |
fn xml_escape(self) -> Self;
|
vojtech@29
|
27 |
}
|
vojtech@29
|
28 |
|
vojtech@29
|
29 |
impl XMLEscape for String {
|
vojtech@29
|
30 |
fn xml_escape(self) -> String {
|
vojtech@29
|
31 |
self.replace("&", "&").replace("<", "<").replace(">", ">")
|
vojtech@29
|
32 |
}
|
vojtech@29
|
33 |
}
|
vojtech@29
|
34 |
|
vojtech@29
|
35 |
|
vojtech@29
|
36 |
pub struct XMLModule;
|
vojtech@29
|
37 |
|
vojtech@29
|
38 |
impl XMLModule {
|
vojtech@29
|
39 |
pub fn new() -> XMLModule { XMLModule }
|
vojtech@29
|
40 |
|
vojtech@29
|
41 |
fn process_io(&self, output: &mut Write, parameters: Vec<String>) -> io::Result<()> {
|
vojtech@29
|
42 |
try!(write!(output, "<parameters>\n"));
|
vojtech@29
|
43 |
for p in parameters {
|
vojtech@29
|
44 |
try!(write!(output, "\t<parameter>{}</parameter>\n", p.xml_escape()));
|
vojtech@29
|
45 |
}
|
vojtech@29
|
46 |
try!(write!(output, "</parameters>\n"));
|
vojtech@29
|
47 |
Ok(())
|
vojtech@29
|
48 |
}
|
vojtech@29
|
49 |
}
|
vojtech@29
|
50 |
|
vojtech@29
|
51 |
impl OutputModule for XMLModule {
|
vojtech@29
|
52 |
fn process(&self, output: &mut Write, parameters: Vec<String>) -> Result<(), String> {
|
vojtech@29
|
53 |
match self.process_io(output, parameters) {
|
vojtech@29
|
54 |
Ok(()) => Ok(()),
|
vojtech@29
|
55 |
Err(err) => Err(format!("{}", err)),
|
vojtech@29
|
56 |
}
|
vojtech@29
|
57 |
}
|
vojtech@29
|
58 |
}
|