umya_spreadsheet/structs/vml/spreadsheet/
clipboard_format.rs

1use super::ClipboardFormatValues;
2use crate::reader::driver::*;
3use crate::structs::EnumValue;
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 ClipboardFormat {
12    value: EnumValue<ClipboardFormatValues>,
13}
14
15impl ClipboardFormat {
16    #[inline]
17    pub fn get_value(&self) -> &ClipboardFormatValues {
18        self.value.get_value()
19    }
20
21    #[inline]
22    pub fn set_value(&mut self, value: ClipboardFormatValues) -> &mut Self {
23        self.value.set_value(value);
24        self
25    }
26
27    #[inline]
28    pub(crate) fn set_attributes<R: std::io::BufRead>(
29        &mut self,
30        reader: &mut Reader<R>,
31        _e: &BytesStart,
32    ) {
33        xml_read_loop!(
34            reader,
35            Event::Text(e) => {
36                self.value.set_value_string(e.unescape().unwrap());
37            },
38            Event::End(ref e) => {
39                if e.name().0 == b"x:CF" {
40                    return
41                }
42            },
43            Event::Eof => panic!("Error: Could not find {} end element", "x:CF")
44        );
45    }
46
47    #[inline]
48    pub(crate) fn write_to(&self, writer: &mut Writer<Cursor<Vec<u8>>>) {
49        // x:CF
50        write_start_tag(writer, "x:CF", vec![], false);
51        write_text_node(writer, self.value.get_value_string());
52        write_end_tag(writer, "x:CF");
53    }
54}