aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text/Pandoc')
-rw-r--r--src/Text/Pandoc/Options.hs9
-rw-r--r--src/Text/Pandoc/Readers/Docx.hs19
2 files changed, 25 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Options.hs b/src/Text/Pandoc/Options.hs
index 611a6bb06..b7a3a4b7b 100644
--- a/src/Text/Pandoc/Options.hs
+++ b/src/Text/Pandoc/Options.hs
@@ -41,6 +41,7 @@ module Text.Pandoc.Options ( Extension(..)
, HTMLSlideVariant (..)
, EPUBVersion (..)
, WriterOptions (..)
+ , TrackChanges (..)
, def
, isEnabled
) where
@@ -211,6 +212,7 @@ data ReaderOptions = ReaderOptions{
-- indented code blocks
, readerDefaultImageExtension :: String -- ^ Default extension for images
, readerTrace :: Bool -- ^ Print debugging info
+ , readerTrackChanges :: TrackChanges
} deriving (Show, Read)
instance Default ReaderOptions
@@ -227,6 +229,7 @@ instance Default ReaderOptions
, readerIndentedCodeClasses = []
, readerDefaultImageExtension = ""
, readerTrace = False
+ , readerTrackChanges = AcceptChanges
}
--
@@ -264,6 +267,12 @@ data HTMLSlideVariant = S5Slides
| NoSlides
deriving (Show, Read, Eq)
+-- | Options for accepting or rejecting MS Word track-changes.
+data TrackChanges = AcceptChanges
+ | RejectChanges
+ | AllChanges
+ deriving (Show, Read, Eq)
+
-- | Options for writers
data WriterOptions = WriterOptions
{ writerStandalone :: Bool -- ^ Include header and footer
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs
index 130e2a1e2..cb0735e31 100644
--- a/src/Text/Pandoc/Readers/Docx.hs
+++ b/src/Text/Pandoc/Readers/Docx.hs
@@ -234,9 +234,22 @@ runToInlines opts docx@(Docx _ notes _ _ _) (Endnote fnId) =
parPartToInlines :: ReaderOptions -> Docx -> ParPart -> [Inline]
parPartToInlines opts docx (PlainRun r) = runToInlines opts docx r
-parPartToInlines opts docx (Insertion _ _ _ runs) =
- concatMap (runToInlines opts docx) runs
-parPartToInlines _ _ (Deletion _ _ _ _) = []
+parPartToInlines opts docx (Insertion _ author date runs) =
+ case readerTrackChanges opts of
+ AcceptChanges -> concatMap (runToInlines opts docx) runs
+ RejectChanges -> []
+ AllChanges ->
+ [Span
+ ("", ["insertion"], [("author", author), ("date", date)])
+ (concatMap (runToInlines opts docx) runs)]
+parPartToInlines opts docx (Deletion _ author date runs) =
+ case readerTrackChanges opts of
+ AcceptChanges -> []
+ RejectChanges -> concatMap (runToInlines opts docx) runs
+ AllChanges ->
+ [Span
+ ("", ["deletion"], [("author", author), ("date", date)])
+ (concatMap (runToInlines opts docx) runs)]
parPartToInlines _ _ (BookMark _ anchor) | anchor `elem` dummyAnchors = []
parPartToInlines _ _ (BookMark _ anchor) = [Span (anchor, ["anchor"], []) []]
parPartToInlines _ (Docx _ _ _ rels _) (Drawing relid) =