git.iko.soy/typeable/pandoc
on master help sign in
Remove bool on setRTL.

We had to use this because we set the env, which means that setRTL wouldn't do anything at the top level. We now don't set the env (it will always be false at the outset), which means the toplevel setRTL will work if necessary.

commitab31d5ea8d0fc17b900a5843104784a25a2c8ed9 authorJesse Rosenthal <jrosenthal@jhu.edu> dateMon 3 Oct 2016, 21:33 (10 years ago) parent666c042
1 file changed+13−17
src/Text/Pandoc/Writers/Docx.hs+13−17
src/Text/Pandoc/Writers/Docx.hs+13−17
@@ -261,16 +261,9 @@ writeDocx opts doc@(Pandoc meta _) = do
261261 let tocTitle = fromMaybe (stTocTitle defaultWriterState) $
262262 metaValueToInlines <$> lookupMeta "toc-title" meta
263263
264− let isRTL = case lookupMeta "dir" meta of
265− Just (MetaString "rtl") -> True
266− Just (MetaInlines [Str "rtl"]) -> True
267− _ -> False
268−
269− ((contents, footnotes), st) <- runStateT (
270− runReaderT
271− (writeOpenXML opts{writerWrapText = WrapNone} doc')
272− defaultWriterEnv { envRTL = isRTL }
273− ) defaultWriterState{ stChangesAuthor = fromMaybe "unknown" username
264+ ((contents, footnotes), st) <- runStateT
265+ (runReaderT (writeOpenXML opts{writerWrapText = WrapNone} doc') defaultWriterEnv)
266+ defaultWriterState{ stChangesAuthor = fromMaybe "unknown" username
274267 , stChangesDate = formatTime defaultTimeLocale "%FT%XZ" utctime
275268 , stPrintWidth = (maybe 420 (\x -> quot x 20) pgContentWidth)
276269 , stStyleMaps = styleMaps
@@ -723,8 +716,11 @@ makeTOC _ = return []
723716-- OpenXML elements (the main document and footnotes).
724717writeOpenXML :: WriterOptions -> Pandoc -> WS ([Element], [Element])
725718writeOpenXML opts (Pandoc meta blocks) = do
726− isRTL <- asks envRTL
727− (if isRTL then (setRTL True) else id) $ do
719+ let isRTL = case lookupMeta "dir" meta of
720+ Just (MetaString "rtl") -> True
721+ Just (MetaInlines [Str "rtl"]) -> True
722+ _ -> False
723+ (if isRTL then setRTL else id) $ do
728724 let tit = docTitle meta ++ case lookupMeta "subtitle" meta of
729725 Just (MetaBlocks [Plain xs]) -> LineBreak : xs
730726 _ -> []
@@ -797,7 +793,7 @@ blockToOpenXML opts (Div (ident,classes,kvs) bs)
797793 withParaPropM (pStyleM sty) $ blocksToOpenXML opts bs
798794 | Just "rtl" <- lookup "dir" kvs = do
799795 let kvs' = filter (("dir", "rtl")/=) kvs
800− setRTL False $ blockToOpenXML opts (Div (ident,classes,kvs') bs)
796+ setRTL $ blockToOpenXML opts (Div (ident,classes,kvs') bs)
801797 | Just "ltr" <- lookup "dir" kvs = do
802798 let kvs' = filter (("dir", "ltr")/=) kvs
803799 setLTR $ blockToOpenXML opts (Div (ident,classes,kvs') bs)
@@ -1042,7 +1038,7 @@ inlineToOpenXML opts (Span (ident,classes,kvs) ils)
10421038 inlineToOpenXML opts (Span (ident,classes,kvs') ils)
10431039 | Just "rtl" <- lookup "dir" kvs = do
10441040 let kvs' = filter (("dir", "rtl")/=) kvs
1045− setRTL False $ inlineToOpenXML opts (Span (ident,classes,kvs') ils)
1041+ setRTL $ inlineToOpenXML opts (Span (ident,classes,kvs') ils)
10461042 | Just "ltr" <- lookup "dir" kvs = do
10471043 let kvs' = filter (("dir", "ltr")/=) kvs
10481044 setLTR $ inlineToOpenXML opts (Span (ident,classes,kvs') ils)
@@ -1275,10 +1271,10 @@ fitToPage (x, y) pageWidth
12751271 (pageWidth, floor $ ((fromIntegral pageWidth) / x) * y)
12761272 | otherwise = (floor x, floor y)
12771273
1278−setRTL :: Bool -> WS a -> WS a
1279−setRTL topLevel x = do
1274+setRTL :: WS a -> WS a
1275+setRTL x = do
12801276 isRTL <- asks envRTL
1281− if isRTL && not topLevel
1277+ if isRTL
12821278 then x
12831279 else flip local x $ \env -> env {
12841280 envRTL = True