summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/redmine/wiki_formatting/textile/redcloth3.rb2
-rw-r--r--test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb17
2 files changed, 18 insertions, 1 deletions
diff --git a/lib/redmine/wiki_formatting/textile/redcloth3.rb b/lib/redmine/wiki_formatting/textile/redcloth3.rb
index 9062fca0d..04ac3ba56 100644
--- a/lib/redmine/wiki_formatting/textile/redcloth3.rb
+++ b/lib/redmine/wiki_formatting/textile/redcloth3.rb
@@ -1042,7 +1042,7 @@ class RedCloth3 < String
end
def footnote_ref( text )
- text.gsub!(/\b\[([0-9]+?)\](\s)?/,
+ text.gsub!(/(?<=[\p{Word}\]])\[([0-9]+?)\](\s)?/,
'<sup><a href="#fn\1">\1</a></sup>\2')
end
diff --git a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb
index 24f9886ed..77eb01734 100644
--- a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb
+++ b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb
@@ -770,6 +770,23 @@ class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase
}, false)
end
+ def test_should_allow_multiple_footnotes
+ text = <<~STR
+ Some demo[1][2] And a sentence.[1]
+
+ fn1. One
+
+ fn2. Two
+ STR
+
+ expected = <<~EXPECTED
+ <p>Some demo<sup><a href="#fn1">1</a></sup><sup><a href="#fn2">2</a></sup> And a sentence.[1]</p>
+ <p id="fn1" class="footnote"><sup>1</sup> One</p>
+ <p id="fn2" class="footnote"><sup>2</sup> Two</p>
+ EXPECTED
+ assert_equal expected.gsub(%r{[\r\n\t]}, ''), to_html(text).gsub(%r{[\r\n\t]}, '')
+ end
+
private
def assert_html_output(to_test, expect_paragraph = true)