From 663cfc2fbd0ff83f74dcde53e3cc98130fb645e0 Mon Sep 17 00:00:00 2001 From: John MacFarlane <fiddlosopher@gmail.com> Date: Fri, 27 Jan 2012 11:30:50 -0800 Subject: Docbook writer: Use sect1, sect2, etc. instead of section. --- src/Text/Pandoc/Writers/Docbook.hs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/Text/Pandoc/Writers/Docbook.hs b/src/Text/Pandoc/Writers/Docbook.hs index f3ac726a9..878d2face 100644 --- a/src/Text/Pandoc/Writers/Docbook.hs +++ b/src/Text/Pandoc/Writers/Docbook.hs @@ -69,11 +69,12 @@ writeDocbook opts (Pandoc (Meta tit auths dat) blocks) = then Just $ writerColumns opts else Nothing render' = render colwidth - opts' = if "</book>" `isSuffixOf` + opts' = if "/book>" `isSuffixOf` (removeTrailingSpace $ writerTemplate opts) then opts{ writerChapters = True } else opts - main = render' $ vcat (map (elementToDocbook opts') elements) + startLvl = if writerChapters opts' then 0 else 1 + main = render' $ vcat (map (elementToDocbook opts' startLvl) elements) context = writerVariables opts ++ [ ("body", main) , ("title", render' title) @@ -84,19 +85,20 @@ writeDocbook opts (Pandoc (Meta tit auths dat) blocks) = else main -- | Convert an Element to Docbook. -elementToDocbook :: WriterOptions -> Element -> Doc -elementToDocbook opts (Blk block) = blockToDocbook opts block -elementToDocbook opts (Sec _ _num id' title elements) = +elementToDocbook :: WriterOptions -> Int -> Element -> Doc +elementToDocbook opts _ (Blk block) = blockToDocbook opts block +elementToDocbook opts lvl (Sec _ _num id' title elements) = -- Docbook doesn't allow sections with no content, so insert some if needed let elements' = if null elements then [Blk (Para [])] else elements - tag = if writerChapters opts - then "chapter" - else "section" + tag = case lvl of + n | n == 0 -> "chapter" + | n >= 1 && n <= 5 -> "sect" ++ show n + | otherwise -> "simplesect" in inTags True tag [("id",id')] $ inTagsSimple "title" (inlinesToDocbook opts title) $$ - vcat (map (elementToDocbook opts{ writerChapters = False }) elements') + vcat (map (elementToDocbook opts (lvl + 1)) elements') -- | Convert a list of Pandoc blocks to Docbook. blocksToDocbook :: WriterOptions -> [Block] -> Doc -- cgit v1.2.3