diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2016-10-19 13:12:57 +0200 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2016-10-19 13:12:57 +0200 |
commit | 595a171407debfa67436e13e1390d298a3899e74 (patch) | |
tree | f36d85988e33ea8c6b86356d137fd78bb816b2aa /tests/Tests/Writers | |
parent | aca695ab0bb5e18e3a2ea6d7b81d9814885c1b00 (diff) | |
download | pandoc-595a171407debfa67436e13e1390d298a3899e74.tar.gz |
Add option for top-level division type
The `--chapters` option is replaced with `--top-level-division` which allows
users to specify the type as which top-level headers should be output. Possible
values are `section` (the default), `chapter`, or `part`.
The formats LaTeX, ConTeXt, and Docbook allow `part` as top-level division, TEI
only allows to set the `type` attribute on `div` containers. The writers are
altered to respect this option in a sensible way.
Diffstat (limited to 'tests/Tests/Writers')
-rw-r--r-- | tests/Tests/Writers/Docbook.hs | 57 | ||||
-rw-r--r-- | tests/Tests/Writers/LaTeX.hs | 61 |
2 files changed, 112 insertions, 6 deletions
diff --git a/tests/Tests/Writers/Docbook.hs b/tests/Tests/Writers/Docbook.hs index d89631af8..0e80bcc05 100644 --- a/tests/Tests/Writers/Docbook.hs +++ b/tests/Tests/Writers/Docbook.hs @@ -8,7 +8,10 @@ import Tests.Helpers import Text.Pandoc.Arbitrary() docbook :: (ToPandoc a) => a -> String -docbook = writeDocbook def{ writerWrapText = WrapNone } . toPandoc +docbook = docbookWithOpts def{ writerWrapText = WrapNone } + +docbookWithOpts :: ToPandoc a => WriterOptions -> a -> String +docbookWithOpts opts = writeDocbook opts . toPandoc {- "my test" =: X =?> Y @@ -226,4 +229,56 @@ tests = [ testGroup "line blocks" ] ] ] + , testGroup "writer options" $ + [ testGroup "top-level division" $ + let + headers = header 1 (text "header1") + <> header 2 (text "header2") + <> header 3 (text "header3") + + docbookTopLevelDiv :: (ToPandoc a) => Division -> a -> String + docbookTopLevelDiv division = + docbookWithOpts def{ writerTopLevelDivision = division } + in + [ test (docbookTopLevelDiv Section) "sections as top-level" $ headers =?> + unlines [ "<sect1>" + , " <title>header1</title>" + , " <sect2>" + , " <title>header2</title>" + , " <sect3>" + , " <title>header3</title>" + , " <para>" + , " </para>" + , " </sect3>" + , " </sect2>" + , "</sect1>" + ] + , test (docbookTopLevelDiv Chapter) "chapters as top-level" $ headers =?> + unlines [ "<chapter>" + , " <title>header1</title>" + , " <sect1>" + , " <title>header2</title>" + , " <sect2>" + , " <title>header3</title>" + , " <para>" + , " </para>" + , " </sect2>" + , " </sect1>" + , "</chapter>" + ] + , test (docbookTopLevelDiv Part) "parts as top-level" $ headers =?> + unlines [ "<part>" + , " <title>header1</title>" + , " <chapter>" + , " <title>header2</title>" + , " <sect1>" + , " <title>header3</title>" + , " <para>" + , " </para>" + , " </sect1>" + , " </chapter>" + , "</part>" + ] + ] + ] ] diff --git a/tests/Tests/Writers/LaTeX.hs b/tests/Tests/Writers/LaTeX.hs index b7f604694..28d6618c1 100644 --- a/tests/Tests/Writers/LaTeX.hs +++ b/tests/Tests/Writers/LaTeX.hs @@ -2,16 +2,19 @@ module Tests.Writers.LaTeX (tests) where import Test.Framework -import Text.Pandoc.Builder -import Text.Pandoc import Tests.Helpers -import Text.Pandoc.Arbitrary() +import Text.Pandoc +import Text.Pandoc.Arbitrary () +import Text.Pandoc.Builder latex :: (ToPandoc a) => a -> String -latex = writeLaTeX def{ writerHighlight = True } . toPandoc +latex = latexWithOpts def{ writerHighlight = True } latexListing :: (ToPandoc a) => a -> String -latexListing = writeLaTeX def{ writerListings = True } . toPandoc +latexListing = latexWithOpts def{ writerListings = True } + +latexWithOpts :: (ToPandoc a) => WriterOptions -> a -> String +latexWithOpts opts = writeLaTeX opts . toPandoc {- "my test" =: X =?> Y @@ -78,4 +81,52 @@ tests = [ testGroup "code blocks" , "backtick" =: code "`nu?`" =?> "\\texttt{\\textasciigrave{}nu?\\textasciigrave{}}" ] + , testGroup "writer options" + [ testGroup "top-level division" $ + let + headers = header 1 (text "header1") + <> header 2 (text "header2") + <> header 3 (text "header3") + + latexTopLevelDiv :: (ToPandoc a) => Division -> a -> String + latexTopLevelDiv division = + latexWithOpts def{ writerTopLevelDivision = division } + + beamerTopLevelDiv :: (ToPandoc a) => Division -> a -> String + beamerTopLevelDiv division = + latexWithOpts def { writerTopLevelDivision = division + , writerBeamer = True } + in + [ test (latexTopLevelDiv Section) "sections as top-level" $ headers =?> + unlines [ "\\section{header1}\n" + , "\\subsection{header2}\n" + , "\\subsubsection{header3}" + ] + , test (latexTopLevelDiv Chapter) "chapters as top-level" $ headers =?> + unlines [ "\\chapter{header1}\n" + , "\\section{header2}\n" + , "\\subsection{header3}" + ] + , test (latexTopLevelDiv Part) "parts as top-level" $ headers =?> + unlines [ "\\part{header1}\n" + , "\\chapter{header2}\n" + , "\\section{header3}" + ] + , test (beamerTopLevelDiv Section) "sections as top-level in beamer" $ headers =?> + unlines [ "\\section{header1}\n" + , "\\subsection{header2}\n" + , "\\subsubsection{header3}" + ] + , test (beamerTopLevelDiv Chapter) "chapters are as part in beamer" $ headers =?> + unlines [ "\\part{header1}\n" + , "\\section{header2}\n" + , "\\subsection{header3}" + ] + , test (beamerTopLevelDiv Part) "parts as top-level in beamer" $ headers =?> + unlines [ "\\part{header1}\n" + , "\\section{header2}\n" + , "\\subsection{header3}" + ] + ] + ] ] |