aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Readers/Docx.hs
diff options
context:
space:
mode:
authorJesse Rosenthal <jrosenthal@jhu.edu>2014-08-12 22:15:09 -0400
committerJesse Rosenthal <jrosenthal@jhu.edu>2014-08-12 22:39:18 -0400
commit194ed8885236d8446b34f44ecf16d4fa9e5c5cbe (patch)
treeacb4c8a1d0e8337201d5f3cca8f50cd5dcb9c796 /src/Text/Pandoc/Readers/Docx.hs
parentaae71ad595f78f6cb7dd1cc5cb0aaef0d3aaf5f1 (diff)
downloadpandoc-194ed8885236d8446b34f44ecf16d4fa9e5c5cbe.tar.gz
Docx reader: accept explicit "Italic" and "Bold" rStyles.
Note that "Italic" can be on, and, from the last commit, `<w:i>` can be present, but be turned off. In that case, the turned-off tag takes precedence. So, we have to distinguish between something being off and something not being there. Hence, isItalic, isBold, isStrike, and isSmallCaps have become Maybes.
Diffstat (limited to 'src/Text/Pandoc/Readers/Docx.hs')
-rw-r--r--src/Text/Pandoc/Readers/Docx.hs23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs
index bcfa4082e..2c436f76f 100644
--- a/src/Text/Pandoc/Readers/Docx.hs
+++ b/src/Text/Pandoc/Readers/Docx.hs
@@ -202,17 +202,30 @@ runStyleToContainers rPr =
[Container $ (\ils -> Code ("", [], []) (concatMap ilToCode ils))]
spanClassToContainers s | s `elem` spansToKeep =
[Container $ Span ("", [s], [])]
- spanClassToContainers _ = []
+ spanClassToContainers _ = []
classContainers = case rStyle rPr of
Nothing -> []
Just s -> spanClassToContainers s
+ resolveFmt :: Bool -> Maybe Bool -> Bool
+ resolveFmt _ (Just True) = True
+ resolveFmt _ (Just False) = False
+ resolveFmt bool Nothing = bool
+
formatters = map Container $ mapMaybe id
- [ if isBold rPr then (Just Strong) else Nothing
- , if isItalic rPr then (Just Emph) else Nothing
- , if isSmallCaps rPr then (Just SmallCaps) else Nothing
- , if isStrike rPr then (Just Strikeout) else Nothing
+ [ if resolveFmt (rStyle rPr == Just "Bold") (isBold rPr)
+ then (Just Strong)
+ else Nothing
+ , if resolveFmt (rStyle rPr == Just "Italic") (isItalic rPr)
+ then (Just Emph)
+ else Nothing
+ , if resolveFmt False (isSmallCaps rPr)
+ then (Just SmallCaps)
+ else Nothing
+ , if resolveFmt False (isStrike rPr)
+ then (Just Strikeout)
+ else Nothing
, if isSuperScript rPr then (Just Superscript) else Nothing
, if isSubScript rPr then (Just Subscript) else Nothing
, rUnderline rPr >>=