diff options
author | Neil Mayhew <neiljhmayhew@gmail.com> | 2014-04-14 19:07:14 -0600 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2014-05-03 18:37:02 -0700 |
commit | ccbf4fc9c20ccdce0f7144845cd022ee8cfca1af (patch) | |
tree | 1a5813e74b87a06cc8f0183617858392f46e0c7b | |
parent | 2ba78730861b0947ed26aec00f0520e5affd5f7c (diff) | |
download | pandoc-ccbf4fc9c20ccdce0f7144845cd022ee8cfca1af.tar.gz |
Distinguish tight and loose lists in Docbook output
Determined by the first block of the first item being Plain.
-rw-r--r-- | src/Text/Pandoc/Writers/Docbook.hs | 26 | ||||
-rw-r--r-- | tests/Tests/Writers/Docbook.hs | 199 | ||||
-rw-r--r-- | tests/writer.docbook | 60 |
3 files changed, 236 insertions, 49 deletions
diff --git a/src/Text/Pandoc/Writers/Docbook.hs b/src/Text/Pandoc/Writers/Docbook.hs index 2d6ce3020..e1b62f02d 100644 --- a/src/Text/Pandoc/Writers/Docbook.hs +++ b/src/Text/Pandoc/Writers/Docbook.hs @@ -185,10 +185,13 @@ blockToDocbook _ (CodeBlock (_,classes,_) str) = else languagesByExtension . map toLower $ s langs = concatMap langsFrom classes blockToDocbook opts (BulletList lst) = - inTagsIndented "itemizedlist" $ listItemsToDocbook opts lst + let attribs = case lst of + ((Plain _:_):_) -> [("spacing", "compact")] + _ -> [] + in inTags True "itemizedlist" attribs $ listItemsToDocbook opts lst blockToDocbook _ (OrderedList _ []) = empty blockToDocbook opts (OrderedList (start, numstyle, _) (first:rest)) = - let attribs = case numstyle of + let numeration = case numstyle of DefaultStyle -> [] Decimal -> [("numeration", "arabic")] Example -> [("numeration", "arabic")] @@ -196,14 +199,21 @@ blockToDocbook opts (OrderedList (start, numstyle, _) (first:rest)) = LowerAlpha -> [("numeration", "loweralpha")] UpperRoman -> [("numeration", "upperroman")] LowerRoman -> [("numeration", "lowerroman")] - items = if start == 1 - then listItemsToDocbook opts (first:rest) - else (inTags True "listitem" [("override",show start)] - (blocksToDocbook opts $ map plainToPara first)) $$ - listItemsToDocbook opts rest + spacing = case first of + (Plain _:_) -> [("spacing", "compact")] + _ -> [] + attribs = numeration ++ spacing + items = if start == 1 + then listItemsToDocbook opts (first:rest) + else (inTags True "listitem" [("override",show start)] + (blocksToDocbook opts $ map plainToPara first)) $$ + listItemsToDocbook opts rest in inTags True "orderedlist" attribs items blockToDocbook opts (DefinitionList lst) = - inTagsIndented "variablelist" $ deflistItemsToDocbook opts lst + let attribs = case lst of + ((_, (Plain _:_):_):_) -> [("spacing", "compact")] + _ -> [] + in inTags True "variablelist" attribs $ deflistItemsToDocbook opts lst blockToDocbook _ (RawBlock f str) | f == "docbook" = text str -- raw XML block | f == "html" = text str -- allow html for backwards compatibility diff --git a/tests/Tests/Writers/Docbook.hs b/tests/Tests/Writers/Docbook.hs index e815b4f5a..97126b473 100644 --- a/tests/Tests/Writers/Docbook.hs +++ b/tests/Tests/Writers/Docbook.hs @@ -31,22 +31,199 @@ lineblock :: Blocks lineblock = para ("some text" <> linebreak <> "and more lines" <> linebreak <> "and again") -lineblock_out :: String -lineblock_out = "<literallayout>some text\n" ++ - "and more lines\n" ++ - "and again</literallayout>" +lineblock_out :: [String] +lineblock_out = [ "<literallayout>some text" + , "and more lines" + , "and again</literallayout>" + ] tests :: [Test] tests = [ testGroup "line blocks" [ "none" =: para "This is a test" - =?> "<para>\n This is a test\n</para>" + =?> unlines + [ "<para>" + , " This is a test" + , "</para>" + ] , "basic" =: lineblock - =?> lineblock_out + =?> unlines lineblock_out , "blockquote" =: blockQuote lineblock - =?> ("<blockquote>\n" ++ lineblock_out ++ "\n</blockquote>") - , "footnote" =: para ("This is a test" <> note lineblock <> " of footnotes") - =?> ("<para>\n This is a test<footnote>\n" ++ - lineblock_out ++ - "\n </footnote> of footnotes\n</para>") + =?> unlines + ( [ "<blockquote>" ] ++ + lineblock_out ++ + [ "</blockquote>" ] + ) + , "footnote" =: para ("This is a test" <> + note lineblock <> + " of footnotes") + =?> unlines + ( [ "<para>" + , " This is a test<footnote>" ] ++ + lineblock_out ++ + [ " </footnote> of footnotes" + , "</para>" ] + ) + ] + , testGroup "compact lists" + [ testGroup "bullet" + [ "compact" =: bulletList [plain "a", plain "b", plain "c"] + =?> unlines + [ "<itemizedlist spacing=\"compact\">" + , " <listitem>" + , " <para>" + , " a" + , " </para>" + , " </listitem>" + , " <listitem>" + , " <para>" + , " b" + , " </para>" + , " </listitem>" + , " <listitem>" + , " <para>" + , " c" + , " </para>" + , " </listitem>" + , "</itemizedlist>" + ] + , "loose" =: bulletList [para "a", para "b", para "c"] + =?> unlines + [ "<itemizedlist>" + , " <listitem>" + , " <para>" + , " a" + , " </para>" + , " </listitem>" + , " <listitem>" + , " <para>" + , " b" + , " </para>" + , " </listitem>" + , " <listitem>" + , " <para>" + , " c" + , " </para>" + , " </listitem>" + , "</itemizedlist>" + ] + ] + , testGroup "ordered" + [ "compact" =: orderedList [plain "a", plain "b", plain "c"] + =?> unlines + [ "<orderedlist spacing=\"compact\">" + , " <listitem>" + , " <para>" + , " a" + , " </para>" + , " </listitem>" + , " <listitem>" + , " <para>" + , " b" + , " </para>" + , " </listitem>" + , " <listitem>" + , " <para>" + , " c" + , " </para>" + , " </listitem>" + , "</orderedlist>" + ] + , "loose" =: orderedList [para "a", para "b", para "c"] + =?> unlines + [ "<orderedlist>" + , " <listitem>" + , " <para>" + , " a" + , " </para>" + , " </listitem>" + , " <listitem>" + , " <para>" + , " b" + , " </para>" + , " </listitem>" + , " <listitem>" + , " <para>" + , " c" + , " </para>" + , " </listitem>" + , "</orderedlist>" + ] + ] + , testGroup "definition" + [ "compact" =: definitionList [ ("an", [plain "apple" ]) + , ("a", [plain "banana"]) + , ("an", [plain "orange"])] + =?> unlines + [ "<variablelist spacing=\"compact\">" + , " <varlistentry>" + , " <term>" + , " an" + , " </term>" + , " <listitem>" + , " <para>" + , " apple" + , " </para>" + , " </listitem>" + , " </varlistentry>" + , " <varlistentry>" + , " <term>" + , " a" + , " </term>" + , " <listitem>" + , " <para>" + , " banana" + , " </para>" + , " </listitem>" + , " </varlistentry>" + , " <varlistentry>" + , " <term>" + , " an" + , " </term>" + , " <listitem>" + , " <para>" + , " orange" + , " </para>" + , " </listitem>" + , " </varlistentry>" + , "</variablelist>" + ] + , "loose" =: definitionList [ ("an", [para "apple" ]) + , ("a", [para "banana"]) + , ("an", [para "orange"])] + =?> unlines + [ "<variablelist>" + , " <varlistentry>" + , " <term>" + , " an" + , " </term>" + , " <listitem>" + , " <para>" + , " apple" + , " </para>" + , " </listitem>" + , " </varlistentry>" + , " <varlistentry>" + , " <term>" + , " a" + , " </term>" + , " <listitem>" + , " <para>" + , " banana" + , " </para>" + , " </listitem>" + , " </varlistentry>" + , " <varlistentry>" + , " <term>" + , " an" + , " </term>" + , " <listitem>" + , " <para>" + , " orange" + , " </para>" + , " </listitem>" + , " </varlistentry>" + , "</variablelist>" + ] + ] ] ] diff --git a/tests/writer.docbook b/tests/writer.docbook index 9cb9a5359..26dcbadaa 100644 --- a/tests/writer.docbook +++ b/tests/writer.docbook @@ -93,7 +93,7 @@ sub status { <para> A list: </para> - <orderedlist numeration="arabic"> + <orderedlist numeration="arabic" spacing="compact"> <listitem> <para> item one @@ -156,7 +156,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Asterisks tight: </para> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> asterisk 1 @@ -196,7 +196,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Pluses tight: </para> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> Plus 1 @@ -236,7 +236,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Minuses tight: </para> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> Minus 1 @@ -279,7 +279,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Tight: </para> - <orderedlist numeration="arabic"> + <orderedlist numeration="arabic" spacing="compact"> <listitem> <para> First @@ -299,7 +299,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> and: </para> - <orderedlist numeration="arabic"> + <orderedlist numeration="arabic" spacing="compact"> <listitem> <para> One @@ -383,17 +383,17 @@ These should not be escaped: \$ \\ \> \[ \{ </sect2> <sect2 id="nested"> <title>Nested</title> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> Tab </para> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> Tab </para> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> Tab @@ -407,7 +407,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Here’s another: </para> - <orderedlist numeration="arabic"> + <orderedlist numeration="arabic" spacing="compact"> <listitem> <para> First @@ -417,7 +417,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Second: </para> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> Fee @@ -454,7 +454,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Second: </para> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> Fee @@ -508,7 +508,7 @@ These should not be escaped: \$ \\ \> \[ \{ </sect2> <sect2 id="fancy-list-markers"> <title>Fancy list markers</title> - <orderedlist numeration="arabic"> + <orderedlist numeration="arabic" spacing="compact"> <listitem override="2"> <para> begins with 2 @@ -521,7 +521,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> with a continuation </para> - <orderedlist numeration="lowerroman"> + <orderedlist numeration="lowerroman" spacing="compact"> <listitem override="4"> <para> sublist with roman numerals, starting with 4 @@ -531,7 +531,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> more items </para> - <orderedlist numeration="upperalpha"> + <orderedlist numeration="upperalpha" spacing="compact"> <listitem> <para> a subsublist @@ -550,22 +550,22 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Nesting: </para> - <orderedlist numeration="upperalpha"> + <orderedlist numeration="upperalpha" spacing="compact"> <listitem> <para> Upper Alpha </para> - <orderedlist numeration="upperroman"> + <orderedlist numeration="upperroman" spacing="compact"> <listitem> <para> Upper Roman. </para> - <orderedlist numeration="arabic"> + <orderedlist numeration="arabic" spacing="compact"> <listitem override="6"> <para> Decimal start with 6 </para> - <orderedlist numeration="loweralpha"> + <orderedlist numeration="loweralpha" spacing="compact"> <listitem override="3"> <para> Lower alpha with paren @@ -581,7 +581,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Autonumbering: </para> - <orderedlist> + <orderedlist spacing="compact"> <listitem> <para> Autonumber. @@ -591,7 +591,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> More. </para> - <orderedlist> + <orderedlist spacing="compact"> <listitem> <para> Nested. @@ -616,7 +616,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Tight using spaces: </para> - <variablelist> + <variablelist spacing="compact"> <varlistentry> <term> apple @@ -651,7 +651,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Tight using tabs: </para> - <variablelist> + <variablelist spacing="compact"> <varlistentry> <term> apple @@ -757,7 +757,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Multiple definitions, tight: </para> - <variablelist> + <variablelist spacing="compact"> <varlistentry> <term> apple @@ -841,7 +841,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> orange fruit </para> - <orderedlist numeration="arabic"> + <orderedlist numeration="arabic" spacing="compact"> <listitem> <para> sublist @@ -1051,7 +1051,7 @@ These should not be escaped: \$ \\ \> \[ \{ </sect1> <sect1 id="latex"> <title>LaTeX</title> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> </para> @@ -1097,7 +1097,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> These shouldn’t be math: </para> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> To get the famous equation, write <literal>$e = mc^2$</literal>. @@ -1130,7 +1130,7 @@ These should not be escaped: \$ \\ \> \[ \{ <para> Here is some unicode: </para> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> I hat: Î @@ -1316,7 +1316,7 @@ These should not be escaped: \$ \\ \> \[ \{ With an ampersand: <ulink url="http://example.com/?foo=1&bar=2">http://example.com/?foo=1&bar=2</ulink> </para> - <itemizedlist> + <itemizedlist spacing="compact"> <listitem> <para> In a list? @@ -1414,7 +1414,7 @@ or here: <http://example.com/> </footnote> </para> </blockquote> - <orderedlist numeration="arabic"> + <orderedlist numeration="arabic" spacing="compact"> <listitem> <para> And in list items.<footnote> |