Merge pull request #2405 from lierdakil/rest-normalize-amend
[RST Writer] Don't normalize heading levels below input minimum
This commit is contained in:
commit
54526665c3
2 changed files with 32 additions and 1 deletions
|
@ -81,7 +81,8 @@ pandocToRST (Pandoc meta blocks) = do
|
|||
(fmap (render colwidth) . blockListToRST)
|
||||
(fmap (trimr . render colwidth) . inlineListToRST)
|
||||
$ deleteMeta "title" $ deleteMeta "subtitle" meta
|
||||
body <- blockListToRST' True $ normalizeHeadings 1 blocks
|
||||
let minLev = findMinHeadingLevel Nothing 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
|
||||
|
@ -107,6 +108,11 @@ pandocToRST (Pandoc meta blocks) = do
|
|||
headerLtEq _ _ = False
|
||||
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
|
||||
findMinHeadingLevel l (_:bs) = findMinHeadingLevel l bs
|
||||
findMinHeadingLevel l [] = fromMaybe 1 l
|
||||
|
||||
-- | Return RST representation of reference key table.
|
||||
refsToRST :: Refs -> State WriterState Doc
|
||||
|
|
|
@ -75,5 +75,30 @@ tests = [ testGroup "rubrics"
|
|||
, ""
|
||||
, "Header 2"
|
||||
, "--------"]
|
||||
, "minimal heading levels" =:
|
||||
header 2 (text "Header 1") <>
|
||||
header 3 (text "Header 2") <>
|
||||
header 2 (text "Header 1") <>
|
||||
header 4 (text "Header 2") <>
|
||||
header 5 (text "Header 3") <>
|
||||
header 3 (text "Header 2") =?>
|
||||
unlines
|
||||
[ "Header 1"
|
||||
, "--------"
|
||||
, ""
|
||||
, "Header 2"
|
||||
, "~~~~~~~~"
|
||||
, ""
|
||||
, "Header 1"
|
||||
, "--------"
|
||||
, ""
|
||||
, "Header 2"
|
||||
, "~~~~~~~~"
|
||||
, ""
|
||||
, "Header 3"
|
||||
, "^^^^^^^^"
|
||||
, ""
|
||||
, "Header 2"
|
||||
, "~~~~~~~~"]
|
||||
]
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue