1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-01-31 11:37:14 +00:00

Markdown text sections broken by thematic breaks (horizontal rules) (#35036).

Patch by Martin Cizek.


git-svn-id: http://svn.redmine.org/redmine/trunk@20998 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA 2021-05-14 09:39:12 +00:00
parent 91379493cd
commit 183642ba20
2 changed files with 70 additions and 1 deletions

View File

@ -89,7 +89,7 @@ module Redmine
i = 0
l = 1
inside_pre = false
@text.split(/(^(?:.+\r?\n\r?(?:\=+|\-+)|#+.+|(?:~~~|```).*)\s*$)/).each do |part|
@text.split(/(^(?:\S+\r?\n\r?(?:\=+|\-+)|#+.+|(?:~~~|```).*)\s*$)/).each do |part|
level = nil
if part =~ /\A(~{3,}|`{3,})(\s*\S+)?\s*$/
if !inside_pre

View File

@ -180,6 +180,75 @@ class Redmine::WikiFormatting::MarkdownFormatterTest < ActionView::TestCase
)
end
STR_SETEXT_LIKE = [
# 0
<<~STR.chomp,
# Title
STR
# 1
<<~STR.chomp,
## Heading 2
Thematic breaks - not be confused with setext headings.
---
Preceding CRLF is the default for web-submitted data.
\r
---\r
\r
A space-only line does not mean much.
\s
---
End of thematic breaks.
STR
# 2
<<~STR.chomp,
## Heading 2
Nulla nunc nisi, egestas in ornare vel, posuere ac libero.
STR
]
STR_RARE_SETEXT_LIKE = [
# 0
<<~STR.chomp,
# Title
STR
# 1
<<~STR.chomp,
## Heading 2
- item
one
-
not a heading
STR
# 2
<<~STR.chomp,
## Heading 2
Nulla nunc nisi, egestas in ornare vel, posuere ac libero.
STR
]
def test_get_section_should_ignore_setext_like_text
text = STR_SETEXT_LIKE.join("\n\n")
assert_section_with_hash STR_SETEXT_LIKE[1], text, 2
assert_section_with_hash STR_SETEXT_LIKE[2], text, 3
end
def test_get_section_should_ignore_rare_setext_like_text
begin
text = STR_RARE_SETEXT_LIKE.join("\n\n")
assert_section_with_hash STR_RARE_SETEXT_LIKE[1], text, 2
assert_section_with_hash STR_RARE_SETEXT_LIKE[2], text, 3
rescue Minitest::Assertion => e
skip "Section extraction is currently limited, see #35037. Known error: #{e.message}"
end
assert_not "This test should be adjusted when fixing the known error."
end
def test_should_support_underlined_text
text = 'This _text_ should be underlined'
assert_equal '<p>This <u>text</u> should be underlined</p>', @formatter.new(text).to_html.strip