feat: Add docsDefault
parent
fee2dfeac7
commit
6083f27500
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
|
||||||
<w:settings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
|
|
||||||
<w:zoom w:percent="100"/>
|
|
||||||
<w:defaultTabStop w:val="709"/>
|
|
||||||
<w:compat>
|
|
||||||
<w:doNotExpandShiftReturn/>
|
|
||||||
</w:compat>
|
|
||||||
</w:settings>
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
use crate::documents::BuildXML;
|
||||||
|
use crate::xml_builder::*;
|
||||||
|
|
||||||
|
use super::run_property_default::*;
|
||||||
|
|
||||||
|
pub struct DocDefaults {
|
||||||
|
run_property_default: RunPropertyDefault,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl DocDefaults {
|
||||||
|
pub fn new() -> DocDefaults {
|
||||||
|
let run_property_default = RunPropertyDefault::new();
|
||||||
|
DocDefaults {
|
||||||
|
run_property_default,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl BuildXML for DocDefaults {
|
||||||
|
fn build(&self) -> Vec<u8> {
|
||||||
|
let b = XMLBuilder::new();
|
||||||
|
let run_property_default = self.run_property_default.build();
|
||||||
|
b.open_doc_defaults()
|
||||||
|
.add_child_buffer(&run_property_default)
|
||||||
|
.close()
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
use std::str;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_build() {
|
||||||
|
let c = DocDefaults::new();
|
||||||
|
let b = c.build();
|
||||||
|
assert_eq!(
|
||||||
|
str::from_utf8(&b).unwrap(),
|
||||||
|
r#"<w:docDefaults><w:rPrDefault /></w:docDefaults>"#
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
mod doc_defaults;
|
||||||
|
mod run_property_default;
|
||||||
|
|
||||||
|
pub use doc_defaults::*;
|
||||||
|
pub use run_property_default::*;
|
|
@ -0,0 +1,31 @@
|
||||||
|
use crate::documents::BuildXML;
|
||||||
|
use crate::xml_builder::*;
|
||||||
|
|
||||||
|
pub struct RunPropertyDefault {}
|
||||||
|
|
||||||
|
impl RunPropertyDefault {
|
||||||
|
pub fn new() -> RunPropertyDefault {
|
||||||
|
RunPropertyDefault {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl BuildXML for RunPropertyDefault {
|
||||||
|
fn build(&self) -> Vec<u8> {
|
||||||
|
let b = XMLBuilder::new();
|
||||||
|
b.open_run_property_default().close().build()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
use std::str;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_build() {
|
||||||
|
let c = RunPropertyDefault::new();
|
||||||
|
let b = c.build();
|
||||||
|
assert_eq!(str::from_utf8(&b).unwrap(), r#"<w:rPrDefault />"#);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,12 +1,15 @@
|
||||||
mod build_xml;
|
mod build_xml;
|
||||||
mod content_types;
|
mod content_types;
|
||||||
mod doc_props;
|
mod doc_props;
|
||||||
|
mod elements;
|
||||||
mod rels;
|
mod rels;
|
||||||
mod xml_document;
|
mod xml_document;
|
||||||
|
|
||||||
use build_xml::*;
|
pub(crate) use build_xml::*;
|
||||||
|
|
||||||
use content_types::*;
|
use content_types::*;
|
||||||
use doc_props::*;
|
use doc_props::*;
|
||||||
|
use elements::*;
|
||||||
use rels::*;
|
use rels::*;
|
||||||
|
|
||||||
pub(crate) struct Document {
|
pub(crate) struct Document {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use super::XMLBuilder;
|
use super::XMLBuilder;
|
||||||
|
use super::XmlEvent;
|
||||||
|
|
||||||
impl XMLBuilder {
|
impl XMLBuilder {
|
||||||
// i.e. <cp:properties xmlns:vt="http://schemas.openxmlformats.org/package/2006/relationships">
|
// i.e. <cp:properties xmlns:vt="http://schemas.openxmlformats.org/package/2006/relationships">
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
use super::super::XmlEvent;
|
||||||
|
use crate::xml_builder::*;
|
||||||
|
|
||||||
|
impl XMLBuilder {
|
||||||
|
opened_el!(open_doc_defaults, "w:docDefaults");
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
mod doc_defaults;
|
||||||
|
mod run_property_default;
|
||||||
|
|
||||||
|
pub use doc_defaults::*;
|
||||||
|
pub use run_property_default::*;
|
|
@ -0,0 +1,6 @@
|
||||||
|
use super::super::XmlEvent;
|
||||||
|
use crate::xml_builder::*;
|
||||||
|
|
||||||
|
impl XMLBuilder {
|
||||||
|
opened_el!(open_run_property_default, "w:rPrDefault");
|
||||||
|
}
|
|
@ -1,8 +1,16 @@
|
||||||
macro_rules! opened_el {
|
macro_rules! opened_el {
|
||||||
|
($name: ident, $el_name: expr) => {
|
||||||
|
pub(crate) fn $name(mut self) -> Self {
|
||||||
|
self.writer
|
||||||
|
.write(XmlEvent::start_element($el_name))
|
||||||
|
.expect("should write to buf");
|
||||||
|
self
|
||||||
|
}
|
||||||
|
};
|
||||||
($name: ident, $el_name: expr, $attr0: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
@ -10,7 +18,7 @@ macro_rules! opened_el {
|
||||||
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str, arg1: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str, arg1: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
@ -18,7 +26,7 @@ macro_rules! opened_el {
|
||||||
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr, $attr2: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr, $attr2: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, arg2: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, arg2: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1).attr($attr2, arg2))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1).attr($attr2, arg2))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
@ -26,7 +34,7 @@ macro_rules! opened_el {
|
||||||
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr, $attr2: expr, $attr3: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr, $attr2: expr, $attr3: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, arg2: &str, arg3: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, arg2: &str, arg3: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1).attr($attr2, arg2).attr($attr3, arg3))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1).attr($attr2, arg2).attr($attr3, arg3))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
@ -34,7 +42,7 @@ macro_rules! opened_el {
|
||||||
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr, $attr2: expr, $attr3: expr, $attr4: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr, $attr2: expr, $attr3: expr, $attr4: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, arg2: &str, arg3: &str, arg4: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, arg2: &str, arg3: &str, arg4: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1).attr($attr2, arg2).attr($attr3, arg3).attr($attr4, arg4))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1).attr($attr2, arg2).attr($attr3, arg3).attr($attr4, arg4))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
@ -45,7 +53,7 @@ macro_rules! closed_el_with_child {
|
||||||
($name: ident, $el_name: expr) => {
|
($name: ident, $el_name: expr) => {
|
||||||
pub(crate) fn $name(mut self, child: &str) -> Self {
|
pub(crate) fn $name(mut self, child: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name))
|
.write(XmlEvent::start_element($el_name))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self.writer
|
self.writer
|
||||||
.write(child)
|
.write(child)
|
||||||
|
@ -56,7 +64,7 @@ macro_rules! closed_el_with_child {
|
||||||
($name: ident, $el_name: expr, $attr0: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str, child: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str, child: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self.writer
|
self.writer
|
||||||
.write(child)
|
.write(child)
|
||||||
|
@ -67,7 +75,7 @@ macro_rules! closed_el_with_child {
|
||||||
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, child: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, child: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self.writer
|
self.writer
|
||||||
.write(child)
|
.write(child)
|
||||||
|
@ -78,7 +86,7 @@ macro_rules! closed_el_with_child {
|
||||||
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr, $attr2: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr, $attr2: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, arg2: &str, child: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, arg2: &str, child: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1).attr($attr2, arg2))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1).attr($attr2, arg2))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self.writer
|
self.writer
|
||||||
.write(child)
|
.write(child)
|
||||||
|
@ -92,7 +100,7 @@ macro_rules! closed_el {
|
||||||
($name: ident, $el_name: expr, $attr0: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self.close()
|
self.close()
|
||||||
}
|
}
|
||||||
|
@ -100,7 +108,7 @@ macro_rules! closed_el {
|
||||||
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str, arg1: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str, arg1: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self.close()
|
self.close()
|
||||||
}
|
}
|
||||||
|
@ -108,7 +116,7 @@ macro_rules! closed_el {
|
||||||
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr, $attr2: expr) => {
|
($name: ident, $el_name: expr, $attr0: expr, $attr1: expr, $attr2: expr) => {
|
||||||
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, arg2: &str) -> Self {
|
pub(crate) fn $name(mut self, arg0: &str, arg1: &str, arg2: &str) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
.write(super::XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1).attr($attr2, arg2))
|
.write(XmlEvent::start_element($el_name).attr($attr0, arg0).attr($attr1, arg1).attr($attr2, arg2))
|
||||||
.expect("should write to buf");
|
.expect("should write to buf");
|
||||||
self.close()
|
self.close()
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,17 @@
|
||||||
mod macros;
|
mod macros;
|
||||||
mod core_properties;
|
mod core_properties;
|
||||||
mod declaration;
|
mod declaration;
|
||||||
|
mod elements;
|
||||||
mod properties;
|
mod properties;
|
||||||
mod relationship;
|
mod relationship;
|
||||||
|
|
||||||
|
use std::io::BufReader;
|
||||||
|
use std::str;
|
||||||
use xml::common::XmlVersion;
|
use xml::common::XmlVersion;
|
||||||
use xml::writer::{EmitterConfig, EventWriter, XmlEvent};
|
use xml::writer::{EmitterConfig, EventWriter, XmlEvent};
|
||||||
|
|
||||||
|
use xml::reader::EventReader;
|
||||||
|
|
||||||
pub struct XMLBuilder {
|
pub struct XMLBuilder {
|
||||||
writer: EventWriter<Vec<u8>>,
|
writer: EventWriter<Vec<u8>>,
|
||||||
}
|
}
|
||||||
|
@ -15,10 +20,11 @@ pub struct XMLBuilder {
|
||||||
impl XMLBuilder {
|
impl XMLBuilder {
|
||||||
pub(crate) fn new() -> XMLBuilder {
|
pub(crate) fn new() -> XMLBuilder {
|
||||||
let buf = Vec::new();
|
let buf = Vec::new();
|
||||||
let writer = EmitterConfig::new()
|
let mut config = EmitterConfig::new()
|
||||||
.write_document_declaration(false)
|
.write_document_declaration(false)
|
||||||
.perform_indent(true)
|
.perform_indent(true);
|
||||||
.create_writer(buf);
|
config.perform_escaping = false;
|
||||||
|
let writer = config.create_writer(buf);
|
||||||
XMLBuilder { writer }
|
XMLBuilder { writer }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +50,12 @@ impl XMLBuilder {
|
||||||
self.close()
|
self.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn add_child_buffer(mut self, buf: &[u8]) -> Self {
|
||||||
|
let text = str::from_utf8(buf).unwrap();
|
||||||
|
self.writer.write(text).expect("should write to buf");
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
// Close tag
|
// Close tag
|
||||||
pub(crate) fn close(mut self) -> Self {
|
pub(crate) fn close(mut self) -> Self {
|
||||||
self.writer
|
self.writer
|
||||||
|
@ -67,7 +79,6 @@ impl XMLBuilder {
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use std::str;
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_open_types() {
|
fn test_open_types() {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use super::XMLBuilder;
|
use super::XMLBuilder;
|
||||||
|
use super::XmlEvent;
|
||||||
|
|
||||||
impl XMLBuilder {
|
impl XMLBuilder {
|
||||||
// Build Properties element
|
// Build Properties element
|
||||||
|
@ -45,7 +46,7 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_application() {
|
fn test_application() {
|
||||||
let b = XMLBuilder::new();
|
let b = XMLBuilder::new();
|
||||||
let r = b.template("Lawgue").build();
|
let r = b.application("Lawgue").build();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
str::from_utf8(&r).unwrap(),
|
str::from_utf8(&r).unwrap(),
|
||||||
r#"<Application>Lawgue</Application>"#
|
r#"<Application>Lawgue</Application>"#
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use super::XMLBuilder;
|
use super::XMLBuilder;
|
||||||
|
use super::XmlEvent;
|
||||||
|
|
||||||
impl XMLBuilder {
|
impl XMLBuilder {
|
||||||
// Build RelationShips element
|
// Build RelationShips element
|
||||||
|
|
Loading…
Reference in New Issue