Skip to content

Commit 5daa2e1

Browse files
committed
Merge branch 'master' of github.com:netvl/rust-xml
2 parents abc7faa + 843f053 commit 5daa2e1

File tree

3 files changed

+61
-3
lines changed

3 files changed

+61
-3
lines changed

Readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ fn main() {
7979
let mut depth = 0;
8080
for e in parser.events() {
8181
match e {
82-
StartElement { ref name, ref attributes, ref namespace } => {
82+
StartElement { name, _, _ } => {
8383
println!("{}/{}", indent(depth), name);
8484
depth += 1;
8585
}

src/writer/emitter.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ impl Emitter {
136136

137137
fn write_newline<W: Writer>(&mut self, target: &mut W, level: uint) -> EmitterResult<()> {
138138
io_try!(target.write_str(self.config.line_separator.as_slice()));
139-
for i in iter::range(0, level) {
139+
for _ in iter::range(0, level) {
140140
io_try!(target.write_str(self.config.indent_string.as_slice()));
141141
}
142142
Ok(())
@@ -315,4 +315,8 @@ impl Emitter {
315315
self.after_text();
316316
Ok(())
317317
}
318+
319+
pub fn emit_comment<W: Writer>(&mut self, target: &mut W, content: &str) -> EmitterResult<()> {
320+
Ok(()) // TODO: proper write
321+
}
318322
}

src/writer/mod.rs

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,62 @@
1+
pub use EventWriterResult = self::emitter::EmitterResult;
12
pub use self::config::EmitterConfig;
23

3-
use self::config::EmitterConfig;
4+
use std::io::MemWriter;
5+
6+
use self::emitter::Emitter;
7+
use self::events::XmlEvent;
48

59
mod emitter;
610
pub mod config;
711
pub mod events;
812

13+
pub struct EventWriter<W> {
14+
sink: W,
15+
emitter: Emitter
16+
}
17+
18+
impl<W: Writer> EventWriter<W> {
19+
#[inline]
20+
pub fn new(sink: W) -> EventWriter<W> {
21+
EventWriter::new_with_config(sink, EmitterConfig::new())
22+
}
23+
24+
#[inline]
25+
pub fn new_with_config(sink: W, config: EmitterConfig) -> EventWriter<W> {
26+
EventWriter {
27+
sink: sink,
28+
emitter: emitter::new(config)
29+
}
30+
}
31+
32+
pub fn write(&mut self, event: XmlEvent) -> EventWriterResult<()> {
33+
match event {
34+
events::StartDocument { version, encoding, standalone } =>
35+
self.emitter.emit_start_document(&mut self.sink, version, encoding.unwrap_or("UTF-8"), standalone),
36+
events::ProcessingInstruction { name, data } =>
37+
self.emitter.emit_processing_instruction(&mut self.sink, name, data),
38+
events::StartElement { name, attributes, namespace } =>
39+
self.emitter.emit_start_element(&mut self.sink, name, attributes, namespace),
40+
events::EndElement { name } =>
41+
self.emitter.emit_end_element(&mut self.sink, name),
42+
events::Comment(content) =>
43+
self.emitter.emit_comment(&mut self.sink, content),
44+
events::CData(content) =>
45+
self.emitter.emit_cdata(&mut self.sink, content),
46+
events::Characters(content) =>
47+
self.emitter.emit_characters(&mut self.sink, content)
48+
}
49+
}
50+
}
51+
52+
impl EventWriter<MemWriter> {
53+
#[inline]
54+
pub fn new_into_mem(sink: MemWriter) -> EventWriter<MemWriter> {
55+
EventWriter::new_into_mem_config(sink, EmitterConfig::new())
56+
}
57+
58+
#[inline]
59+
pub fn new_into_mem_config(sink: MemWriter, config: EmitterConfig) -> EventWriter<MemWriter> {
60+
EventWriter::new_with_config(sink, config)
61+
}
62+
}

0 commit comments

Comments
 (0)