umya_spreadsheet/structs/drawing/charts/
numeric_value.rs

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