diff options
| -rw-r--r-- | src/Text/Pandoc/Writers/Texinfo.hs | 21 | ||||
| -rw-r--r-- | test/command/11312.md | 21 |
2 files changed, 40 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Writers/Texinfo.hs b/src/Text/Pandoc/Writers/Texinfo.hs index fa00dc675..755e9130c 100644 --- a/src/Text/Pandoc/Writers/Texinfo.hs +++ b/src/Text/Pandoc/Writers/Texinfo.hs @@ -148,6 +148,19 @@ stringToTexinfo t inCmd :: Text -> Doc Text -> Doc Text inCmd cmd contents = char '@' <> literal cmd <> braces contents +isCodeOrBreak :: Inline -> Bool +isCodeOrBreak (Code{}) = True +isCodeOrBreak LineBreak = True +isCodeOrBreak _ = False + +isCode :: Inline -> Bool +isCode (Code{}) = True +isCode _ = False + +codeToStr :: Inline -> Inline +codeToStr (Code _ s) = Str s +codeToStr x = x + -- | Convert Pandoc block element to Texinfo. blockToTexinfo :: PandocMonad m => Block -- ^ Block to convert @@ -158,8 +171,12 @@ blockToTexinfo (Div _ bs) = blockListToTexinfo bs blockToTexinfo (Plain lst) = inlineListToTexinfo lst -blockToTexinfo (Para lst) = - inlineListToTexinfo lst -- this is handled differently from Plain in blockListToTexinfo +-- this is handled differently from Plain in blockListToTexinfo +blockToTexinfo (Para lst) + | all isCodeOrBreak lst + = (\xs -> "@example" $$ vcat xs $$ "@end example") + <$> mapM (inlineToTexinfo . codeToStr) (filter isCode lst) + | otherwise = inlineListToTexinfo lst blockToTexinfo (LineBlock lns) = blockToTexinfo $ linesToPara lns diff --git a/test/command/11312.md b/test/command/11312.md new file mode 100644 index 000000000..57bf287cd --- /dev/null +++ b/test/command/11312.md @@ -0,0 +1,21 @@ +``` +% pandoc -f mediawiki -t texinfo +foofoo + + bar + baz + +foofoo +^D +@node Top +@top Top + +foofoo + +@example +bar +baz +@end example + +foofoo +``` |
