From e524d6630e08ccb81a5409efc6a74778246065c9 Mon Sep 17 00:00:00 2001 From: bokuweb Date: Wed, 4 Dec 2019 18:26:09 +0900 Subject: [PATCH] feat: Add comment --- docx-core/src/documents/comment_id.rs | 21 ++++++ docx-core/src/documents/elements/comment.rs | 62 ++++++++++++++++ docx-core/src/documents/elements/delete.rs | 6 +- docx-core/src/documents/elements/insert.rs | 6 +- docx-core/src/documents/elements/mod.rs | 2 + docx-core/src/documents/elements/paragraph.rs | 4 +- docx-core/src/documents/elements/run.rs | 39 ++++++---- docx-core/src/xml_builder/elements.rs | 5 +- fixtures/comment/comment.docx | Bin 5010 -> 5203 bytes fixtures/comment/docProps/core.xml | 2 +- fixtures/comment/word/comments.xml | 69 +++++++++++++++++- fixtures/comment/word/document.xml | 29 +++++++- fixtures/comment/word/fontTable.xml | 2 +- fixtures/comment/word/settings.xml | 2 +- fixtures/comment/word/styles.xml | 2 +- 15 files changed, 218 insertions(+), 33 deletions(-) create mode 100644 docx-core/src/documents/comment_id.rs create mode 100644 docx-core/src/documents/elements/comment.rs diff --git a/docx-core/src/documents/comment_id.rs b/docx-core/src/documents/comment_id.rs new file mode 100644 index 0000000..626af01 --- /dev/null +++ b/docx-core/src/documents/comment_id.rs @@ -0,0 +1,21 @@ +#[allow(unused)] +use std::sync::atomic::{AtomicUsize, Ordering}; + +#[allow(dead_code)] +static COMMENT_ID: AtomicUsize = AtomicUsize::new(0); + +#[cfg(not(test))] +pub trait CommentId { + fn generate(&self) -> String { + let id = COMMENT_ID.load(Ordering::Relaxed); + COMMENT_ID.store(id + 1, Ordering::Relaxed); + format!("{}", id) + } +} + +#[cfg(test)] +pub trait CommentId { + fn generate(&self) -> &str { + "123" + } +} diff --git a/docx-core/src/documents/elements/comment.rs b/docx-core/src/documents/elements/comment.rs new file mode 100644 index 0000000..de912d1 --- /dev/null +++ b/docx-core/src/documents/elements/comment.rs @@ -0,0 +1,62 @@ +use crate::documents::{BuildXML, Paragraph}; +use crate::xml_builder::*; + +#[derive(Debug, Clone)] +pub struct Comment<'a> { + id: &'a str, + author: &'a str, + date: &'a str, + paragraph: Paragraph<'a>, +} + +impl<'a> Default for Comment<'a> { + fn default() -> Comment<'a> { + Comment { + id: "invalidId", + author: "unnamed", + date: "1970-01-01T00:00:00Z", + paragraph: Paragraph::new(), + } + } +} + +impl<'a> Comment<'a> { + pub fn new(id: &'a str) -> Comment<'a> { + Self { + id, + ..Default::default() + } + } + + pub fn paragraph(mut self, p: Paragraph<'a>) -> Comment<'a> { + self.paragraph = p; + self + } +} + +impl<'a> BuildXML for Comment<'a> { + fn build(&self) -> Vec { + XMLBuilder::new() + .open_comment(&self.id, self.author, self.date) + .close() + .build() + } +} + +#[cfg(test)] +mod tests { + + use super::*; + #[cfg(test)] + use pretty_assertions::assert_eq; + use std::str; + + #[test] + fn test_ins_default() { + let b = Comment::new("123").build(); + assert_eq!( + str::from_utf8(&b).unwrap(), + r#""# + ); + } +} diff --git a/docx-core/src/documents/elements/delete.rs b/docx-core/src/documents/elements/delete.rs index c840df2..4f55096 100644 --- a/docx-core/src/documents/elements/delete.rs +++ b/docx-core/src/documents/elements/delete.rs @@ -5,7 +5,7 @@ use crate::xml_builder::*; pub struct Delete<'a> { author: &'a str, date: &'a str, - run: Run, + run: Run<'a>, } impl<'a> Default for Delete<'a> { @@ -23,7 +23,7 @@ impl<'a> Delete<'a> { Default::default() } - pub fn run(mut self, run: Run) -> Delete<'a> { + pub fn run(mut self, run: Run<'a>) -> Delete<'a> { self.run = run; self } @@ -54,7 +54,7 @@ mod tests { let b = Delete::new().build(); assert_eq!( str::from_utf8(&b).unwrap(), - r#""# + r#""# ); } } diff --git a/docx-core/src/documents/elements/insert.rs b/docx-core/src/documents/elements/insert.rs index 5cba8df..1848073 100644 --- a/docx-core/src/documents/elements/insert.rs +++ b/docx-core/src/documents/elements/insert.rs @@ -5,7 +5,7 @@ use crate::xml_builder::*; pub struct Insert<'a> { author: &'a str, date: &'a str, - run: Run, + run: Run<'a>, } impl<'a> Default for Insert<'a> { @@ -23,7 +23,7 @@ impl<'a> Insert<'a> { Default::default() } - pub fn run(mut self, run: Run) -> Insert<'a> { + pub fn run(mut self, run: Run<'a>) -> Insert<'a> { self.run = run; self } @@ -54,7 +54,7 @@ mod tests { let b = Insert::new().build(); assert_eq!( str::from_utf8(&b).unwrap(), - r#""# + r#""# ); } } diff --git a/docx-core/src/documents/elements/mod.rs b/docx-core/src/documents/elements/mod.rs index f1264ba..a9e1848 100644 --- a/docx-core/src/documents/elements/mod.rs +++ b/docx-core/src/documents/elements/mod.rs @@ -5,6 +5,7 @@ mod bookmark_end; mod bookmark_start; mod br; mod color; +mod comment; mod comment_range_end; mod comment_range_start; mod default_tab_stop; @@ -57,6 +58,7 @@ pub use bookmark_end::*; pub use bookmark_start::*; pub use br::*; pub use color::*; +pub use comment::*; pub use comment_range_end::*; pub use comment_range_start::*; pub use default_tab_stop::*; diff --git a/docx-core/src/documents/elements/paragraph.rs b/docx-core/src/documents/elements/paragraph.rs index 243d056..ab83433 100644 --- a/docx-core/src/documents/elements/paragraph.rs +++ b/docx-core/src/documents/elements/paragraph.rs @@ -22,7 +22,7 @@ impl<'a> Default for Paragraph<'a> { #[derive(Debug, Clone)] pub enum ParagraphChild<'a> { - Run(Run), + Run(Run<'a>), Insert(Insert<'a>), Delete(Delete<'a>), BookmarkStart(BookmarkStart<'a>), @@ -46,7 +46,7 @@ impl<'a> Paragraph<'a> { Default::default() } - pub fn add_run(mut self, run: Run) -> Paragraph<'a> { + pub fn add_run(mut self, run: Run<'a>) -> Paragraph<'a> { self.children.push(ParagraphChild::Run(run)); self } diff --git a/docx-core/src/documents/elements/run.rs b/docx-core/src/documents/elements/run.rs index 47b2b99..58beaed 100644 --- a/docx-core/src/documents/elements/run.rs +++ b/docx-core/src/documents/elements/run.rs @@ -1,20 +1,22 @@ -use super::{Break, DeleteText, RunProperty, Tab, Text}; +use super::{Break, Comment, DeleteText, RunProperty, Tab, Text}; use crate::documents::BuildXML; use crate::types::BreakType; use crate::xml_builder::*; #[derive(Debug, Clone)] -pub struct Run { +pub struct Run<'a> { run_property: RunProperty, + comment: Option>, children: Vec, } -impl Default for Run { +impl<'a> Default for Run<'a> { fn default() -> Self { let run_property = RunProperty::new(); Self { run_property, children: vec![], + comment: None, } } } @@ -27,65 +29,70 @@ pub enum RunChild { Break(Break), } -impl Run { - pub fn new() -> Run { +impl<'a> Run<'a> { + pub fn new() -> Run<'a> { Run { ..Default::default() } } - pub fn add_text(mut self, text: &str) -> Run { + pub fn add_text(mut self, text: &'a str) -> Run<'a> { self.children.push(RunChild::Text(Text::new(text))); self } - pub fn add_delete_text(mut self, text: &str) -> Run { + pub fn add_delete_text(mut self, text: &'a str) -> Run<'a> { self.children.push(RunChild::Text(Text::new(text))); self } - pub fn add_tab(mut self) -> Run { + pub fn add_tab(mut self) -> Run<'a> { self.children.push(RunChild::Tab(Tab::new())); self } - pub fn add_break(mut self, break_type: BreakType) -> Run { + pub fn add_break(mut self, break_type: BreakType) -> Run<'a> { self.children.push(RunChild::Break(Break::new(break_type))); self } - pub fn size(mut self, size: usize) -> Run { + pub fn size(mut self, size: usize) -> Run<'a> { self.run_property = self.run_property.size(size); self } - pub fn color(mut self, color: &str) -> Run { + pub fn color(mut self, color: &'a str) -> Run<'a> { self.run_property = self.run_property.color(color); self } - pub fn highlight(mut self, color: &str) -> Run { + pub fn highlight(mut self, color: &'a str) -> Run<'a> { self.run_property = self.run_property.highlight(color); self } - pub fn bold(mut self) -> Run { + pub fn bold(mut self) -> Run<'a> { self.run_property = self.run_property.bold(); self } - pub fn italic(mut self) -> Run { + pub fn italic(mut self) -> Run<'a> { self.run_property = self.run_property.italic(); self } - pub fn underline(mut self, line_type: &str) -> Run { + pub fn underline(mut self, line_type: &'a str) -> Run<'a> { self.run_property = self.run_property.underline(line_type); self } + + pub fn comment(mut self, line_type: &'a str) -> Run<'a> { + // self.run_property = self.run_property.underline(line_type); + self + } } -impl BuildXML for Run { +impl<'a> BuildXML for Run<'a> { fn build(&self) -> Vec { let b = XMLBuilder::new(); let mut b = b.open_run().add_child(&self.run_property); diff --git a/docx-core/src/xml_builder/elements.rs b/docx-core/src/xml_builder/elements.rs index fd89f1b..788dd14 100644 --- a/docx-core/src/xml_builder/elements.rs +++ b/docx-core/src/xml_builder/elements.rs @@ -165,14 +165,15 @@ impl XMLBuilder { "w:gutter" ); - opened_el!(open_insert, "w:ins", "w:id", "w:author", "w:data"); - opened_el!(open_delete, "w:del", "w:id", "w:author", "w:data"); + opened_el!(open_insert, "w:ins", "w:id", "w:author", "w:date"); + opened_el!(open_delete, "w:del", "w:id", "w:author", "w:date"); 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"); + opened_el!(open_comment, "w:comment", "w:id", "w:author", "w:date"); } #[cfg(test)] diff --git a/fixtures/comment/comment.docx b/fixtures/comment/comment.docx index 2580bcbe455154df0d2ba31f8294e449bd533534..d1a0bd38ed15801245a2204a59b2c30724e6510c 100644 GIT binary patch delta 3437 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 Y1n0Ta(ovjeX;5IoLry3|!|!qa4^qh}4FCWD delta 3294 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 G&wl}Yt-+xH diff --git a/fixtures/comment/docProps/core.xml b/fixtures/comment/docProps/core.xml index 4324eb5..f329c85 100644 --- a/fixtures/comment/docProps/core.xml +++ b/fixtures/comment/docProps/core.xml @@ -1,2 +1,2 @@ -2019-12-04T16:57:40Zja-JP2019-12-04T16:58:51Z1 \ No newline at end of file +2019-12-04T16:57:40Zja-JP2019-12-04T18:22:46Z2 \ No newline at end of file diff --git a/fixtures/comment/word/comments.xml b/fixtures/comment/word/comments.xml index 96e2148..92ca460 100644 --- a/fixtures/comment/word/comments.xml +++ b/fixtures/comment/word/comments.xml @@ -10,7 +10,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" mc:Ignorable="w14 wp14"> - + @@ -39,6 +39,73 @@ + Comment3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Comment Added + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hello world!! diff --git a/fixtures/comment/word/document.xml b/fixtures/comment/word/document.xml index 666ceb0..ecc3b9a 100644 --- a/fixtures/comment/word/document.xml +++ b/fixtures/comment/word/document.xml @@ -18,12 +18,18 @@ - Comment is + Comment - here + is + + + + + + her @@ -32,6 +38,24 @@ + + + e + + + + + + + + + + + + + + + . Comment Example @@ -44,6 +68,7 @@ + \ No newline at end of file diff --git a/fixtures/comment/word/fontTable.xml b/fixtures/comment/word/fontTable.xml index 94f56db..3916a0e 100644 --- a/fixtures/comment/word/fontTable.xml +++ b/fixtures/comment/word/fontTable.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/fixtures/comment/word/settings.xml b/fixtures/comment/word/settings.xml index 97dba84..c338dcc 100644 --- a/fixtures/comment/word/settings.xml +++ b/fixtures/comment/word/settings.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/fixtures/comment/word/styles.xml b/fixtures/comment/word/styles.xml index 72e6f53..0fc77af 100644 --- a/fixtures/comment/word/styles.xml +++ b/fixtures/comment/word/styles.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file