From 9c3f7688ee1c44c5452cb30986f1e37317acb6e2 Mon Sep 17 00:00:00 2001 From: John MacFarlane <jgm@berkeley.edu> Date: Wed, 23 Jul 2014 10:06:36 -0700 Subject: [PATCH] DocBook reader: Better handle elements inside code environments. Of course, we can't include structure in the code block, but this way we at least preserve the text. Closes #1449. --- src/Text/Pandoc/Readers/DocBook.hs | 7 ++++++- tests/docbook-reader.docbook | 3 +++ tests/docbook-reader.native | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Text/Pandoc/Readers/DocBook.hs b/src/Text/Pandoc/Readers/DocBook.hs index cf1d5132e..1e119e729 100644 --- a/src/Text/Pandoc/Readers/DocBook.hs +++ b/src/Text/Pandoc/Readers/DocBook.hs @@ -769,7 +769,12 @@ parseBlock (Elem e) = "" -> [] x -> [x] return $ codeBlockWith (attrValue "id" e, classes', []) - $ trimNl $ strContent e + $ trimNl $ strContentRecursive e + strContentRecursive = strContent . (\e' -> e'{ elContent = + map elementToStr $ elContent e' }) + elementToStr :: Content -> Content + elementToStr (Elem e') = Text $ CData CDataText (strContentRecursive e') Nothing + elementToStr x = x parseBlockquote = do attrib <- case filterChild (named "attribution") e of Nothing -> return mempty diff --git a/tests/docbook-reader.docbook b/tests/docbook-reader.docbook index c76925917..aef632fb1 100644 --- a/tests/docbook-reader.docbook +++ b/tests/docbook-reader.docbook @@ -89,6 +89,9 @@ sub status { print "working"; } </programlisting> + <screen> +% <command>ls</command> +</screen> <para> A list: </para> diff --git a/tests/docbook-reader.native b/tests/docbook-reader.native index 2d29bb154..583b016bb 100644 --- a/tests/docbook-reader.native +++ b/tests/docbook-reader.native @@ -23,6 +23,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Spa ,BlockQuote [Para [Str "Code",Space,Str "in",Space,Str "a",Space,Str "block",Space,Str "quote:"] ,CodeBlock ("",[],[]) "sub status {\n print \"working\";\n}" + ,CodeBlock ("",[],[]) "% ls" ,Para [Str "A",Space,Str "list:"] ,OrderedList (1,Decimal,DefaultDelim) [[Para [Str "item",Space,Str "one"]]