git.iko.soy/typeable/pandoc
on master help sign in
DocBook reader: add support for calloutlist and callout
33fdb6bBryan O'Sullivan
src/Text/Pandoc/Readers/DocBook.hs+5−3
@@ -70,8 +70,8 @@ List of all DocBook tags, with [x] indicating implemented,
70[x] book - A book
70[x] book - A book
71[x] bookinfo - Meta-information for a Book
71[x] bookinfo - Meta-information for a Book
72[x] bridgehead - A free-floating heading
72[x] bridgehead - A free-floating heading
73−[ ] callout - A “called out” description of a marked Area
73+[x] callout - A “called out” description of a marked Area
74−[ ] calloutlist - A list of Callouts
74+[x] calloutlist - A list of Callouts
75[x] caption - A caption
75[x] caption - A caption
76[x] caution - A note of caution
76[x] caution - A note of caution
77[x] chapter - A chapter, as of a book
77[x] chapter - A chapter, as of a book
@@ -603,7 +603,7 @@ isBlockElement (Elem e) = qName (elName e) `elem` blocktags
603 "important","caution","note","tip","warning","qandadiv",
603 "important","caution","note","tip","warning","qandadiv",
604 "question","answer","abstract","itemizedlist","orderedlist",
604 "question","answer","abstract","itemizedlist","orderedlist",
605 "variablelist","article","book","table","informaltable",
605 "variablelist","article","book","table","informaltable",
606− "screen","programlisting","example"]
606+ "screen","programlisting","example","calloutlist"]
607isBlockElement _ = False
607isBlockElement _ = False
608
608
609-- Trim leading and trailing newline characters
609-- Trim leading and trailing newline characters
@@ -712,6 +712,7 @@ parseBlock (Elem e) =
712 "question" -> addToStart (strong (str "Q:") <> str " ") <$> getBlocks e
712 "question" -> addToStart (strong (str "Q:") <> str " ") <$> getBlocks e
713 "answer" -> addToStart (strong (str "A:") <> str " ") <$> getBlocks e
713 "answer" -> addToStart (strong (str "A:") <> str " ") <$> getBlocks e
714 "abstract" -> blockQuote <$> getBlocks e
714 "abstract" -> blockQuote <$> getBlocks e
715+ "calloutlist" -> bulletList <$> callouts
715 "itemizedlist" -> bulletList <$> listitems
716 "itemizedlist" -> bulletList <$> listitems
716 "orderedlist" -> do
717 "orderedlist" -> do
717 let listStyle = case attrValue "numeration" e of
718 let listStyle = case attrValue "numeration" e of
@@ -785,6 +786,7 @@ parseBlock (Elem e) =
785 contents <- getBlocks e
786 contents <- getBlocks e
786 return $ blockQuote (contents <> attrib)
787 return $ blockQuote (contents <> attrib)
787 listitems = mapM getBlocks $ filterChildren (named "listitem") e
788 listitems = mapM getBlocks $ filterChildren (named "listitem") e
789+ callouts = mapM getBlocks $ filterChildren (named "callout") e
788 deflistitems = mapM parseVarListEntry $ filterChildren
790 deflistitems = mapM parseVarListEntry $ filterChildren
789 (named "varlistentry") e
791 (named "varlistentry") e
790 parseVarListEntry e' = do
792 parseVarListEntry e' = do
tests/docbook-reader.docbook+19
@@ -509,6 +509,25 @@ These should not be escaped: \$ \\ \&gt; \[ \{
509 B. Williams
509 B. Williams
510 </para>
510 </para>
511 </sect2>
511 </sect2>
512+ <sect2 id="callout">
513+ <title>Callout</title>
514+ <para>Simple.</para>
515+ <calloutlist>
516+ <callout arearefs="loop1-letrec-co" id="loop1-letrec">
517+ <para id="x_QA1">A <code>__letrec</code> is equivalent to a normal
518+ Haskell &let;.</para>
519+ </callout>
520+ <callout arearefs="loop1-def-co" id="loop1-def">
521+ <para id="x_RA1">&GHC; compiled the body of our list comprehension into
522+ a loop named <function>go_s1YC</function>.</para>
523+ </callout>
524+ <callout arearefs="loop1-pat-empty-co" id="loop1-pat-empty">
525+ <para id="x_SA1">If our &case; expression matches the empty list, we
526+ return the empty list. This is reassuringly
527+ familiar.</para>
528+ </callout>
529+ </calloutlist>
530+ </sect2>
512</sect1>
531</sect1>
513<sect1 id="definition-lists">
532<sect1 id="definition-lists">
514 <title>Definition Lists</title>
533 <title>Definition Lists</title>
tests/docbook-reader.native+6
@@ -134,6 +134,12 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Spa
134,Para [Str "Should",Space,Str "not",Space,Str "be",Space,Str "a",Space,Str "list",Space,Str "item:"]
134,Para [Str "Should",Space,Str "not",Space,Str "be",Space,Str "a",Space,Str "list",Space,Str "item:"]
135,Para [Str "M.A.\160\&2007"]
135,Para [Str "M.A.\160\&2007"]
136,Para [Str "B.",Space,Str "Williams"]
136,Para [Str "B.",Space,Str "Williams"]
137+,Header 2 ("",[],[]) [Str "Callout"]
138+,Para [Str "Simple."]
139+,BulletList
140+ [[Para [Str "A",Space,Code ("",[],[]) "__letrec",Space,Str "is",Space,Str "equivalent",Space,Str "to",Space,Str "a",Space,Str "normal",Space,Str "Haskell",Space,Str "LET."]]
141+ ,[Para [Str "GHC",Space,Str "compiled",Space,Str "the",Space,Str "body",Space,Str "of",Space,Str "our",Space,Str "list",Space,Str "comprehension",Space,Str "into",Space,Str "a",Space,Str "loop",Space,Str "named",Space,Code ("",[],[]) "go_s1YC",Str "."]]
142+ ,[Para [Str "If",Space,Str "our",Space,Str "CASE",Space,Str "expression",Space,Str "matches",Space,Str "the",Space,Str "empty",Space,Str "list,",Space,Str "we",Space,Str "return",Space,Str "the",Space,Str "empty",Space,Str "list.",Space,Str "This",Space,Str "is",Space,Str "reassuringly",Space,Str "familiar."]]]
137,Header 1 ("",[],[]) [Str "Definition",Space,Str "Lists"]
143,Header 1 ("",[],[]) [Str "Definition",Space,Str "Lists"]
138,DefinitionList
144,DefinitionList
139 [([Str "apple"],
145 [([Str "apple"],