summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJesse Rosenthal <jrosenthal@jhu.edu>2018-01-02 07:50:08 -0500
committerJesse Rosenthal <jrosenthal@jhu.edu>2018-01-02 07:50:08 -0500
commitf6fde0ae5ea21d91d610c21c0488029f9c26ca3f (patch)
tree40229f85eea404474b3f050c6673e5afc1bc4c5f /src
parentb9d73428c7d420cf7f07e4e20263d5d705c73f85 (diff)
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')
-rw-r--r--src/Text/Pandoc/Readers/Docx.hs4
-rw-r--r--src/Text/Pandoc/Readers/Docx/Parse.hs21
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)