docx_rust/document/
header_footer_reference.rs1#![allow(unused_must_use)]
2use derive_more::From;
3use hard_xml::{XmlRead, XmlWrite};
4use std::borrow::Cow;
5
6use crate::{__setter, __string_enum, __xml_test_suites};
7
8#[derive(Debug, From, XmlRead, XmlWrite, Clone)]
10#[cfg_attr(test, derive(PartialEq))]
11pub enum HeaderFooterReference<'a> {
12 #[xml(tag = "w:headerReference")]
13 Header(HeaderReference<'a>),
14 #[xml(tag = "w:footerReference")]
15 Footer(FooterReference<'a>),
16}
17
18#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
21#[cfg_attr(test, derive(PartialEq))]
22#[xml(tag = "w:headerReference")]
23pub struct HeaderReference<'a> {
24 #[xml(attr = "w:type")]
26 pub ty: Option<HeaderFooterReferenceType>,
27 #[xml(attr = "r:id")]
28 pub id: Option<Cow<'a, str>>,
29}
30
31impl<'a> HeaderReference<'a> {
32 __setter!(ty: Option<HeaderFooterReferenceType>);
33 __setter!(id: Option<Cow<'a, str>>);
34}
35
36#[derive(Debug, Default, XmlRead, XmlWrite, Clone)]
39#[cfg_attr(test, derive(PartialEq))]
40#[xml(tag = "w:footerReference")]
41pub struct FooterReference<'a> {
42 #[xml(attr = "w:type")]
44 pub ty: Option<HeaderFooterReferenceType>,
45 #[xml(attr = "r:id")]
46 pub id: Option<Cow<'a, str>>,
47}
48
49impl<'a> FooterReference<'a> {
50 __setter!(ty: Option<HeaderFooterReferenceType>);
51 __setter!(id: Option<Cow<'a, str>>);
52}
53
54#[derive(Debug, Clone)]
55#[cfg_attr(test, derive(PartialEq))]
56pub enum HeaderFooterReferenceType {
57 Default,
58 Even,
59 First,
60}
61
62__string_enum! {
63 HeaderFooterReferenceType {
64 Default = "default",
65 Even = "even",
66 First = "first",
67 }
68}
69
70__xml_test_suites!(
71 HeaderReference,
72 HeaderReference::default(),
73 r#"<w:headerReference/>"#,
74 HeaderReference::default().ty(HeaderFooterReferenceType::Default),
75 r#"<w:headerReference w:type="default"/>"#,
76);