git.iko.soy/typeable/pandoc
on master help sign in
RTF writer: Avoid extra paragraph tags in metadata.
5883899John MacFarlane
src/Text/Pandoc/Writers/RTF.hs+10−2
@@ -39,6 +39,7 @@ import Data.List ( isSuffixOf, intercalate )
39import Data.Char ( ord, chr, isDigit, toLower )
39import Data.Char ( ord, chr, isDigit, toLower )
40import System.FilePath ( takeExtension )
40import System.FilePath ( takeExtension )
41import qualified Data.ByteString as B
41import qualified Data.ByteString as B
42+import qualified Data.Map as M
42import Text.Printf ( printf )
43import Text.Printf ( printf )
43import Network.URI ( isURI, unEscapeString )
44import Network.URI ( isURI, unEscapeString )
44import qualified Control.Exception as E
45import qualified Control.Exception as E
@@ -74,12 +75,19 @@ writeRTFWithEmbeddedImages options doc =
74
75
75-- | Convert Pandoc to a string in rich text format.
76-- | Convert Pandoc to a string in rich text format.
76writeRTF :: WriterOptions -> Pandoc -> String
77writeRTF :: WriterOptions -> Pandoc -> String
77−writeRTF options (Pandoc meta blocks) =
78+writeRTF options (Pandoc meta@(Meta metamap) blocks) =
78 let spacer = not $ all null $ docTitle meta : docDate meta : docAuthors meta
79 let spacer = not $ all null $ docTitle meta : docDate meta : docAuthors meta
80+ toPlain (MetaBlocks [Para ils]) = MetaInlines ils
81+ toPlain x = x
82+ -- adjust title, author, date so we don't get para inside para
83+ meta' = Meta $ M.adjust toPlain "title"
84+ . M.adjust toPlain "author"
85+ . M.adjust toPlain "date"
86+ $ metamap
79 Just metadata = metaToJSON options
87 Just metadata = metaToJSON options
80 (Just . concatMap (blockToRTF 0 AlignDefault))
88 (Just . concatMap (blockToRTF 0 AlignDefault))
81 (Just . inlineListToRTF)
89 (Just . inlineListToRTF)
82− meta
90+ meta'
83 body = concatMap (blockToRTF 0 AlignDefault) blocks
91 body = concatMap (blockToRTF 0 AlignDefault) blocks
84 isTOCHeader (Header lev _ _) = lev <= writerTOCDepth options
92 isTOCHeader (Header lev _ _) = lev <= writerTOCDepth options
85 isTOCHeader _ = False
93 isTOCHeader _ = False