diff options
author | Jesse Rosenthal <jrosenthal@jhu.edu> | 2018-01-02 07:50:08 -0500 |
---|---|---|
committer | Jesse Rosenthal <jrosenthal@jhu.edu> | 2018-01-02 07:50:08 -0500 |
commit | f6fde0ae5ea21d91d610c21c0488029f9c26ca3f (patch) | |
tree | 40229f85eea404474b3f050c6673e5afc1bc4c5f /src/Text/Pandoc/Readers | |
parent | b9d73428c7d420cf7f07e4e20263d5d705c73f85 (diff) | |
download | pandoc-f6fde0ae5ea21d91d610c21c0488029f9c26ca3f.tar.gz |
Docx reader: Extract tracked changes type from parpart.
We're going to want to use it elsewhere as well, in upcoming tracking
of paragraph insertion/deletion.
Diffstat (limited to 'src/Text/Pandoc/Readers')
-rw-r--r-- | src/Text/Pandoc/Readers/Docx.hs | 4 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/Docx/Parse.hs | 21 |
2 files changed, 19 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs index a2f22c1ea..3ac3b7563 100644 --- a/src/Text/Pandoc/Readers/Docx.hs +++ b/src/Text/Pandoc/Readers/Docx.hs @@ -364,7 +364,7 @@ parPartToInlines parPart = parPartToInlines' :: PandocMonad m => ParPart -> DocxContext m Inlines parPartToInlines' (PlainRun r) = runToInlines r -parPartToInlines' (Insertion _ author date runs) = do +parPartToInlines' (ChangedRuns (TrackedChange Insertion (ChangeInfo _ author date)) runs) = do opts <- asks docxOptions case readerTrackChanges opts of AcceptChanges -> smushInlines <$> mapM runToInlines runs @@ -373,7 +373,7 @@ parPartToInlines' (Insertion _ author date runs) = do ils <- smushInlines <$> mapM runToInlines runs let attr = ("", ["insertion"], [("author", author), ("date", date)]) return $ spanWith attr ils -parPartToInlines' (Deletion _ author date runs) = do +parPartToInlines' (ChangedRuns (TrackedChange Deletion (ChangeInfo _ author date)) runs) = do opts <- asks docxOptions case readerTrackChanges opts of AcceptChanges -> return mempty diff --git a/src/Text/Pandoc/Readers/Docx/Parse.hs b/src/Text/Pandoc/Readers/Docx/Parse.hs index 071f901b6..71ab5085b 100644 --- a/src/Text/Pandoc/Readers/Docx/Parse.hs +++ b/src/Text/Pandoc/Readers/Docx/Parse.hs @@ -51,6 +51,9 @@ module Text.Pandoc.Readers.Docx.Parse ( Docx(..) , ParagraphStyle(..) , Row(..) , Cell(..) + , TrackedChange(..) + , ChangeType(..) + , ChangeInfo(..) , archiveToDocx , archiveToDocxWithWarnings ) where @@ -198,6 +201,15 @@ data ParIndentation = ParIndentation { leftParIndent :: Maybe Integer , hangingParIndent :: Maybe Integer} deriving Show +data ChangeType = Insertion | Deletion + deriving Show + +data ChangeInfo = ChangeInfo ChangeId Author ChangeDate + deriving Show + +data TrackedChange = TrackedChange ChangeType ChangeInfo + deriving Show + data ParagraphStyle = ParagraphStyle { pStyle :: [String] , indentation :: Maybe ParIndentation , dropCap :: Bool @@ -241,8 +253,7 @@ data Cell = Cell [BodyPart] type Extent = Maybe (Double, Double) data ParPart = PlainRun Run - | Insertion ChangeId Author ChangeDate [Run] - | Deletion ChangeId Author ChangeDate [Run] + | ChangedRuns TrackedChange [Run] | CommentStart CommentId Author CommentDate [BodyPart] | CommentEnd CommentId | BookMark BookMarkId Anchor @@ -732,14 +743,16 @@ elemToParPart ns element , Just cAuthor <- findAttrByName ns "w" "author" element , Just cDate <- findAttrByName ns "w" "date" element = do runs <- mapD (elemToRun ns) (elChildren element) - return $ Insertion cId cAuthor cDate runs + return $ ChangedRuns + (TrackedChange Insertion (ChangeInfo cId cAuthor cDate)) runs elemToParPart ns element | isElem ns "w" "del" element || isElem ns "w" "moveFrom" element , Just cId <- findAttrByName ns "w" "id" element , Just cAuthor <- findAttrByName ns "w" "author" element , Just cDate <- findAttrByName ns "w" "date" element = do runs <- mapD (elemToRun ns) (elChildren element) - return $ Deletion cId cAuthor cDate runs + return $ ChangedRuns + (TrackedChange Deletion (ChangeInfo cId cAuthor cDate)) runs elemToParPart ns element | isElem ns "w" "smartTag" element = do runs <- mapD (elemToRun ns) (elChildren element) |