Defect #35036 ยป 0001-markdown_formatter-extract_sections-fix.patch
lib/redmine/wiki_formatting/markdown/formatter.rb | ||
---|---|---|
89 | 89 |
i = 0 |
90 | 90 |
l = 1 |
91 | 91 |
inside_pre = false |
92 |
@text.split(/(^(?:.+\r?\n\r?(?:\=+|\-+)|#+.+|(?:~~~|```).*)\s*$)/).each do |part|
|
|
92 |
@text.split(/(^(?:\S+\r?\n\r?(?:\=+|\-+)|#+.+|(?:~~~|```).*)\s*$)/).each do |part|
|
|
93 | 93 |
level = nil |
94 | 94 |
if part =~ /\A(~{3,}|`{3,})(\s*\S+)?\s*$/ |
95 | 95 |
if !inside_pre |
test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb | ||
---|---|---|
180 | 180 |
) |
181 | 181 |
end |
182 | 182 | |
183 |
STR_SETEXT_LIKE = [ |
|
184 |
# 0 |
|
185 |
<<~STR.chomp, |
|
186 |
# Title |
|
187 |
STR |
|
188 |
# 1 |
|
189 |
<<~STR.chomp, |
|
190 |
## Heading 2 |
|
191 | ||
192 |
Thematic breaks - not be confused with setext headings. |
|
193 | ||
194 |
--- |
|
195 | ||
196 |
Preceding CRLF is the default for web-submitted data. |
|
197 |
\r |
|
198 |
---\r |
|
199 |
\r |
|
200 | ||
201 |
A space-only line does not mean much. |
|
202 |
\s |
|
203 |
--- |
|
204 | ||
205 |
End of thematic breaks. |
|
206 |
STR |
|
207 |
# 2 |
|
208 |
<<~STR.chomp, |
|
209 |
## Heading 2 |
|
210 |
Nulla nunc nisi, egestas in ornare vel, posuere ac libero. |
|
211 |
STR |
|
212 |
] |
|
213 | ||
214 |
STR_RARE_SETEXT_LIKE = [ |
|
215 |
# 0 |
|
216 |
<<~STR.chomp, |
|
217 |
# Title |
|
218 |
STR |
|
219 |
# 1 |
|
220 |
<<~STR.chomp, |
|
221 |
## Heading 2 |
|
222 | ||
223 |
- item |
|
224 |
one |
|
225 |
- |
|
226 |
not a heading |
|
227 |
STR |
|
228 |
# 2 |
|
229 |
<<~STR.chomp, |
|
230 |
## Heading 2 |
|
231 |
Nulla nunc nisi, egestas in ornare vel, posuere ac libero. |
|
232 |
STR |
|
233 |
] |
|
234 | ||
235 |
def test_get_section_should_ignore_setext_like_text |
|
236 |
text = STR_SETEXT_LIKE.join("\n\n") |
|
237 |
assert_section_with_hash STR_SETEXT_LIKE[1], text, 2 |
|
238 |
assert_section_with_hash STR_SETEXT_LIKE[2], text, 3 |
|
239 |
end |
|
240 | ||
241 |
def test_get_section_should_ignore_rare_setext_like_text |
|
242 |
begin |
|
243 |
text = STR_RARE_SETEXT_LIKE.join("\n\n") |
|
244 |
assert_section_with_hash STR_RARE_SETEXT_LIKE[1], text, 2 |
|
245 |
assert_section_with_hash STR_RARE_SETEXT_LIKE[2], text, 3 |
|
246 |
rescue Minitest::Assertion => e |
|
247 |
skip "Section extraction is currently limited, see #35037. Known error: #{e.message}" |
|
248 |
end |
|
249 |
refute "This test should be adjusted when fixing the known error." |
|
250 |
end |
|
251 | ||
183 | 252 |
def test_should_support_underlined_text |
184 | 253 |
text = 'This _text_ should be underlined' |
185 | 254 |
assert_equal '<p>This <u>text</u> should be underlined</p>', @formatter.new(text).to_html.strip |