Markdown writer: fixed inconsistent spacing issue.
Previously a tight bullet sublist got rendered with a blank line after, while a tight ordered sublist did not. Now we don't get the blank line in either case. Closes #3232.
This commit is contained in:
parent
dec0ff3693
commit
064e3f8c55
4 changed files with 21 additions and 15 deletions
|
@ -657,19 +657,23 @@ gridTable opts headless _aligns widths headers' rawRows = do
|
|||
else head' $$ border '='
|
||||
return $ border '-' $$ head'' $$ body $$ border '-'
|
||||
|
||||
itemEndsWithTightList :: [Block] -> Bool
|
||||
itemEndsWithTightList bs =
|
||||
case bs of
|
||||
[Plain _, BulletList xs] -> isTightList xs
|
||||
[Plain _, OrderedList _ xs] -> isTightList xs
|
||||
_ -> False
|
||||
|
||||
-- | Convert bullet list item (list of blocks) to markdown.
|
||||
bulletListItemToMarkdown :: WriterOptions -> [Block] -> MD Doc
|
||||
bulletListItemToMarkdown opts items = do
|
||||
contents <- blockListToMarkdown opts items
|
||||
bulletListItemToMarkdown opts bs = do
|
||||
contents <- blockListToMarkdown opts bs
|
||||
let sps = replicate (writerTabStop opts - 2) ' '
|
||||
let start = text ('-' : ' ' : sps)
|
||||
-- remove trailing blank line if it is a tight list
|
||||
let contents' = case reverse items of
|
||||
(BulletList xs:_) | isTightList xs ->
|
||||
chomp contents <> cr
|
||||
(OrderedList _ xs:_) | isTightList xs ->
|
||||
chomp contents <> cr
|
||||
_ -> contents
|
||||
-- remove trailing blank line if item ends with a tight list
|
||||
let contents' = if itemEndsWithTightList bs
|
||||
then chomp contents <> cr
|
||||
else contents
|
||||
return $ hang (writerTabStop opts) start $ contents' <> cr
|
||||
|
||||
-- | Convert ordered list item (a list of blocks) to markdown.
|
||||
|
@ -677,13 +681,17 @@ orderedListItemToMarkdown :: WriterOptions -- ^ options
|
|||
-> String -- ^ list item marker
|
||||
-> [Block] -- ^ list item (list of blocks)
|
||||
-> MD Doc
|
||||
orderedListItemToMarkdown opts marker items = do
|
||||
contents <- blockListToMarkdown opts items
|
||||
orderedListItemToMarkdown opts marker bs = do
|
||||
contents <- blockListToMarkdown opts bs
|
||||
let sps = case length marker - writerTabStop opts of
|
||||
n | n > 0 -> text $ replicate n ' '
|
||||
_ -> text " "
|
||||
let start = text marker <> sps
|
||||
return $ hang (writerTabStop opts) start $ contents <> cr
|
||||
-- remove trailing blank line if item ends with a tight list
|
||||
let contents' = if itemEndsWithTightList bs
|
||||
then chomp contents <> cr
|
||||
else contents
|
||||
return $ hang (writerTabStop opts) start $ contents' <> cr
|
||||
|
||||
-- | Convert definition list item (label, list of blocks) to markdown.
|
||||
definitionListItemToMarkdown :: WriterOptions
|
||||
|
|
|
@ -210,7 +210,6 @@ Here’s another:
|
|||
- Fee
|
||||
- Fie
|
||||
- Foe
|
||||
|
||||
3. Third
|
||||
|
||||
Same thing but with paragraphs:
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
</outline>
|
||||
<outline text="Ordered" _note="Tight: 1. First 2. Second 3. Third and: 1. One 2. Two 3. Three Loose using tabs: 1. First 2. Second 3. Third and using spaces: 1. One 2. Two 3. Three Multiple paragraphs: 1. Item 1, graf one. Item 1. graf two. The quick brown fox jumped over the lazy dog’s back. 2. Item 2. 3. Item 3. ">
|
||||
</outline>
|
||||
<outline text="Nested" _note="- Tab - Tab - Tab Here’s another: 1. First 2. Second: - Fee - Fie - Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: - Fee - Fie - Foe 3. Third ">
|
||||
<outline text="Nested" _note="- Tab - Tab - Tab Here’s another: 1. First 2. Second: - Fee - Fie - Foe 3. Third Same thing but with paragraphs: 1. First 2. Second: - Fee - Fie - Foe 3. Third ">
|
||||
</outline>
|
||||
<outline text="Tabs and spaces" _note="- this is a list item indented with tabs - this is a list item indented with spaces - this is an example list item indented with tabs - this is an example list item indented with spaces ">
|
||||
</outline>
|
||||
|
|
|
@ -215,7 +215,6 @@ Here’s another:
|
|||
- Fee
|
||||
- Fie
|
||||
- Foe
|
||||
|
||||
3. Third
|
||||
|
||||
Same thing but with paragraphs:
|
||||
|
|
Loading…
Add table
Reference in a new issue