umya_spreadsheet/structs/drawing/charts/
series_text.rs

1// c:tx
2use crate::reader::driver::*;
3use crate::structs::StringValue;
4use crate::writer::driver::*;
5use quick_xml::events::{BytesStart, Event};
6use quick_xml::Reader;
7use quick_xml::Writer;
8use std::io::Cursor;
9
10#[derive(Clone, Default, Debug)]
11pub struct SeriesText {
12    value: StringValue,
13}
14
15impl SeriesText {
16    pub fn get_value(&self) -> &str {
17        self.value.get_value_str()
18    }
19
20    pub fn set_value<S: Into<String>>(&mut self, value: S) -> &mut Self {
21        self.value.set_value(value);
22        self
23    }
24
25    pub(crate) fn set_attributes<R: std::io::BufRead>(
26        &mut self,
27        reader: &mut Reader<R>,
28        _e: &BytesStart,
29    ) {
30        xml_read_loop!(
31            reader,
32            Event::Text(e) => {
33                self.set_value(e.unescape().unwrap());
34            },
35            Event::End(ref e) => {
36                if e.name().0 == b"c:tx" {
37                    return
38                }
39            },
40            Event::Eof => panic!("Error: Could not find {} end element", "c:tx")
41        );
42    }
43
44    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
45        // c:tx
46        write_start_tag(writer, "c:tx", vec![], false);
47
48        // c:v
49        write_start_tag(writer, "c:v", vec![], false);
50        write_text_node(writer, self.value.get_value_str());
51        write_end_tag(writer, "c:v");
52
53        write_end_tag(writer, "c:tx");
54    }
55}