diff --git a/lib/redmine/wiki_formatting/markdown/formatter.rb b/lib/redmine/wiki_formatting/markdown/formatter.rb index 4afbc2fdd..d6139a73e 100644 --- a/lib/redmine/wiki_formatting/markdown/formatter.rb +++ b/lib/redmine/wiki_formatting/markdown/formatter.rb @@ -90,15 +90,13 @@ module Redmine i = 0 l = 1 inside_pre = false - @text.split(/(^(?:.+\r?\n\r?(?:\=+|\-+)|#+.+|~~~.*)\s*$)/).each do |part| + @text.split(/(^(?:.+\r?\n\r?(?:\=+|\-+)|#+.+|(?:~~~|```).*)\s*$)/).each do |part| level = nil - if part =~ /\A~{3,}(\S+)?\s*$/ - if $1 - if !inside_pre - inside_pre = true - end - else - inside_pre = !inside_pre + if part =~ /\A(~{3,}|`{3,})(\S+)?\s*$/ + if !inside_pre + inside_pre = true + elsif !$2 + inside_pre = false end elsif inside_pre # nop diff --git a/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb b/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb index b8aa37ff2..f41ad4218 100644 --- a/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb @@ -80,5 +80,60 @@ STR assert_equal '
This is a link
', @formatter.new(text).to_html.strip end + STR_WITH_PRE = [ + # 0 +"# Title + +Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas sed libero.", + # 1 +"## Heading 2 + +~~~ruby + def foo + end +~~~ + +Morbi facilisis accumsan orci non pharetra. + +``` +Pre Content: + +## Inside pre + +