summaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Writers/ODT.hs
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-06-25 15:36:30 +0200
committerJohn MacFarlane <jgm@berkeley.edu>2017-06-25 15:36:30 +0200
commite7cd3cb4668b119b61eb69eed857b0254a614ad9 (patch)
tree79b8564cf255852055009c0f0b56dde6af8b33dc /src/Text/Pandoc/Writers/ODT.hs
parent3ae4105d143dbec44afa713f6c3fa28f7a8c1d1f (diff)
Writers.Shared: refactored getLang, splitLang...
into `Lang(..)`, `getLang`, `parceBCP47`.
Diffstat (limited to 'src/Text/Pandoc/Writers/ODT.hs')
-rw-r--r--src/Text/Pandoc/Writers/ODT.hs26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/Text/Pandoc/Writers/ODT.hs b/src/Text/Pandoc/Writers/ODT.hs
index dff4f8fcf..8573f5719 100644
--- a/src/Text/Pandoc/Writers/ODT.hs
+++ b/src/Text/Pandoc/Writers/ODT.hs
@@ -50,7 +50,8 @@ import Text.Pandoc.Shared (stringify)
import Text.Pandoc.UTF8 (fromStringLazy, fromTextLazy, toStringLazy)
import Text.Pandoc.Walk
import Text.Pandoc.Writers.OpenDocument (writeOpenDocument)
-import Text.Pandoc.Writers.Shared (fixDisplayMath, getLang, splitLang)
+import Text.Pandoc.Writers.Shared (fixDisplayMath, getLang, Lang(..),
+ renderLang)
import Text.Pandoc.XML
import Text.TeXMath
import Text.XML.Light
@@ -79,7 +80,7 @@ pandocToODT :: PandocMonad m
pandocToODT opts doc@(Pandoc meta _) = do
let datadir = writerUserDataDir opts
let title = docTitle meta
- let lang = getLang opts meta
+ lang <- getLang opts meta
refArchive <-
case writerReferenceDoc opts of
Just f -> liftM toArchive $ lift $ P.readFileLazy f
@@ -140,7 +141,7 @@ pandocToODT opts doc@(Pandoc meta _) = do
$$
case lang of
Just l -> inTagsSimple "dc:language"
- (text (escapeStringForXML l))
+ (text (escapeStringForXML (renderLang l)))
Nothing -> empty
)
)
@@ -153,10 +154,9 @@ pandocToODT opts doc@(Pandoc meta _) = do
$ addEntryToArchive metaEntry archive'
return $ fromArchive archive''
-updateStyleWithLang :: PandocMonad m => Maybe String -> Archive -> O m Archive
+updateStyleWithLang :: PandocMonad m => Maybe Lang -> Archive -> O m Archive
updateStyleWithLang Nothing arch = return arch
-updateStyleWithLang (Just l) arch = do
- (mblang, mbcountry) <- splitLang l
+updateStyleWithLang (Just lang) arch = do
epochtime <- floor `fmap` (lift P.getPOSIXTime)
return arch{ zEntries = [if eRelativePath e == "styles.xml"
then case parseXMLDoc
@@ -166,16 +166,16 @@ updateStyleWithLang (Just l) arch = do
toEntry "styles.xml" epochtime
( fromStringLazy
. ppTopElement
- . addLang mblang mbcountry $ d )
+ . addLang lang $ d )
else e
| e <- zEntries arch] }
-addLang :: Maybe String -> Maybe String -> Element -> Element
-addLang mblang mbcountry = everywhere' (mkT updateLangAttr)
- where updateLangAttr (Attr n@(QName "language" _ (Just "fo")) l)
- = Attr n (maybe l id mblang)
- updateLangAttr (Attr n@(QName "country" _ (Just "fo")) c)
- = Attr n (maybe c id mbcountry)
+addLang :: Lang -> Element -> Element
+addLang (Lang lang country) = everywhere' (mkT updateLangAttr)
+ where updateLangAttr (Attr n@(QName "language" _ (Just "fo")) _)
+ = Attr n lang
+ updateLangAttr (Attr n@(QName "country" _ (Just "fo")) _)
+ = Attr n country
updateLangAttr x = x
-- | transform both Image and Math elements