diff options
author | Robert Speicher <rspeicher@gmail.com> | 2019-02-14 21:27:28 +0300 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2019-02-14 21:27:28 +0300 |
commit | 4f7236fe835466015c1c9b4dc9982b4140a36173 (patch) | |
tree | f321ee73d678833b4d0486b01b48e8a262d99883 /lib/banzai/filter | |
parent | a35f16c42c118467fc625c4621d04085a4893d0e (diff) | |
parent | 17380cf90ce6f12ae06384d2d7a1d04bd928e6a5 (diff) |
Merge branch '11-8-stable-prepare-rc5' into '11-8-stable'
Prepare 11.8.0-rc5 release
See merge request gitlab-org/gitlab-ce!25254
Diffstat (limited to 'lib/banzai/filter')
-rw-r--r-- | lib/banzai/filter/footnote_filter.rb | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/lib/banzai/filter/footnote_filter.rb b/lib/banzai/filter/footnote_filter.rb index 97527976437..de133774dfa 100644 --- a/lib/banzai/filter/footnote_filter.rb +++ b/lib/banzai/filter/footnote_filter.rb @@ -29,21 +29,30 @@ module Banzai # Sanitization stripped off the section wrapper - add it back in first_footnote.parent.wrap('<section class="footnotes">') rand_suffix = "-#{random_number}" + modified_footnotes = {} doc.css('sup > a[id]').each do |link_node| ref_num = link_node[:id].delete_prefix(FOOTNOTE_LINK_ID_PREFIX) footnote_node = doc.at_css("li[id=#{fn_id(ref_num)}]") - backref_node = footnote_node.at_css("a[href=\"##{fnref_id(ref_num)}\"]") - if ref_num =~ INTEGER_PATTERN && footnote_node && backref_node - link_node[:href] += rand_suffix - link_node[:id] += rand_suffix - footnote_node[:id] += rand_suffix - backref_node[:href] += rand_suffix + if INTEGER_PATTERN.match?(ref_num) && (footnote_node || modified_footnotes[ref_num]) + link_node[:href] += rand_suffix + link_node[:id] += rand_suffix # Sanitization stripped off class - add it back in link_node.parent.append_class('footnote-ref') - backref_node.append_class('footnote-backref') + + unless modified_footnotes[ref_num] + footnote_node[:id] += rand_suffix + backref_node = footnote_node.at_css("a[href=\"##{fnref_id(ref_num)}\"]") + + if backref_node + backref_node[:href] += rand_suffix + backref_node.append_class('footnote-backref') + end + + modified_footnotes[ref_num] = true + end end end |