From fb51077712fbe2bca80b52d8e4b5f96b07980dcf Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 12 Oct 2015 22:44:37 -0700 Subject: Revert "RST writer: tweaks to header normalization." This reverts commit 476b383c578699567ac4630391a15855521ab3d4. --- src/Text/Pandoc/Writers/RST.hs | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs index 70caa319f..754aee29c 100644 --- a/src/Text/Pandoc/Writers/RST.hs +++ b/src/Text/Pandoc/Writers/RST.hs @@ -82,7 +82,7 @@ pandocToRST (Pandoc meta blocks) = do (fmap (trimr . render colwidth) . inlineListToRST) $ deleteMeta "title" $ deleteMeta "subtitle" meta let minLev = findMinHeadingLevel Nothing blocks - body <- blockListToRST' True $ normalizeHeadings minLev 0 blocks + body <- blockListToRST' True $ normalizeHeadings minLev blocks notes <- liftM (reverse . stNotes) get >>= notesToRST -- note that the notes may contain refs, so we do them first refs <- liftM (reverse . stLinks) get >>= refsToRST @@ -102,30 +102,12 @@ pandocToRST (Pandoc meta blocks) = do then return $ renderTemplate' (writerTemplate opts) context else return main where - -- Partial normalization: - -- We use the underline scheme appropriate for the lowest - -- header level found, and we don't normalize headers - -- until we've hit the first header with minimum header - -- level in the fragment. - -- This is intended to help with the problems noted in - -- #2079, while still being flexible enough for use - -- with fragments that might not include the base - -- header level, and might start halfway through a section - -- (see #2394). - normalizeHeadings minLev lev (Header l a i:bs) = - let lev' = if lev == 0 && l == minLev - then minLev - else lev - in if lev' == 0 -- we haven't hit minLev yet - then Header l a i : normalizeHeadings minLev 0 cont ++ - normalizeHeadings minLev 0 bs' - else Header lev' a i : normalizeHeadings minLev (lev' + 1) cont ++ - normalizeHeadings minLev lev' bs' + normalizeHeadings lev (Header l a i:bs) = Header lev a i:normalizeHeadings (lev+1) cont ++ normalizeHeadings lev bs' where (cont,bs') = break (headerLtEq l) bs headerLtEq level (Header l' _ _) = l' <= level headerLtEq _ _ = False - normalizeHeadings minLev lev (b:bs) = b : normalizeHeadings minLev lev bs - normalizeHeadings _ _ [] = [] + normalizeHeadings lev (b:bs) = b:normalizeHeadings lev bs + normalizeHeadings _ [] = [] findMinHeadingLevel Nothing (Header l _a _i:bs) = findMinHeadingLevel (Just l) bs findMinHeadingLevel (Just ol) (Header l _a _i:bs) = findMinHeadingLevel (Just $ if ol>l then l else ol) bs -- cgit v1.2.3