diff options
author | aycabta <[email protected]> | 2021-03-16 18:59:22 +0900 |
---|---|---|
committer | aycabta <[email protected]> | 2021-04-03 01:21:38 +0900 |
commit | e84d275fe6d0c14ba58ce73b13323879c060b7ae (patch) | |
tree | a25d05ba7dfec8a849f6f105638dfc88f6590503 /lib/rdoc | |
parent | 54aa11efa8b1be2c5d20402890d6d2fa90aa19a8 (diff) |
[ruby/rdoc] Treat other tags as word boundaries
https://github.com/ruby/rdoc/commit/8222f85a17
Diffstat (limited to 'lib/rdoc')
-rw-r--r-- | lib/rdoc/markup/attribute_manager.rb | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/rdoc/markup/attribute_manager.rb b/lib/rdoc/markup/attribute_manager.rb index 64ef7fd159..2de8a7c9ee 100644 --- a/lib/rdoc/markup/attribute_manager.rb +++ b/lib/rdoc/markup/attribute_manager.rb @@ -140,6 +140,11 @@ class RDoc::Markup::AttributeManager # character def convert_attrs(str, attrs, exclusive = false) + convert_attrs_matching_word_pairs(str, attrs, exclusive) + convert_attrs_word_pair_map(str, attrs, exclusive) + end + + def convert_attrs_matching_word_pairs(str, attrs, exclusive) # first do matching ones tags = @matching_word_pairs.select { |start, bitmap| if exclusive && exclusive?(bitmap) @@ -149,21 +154,25 @@ class RDoc::Markup::AttributeManager else false end - }.keys.join("") + }.keys + return if tags.empty? + all_tags = @matching_word_pairs.keys - re = /(^|\W)([#{tags}])([#\\]?[\w:.\/\[\]-]+?\S?)\2(\W|$)/ + re = /(^|\W|[#{all_tags.join("")}])([#{tags.join("")}])(\2*[#\\]?[\w:.\/\[\]-]+?\S?)\2(?!\2)([#{all_tags.join("")}]|\W|$)/ 1 while str.gsub!(re) { |orig| attr = @matching_word_pairs[$2] - updated = attrs.set_attrs($`.length + $1.length + $2.length, $3.length, attr) - if updated + attr_updated = attrs.set_attrs($`.length + $1.length + $2.length, $3.length, attr) + if attr_updated $1 + NULL * $2.length + $3 + NULL * $2.length + $4 else $1 + NON_PRINTING_START + $2 + NON_PRINTING_END + $3 + NON_PRINTING_START + $2 + NON_PRINTING_END + $4 end } str.delete!(NON_PRINTING_START + NON_PRINTING_END) + end + def convert_attrs_word_pair_map(str, attrs, exclusive) # then non-matching unless @word_pair_map.empty? then @word_pair_map.each do |regexp, attr| |