diff --git a/docx-core/src/documents/elements/comment_range_end.rs b/docx-core/src/documents/elements/comment_range_end.rs new file mode 100644 index 0000000..6b27946 --- /dev/null +++ b/docx-core/src/documents/elements/comment_range_end.rs @@ -0,0 +1,39 @@ +use crate::documents::BuildXML; +use crate::xml_builder::*; + +#[derive(Debug, Clone)] +pub struct CommentRangeEnd<'a> { + id: &'a str, +} + +impl<'a> CommentRangeEnd<'a> { + pub fn new(id: &'a str) -> CommentRangeEnd<'a> { + CommentRangeEnd { id } + } +} + +impl<'a> BuildXML for CommentRangeEnd<'a> { + fn build(&self) -> Vec { + let b = XMLBuilder::new(); + b.comment_range_end(&self.id).build() + } +} + +#[cfg(test)] +mod tests { + + use super::*; + #[cfg(test)] + use pretty_assertions::assert_eq; + use std::str; + + #[test] + fn test_comment_range_end() { + let c = CommentRangeEnd::new("mockid"); + let b = c.build(); + assert_eq!( + str::from_utf8(&b).unwrap(), + r#""# + ); + } +} diff --git a/docx-core/src/documents/elements/comment_range_start.rs b/docx-core/src/documents/elements/comment_range_start.rs new file mode 100644 index 0000000..68f3dcc --- /dev/null +++ b/docx-core/src/documents/elements/comment_range_start.rs @@ -0,0 +1,39 @@ +use crate::documents::BuildXML; +use crate::xml_builder::*; + +#[derive(Debug, Clone)] +pub struct CommentRangeStart<'a> { + id: &'a str, +} + +impl<'a> CommentRangeStart<'a> { + pub fn new(id: &'a str) -> CommentRangeStart<'a> { + CommentRangeStart { id } + } +} + +impl<'a> BuildXML for CommentRangeStart<'a> { + fn build(&self) -> Vec { + let b = XMLBuilder::new(); + b.comment_range_start(&self.id).build() + } +} + +#[cfg(test)] +mod tests { + + use super::*; + #[cfg(test)] + use pretty_assertions::assert_eq; + use std::str; + + #[test] + fn test_comment_range_start() { + let c = CommentRangeStart::new("mockid"); + let b = c.build(); + assert_eq!( + str::from_utf8(&b).unwrap(), + r#""# + ); + } +} diff --git a/docx-core/src/documents/elements/mod.rs b/docx-core/src/documents/elements/mod.rs index b459a55..f1264ba 100644 --- a/docx-core/src/documents/elements/mod.rs +++ b/docx-core/src/documents/elements/mod.rs @@ -5,6 +5,8 @@ mod bookmark_end; mod bookmark_start; mod br; mod color; +mod comment_range_end; +mod comment_range_start; mod default_tab_stop; mod delete; mod delete_text; @@ -55,6 +57,8 @@ pub use bookmark_end::*; pub use bookmark_start::*; pub use br::*; pub use color::*; +pub use comment_range_end::*; +pub use comment_range_start::*; pub use default_tab_stop::*; pub use delete::*; pub use delete_text::*; diff --git a/docx-core/src/xml_builder/elements.rs b/docx-core/src/xml_builder/elements.rs index b43bf27..fd89f1b 100644 --- a/docx-core/src/xml_builder/elements.rs +++ b/docx-core/src/xml_builder/elements.rs @@ -170,6 +170,9 @@ impl XMLBuilder { closed_el!(bookmark_start, "w:bookmarkStart", "w:id", "w:name"); closed_el!(bookmark_end, "w:bookmarkEnd", "w:id"); + + closed_el!(comment_range_start, "w:commentRangeStart", "w:id"); + closed_el!(comment_range_end, "w:commentRangeEnd", "w:id"); } #[cfg(test)] diff --git a/fixtures/comment/[Content_Types].xml b/fixtures/comment/[Content_Types].xml new file mode 100644 index 0000000..1f64908 --- /dev/null +++ b/fixtures/comment/[Content_Types].xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/fixtures/comment/_rels/.rels b/fixtures/comment/_rels/.rels new file mode 100644 index 0000000..f0b72e7 --- /dev/null +++ b/fixtures/comment/_rels/.rels @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/fixtures/comment/comment.docx b/fixtures/comment/comment.docx new file mode 100644 index 0000000..2580bcb Binary files /dev/null and b/fixtures/comment/comment.docx differ diff --git a/fixtures/comment/docProps/app.xml b/fixtures/comment/docProps/app.xml new file mode 100644 index 0000000..8962e3b --- /dev/null +++ b/fixtures/comment/docProps/app.xml @@ -0,0 +1,2 @@ + +1LibreOffice/6.0.7.3$Linux_X86_64 LibreOffice_project/00m0$Build-31528331 \ No newline at end of file diff --git a/fixtures/comment/docProps/core.xml b/fixtures/comment/docProps/core.xml new file mode 100644 index 0000000..4324eb5 --- /dev/null +++ b/fixtures/comment/docProps/core.xml @@ -0,0 +1,2 @@ + +2019-12-04T16:57:40Zja-JP2019-12-04T16:58:51Z1 \ No newline at end of file diff --git a/fixtures/comment/word/_rels/document.xml.rels b/fixtures/comment/word/_rels/document.xml.rels new file mode 100644 index 0000000..f8607e1 --- /dev/null +++ b/fixtures/comment/word/_rels/document.xml.rels @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/fixtures/comment/word/comments.xml b/fixtures/comment/word/comments.xml new file mode 100644 index 0000000..96e2148 --- /dev/null +++ b/fixtures/comment/word/comments.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hello world!! + + + + \ No newline at end of file diff --git a/fixtures/comment/word/document.xml b/fixtures/comment/word/document.xml new file mode 100644 index 0000000..666ceb0 --- /dev/null +++ b/fixtures/comment/word/document.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + Comment is + + + + + here + + + + + + + + + + + . Comment Example + + + + + + + + + + + + \ No newline at end of file diff --git a/fixtures/comment/word/fontTable.xml b/fixtures/comment/word/fontTable.xml new file mode 100644 index 0000000..94f56db --- /dev/null +++ b/fixtures/comment/word/fontTable.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/fixtures/comment/word/settings.xml b/fixtures/comment/word/settings.xml new file mode 100644 index 0000000..97dba84 --- /dev/null +++ b/fixtures/comment/word/settings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/fixtures/comment/word/styles.xml b/fixtures/comment/word/styles.xml new file mode 100644 index 0000000..72e6f53 --- /dev/null +++ b/fixtures/comment/word/styles.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file