Skip to main content

collada_io/
util.rs

1use std::borrow::Cow;
2use std::io::Write;
3use xml::writer::{EventWriter, XmlEvent, Result};
4
5use xml::attribute::Attribute;
6use xml::namespace::Namespace;
7
8pub fn write_text_element<W: Write>( w: &mut EventWriter<W>, name: &str, text: &str, attributes: &Vec<Attribute>) -> Result<()>
9{
10    write_start_element(w, name, attributes)?;
11
12    w.write(XmlEvent::Characters {
13        0: text
14    })?;
15
16    write_end_element(w, name)?;
17    
18    Ok(())
19}
20
21pub fn write_vec_element<W: Write, T: std::fmt::Display>( w: &mut EventWriter<W>, name: &str, vec: &Vec<T>, attributes: &Vec<Attribute>) -> Result<()>
22{
23    let text = vec.iter().map(|idx| idx.to_string()).collect::<Vec<_>>().join(" ");
24    write_text_element(w, name, &text, attributes)?;
25
26    Ok(())
27}
28
29pub fn write_start_element<W: Write>( w: &mut EventWriter<W>, name: &str, attributes: &Vec<Attribute>) -> Result<()>
30{
31    w.write(XmlEvent::StartElement {
32        name: name.into(),
33        attributes: Cow::Borrowed(attributes),
34        namespace: Cow::Owned(Namespace::empty())
35    })?;
36    Ok(())
37}
38
39pub fn write_end_element<W: Write>( w: &mut EventWriter<W>, name: &str) -> Result<()>
40{
41    w.write(XmlEvent::EndElement {
42        name: Some(name.into()),
43    })?;
44    Ok(())
45}