Skip to content

Commit 7e9be8a

Browse files
SijaAry Borenszweig
authored andcommitted
Fix issue #3772
1 parent 3512d3c commit 7e9be8a

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

spec/std/markdown/markdown_spec.cr

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ describe Markdown do
8080
assert_render "* Hello\nWorld", "<ul><li>Hello\nWorld</li></ul>"
8181
assert_render "Params:\n* Foo\n* Bar", "<p>Params:</p>\n\n<ul><li>Foo</li><li>Bar</li></ul>"
8282

83+
assert_render "* Hello\n* World\n\n```\nHello World\n```", "<ul><li>Hello</li><li>World</li></ul>\n\n<pre><code>Hello World</code></pre>"
84+
assert_render "1. Hello\n2. World\n\n```\nHello World\n```", "<ol><li>Hello</li><li>World</li></ol>\n\n<pre><code>Hello World</code></pre>"
85+
8386
assert_render "+ Hello", "<ul><li>Hello</li></ul>"
8487
assert_render "- Hello", "<ul><li>Hello</li></ul>"
8588

src/markdown/parser.cr

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class Markdown::Parser
55
@lines : Array(String)
66

77
def initialize(text : String, @renderer : Renderer)
8-
@lines = text.lines.map &.chomp
8+
@lines = text.lines
99
@line = 0
1010
end
1111

@@ -210,6 +210,8 @@ class Markdown::Parser
210210
@renderer.begin_unordered_list
211211

212212
while true
213+
break unless starts_with_bullet_list_marker?(@lines[@line], prefix)
214+
213215
join_next_lines continue_on: nil, stop_on: UnorderedList.new(prefix)
214216
line = @lines[@line]
215217

@@ -223,8 +225,6 @@ class Markdown::Parser
223225
next
224226
end
225227

226-
break unless starts_with_bullet_list_marker?(line, prefix)
227-
228228
if line.starts_with?(" ") && previous_line_is_not_intended_and_starts_with_bullet_list_marker?(prefix)
229229
@renderer.begin_unordered_list
230230
end
@@ -253,6 +253,8 @@ class Markdown::Parser
253253
@renderer.begin_ordered_list
254254

255255
while true
256+
break unless starts_with_digits_dot? @lines[@line]
257+
256258
join_next_lines continue_on: nil, stop_on: :ordered_list
257259
line = @lines[@line]
258260

@@ -266,8 +268,6 @@ class Markdown::Parser
266268
next
267269
end
268270

269-
break unless starts_with_digits_dot? line
270-
271271
@renderer.begin_list_item
272272
process_line line.byte_slice(line.index('.').not_nil! + 1)
273273
@renderer.end_list_item

0 commit comments

Comments
 (0)