mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/rdoc] Allow cross references to operator methods
Make operator methods, e.g., `Regexp#=~`, `Integer#<=>`, cross
reference targets.
5d332a4128
This commit is contained in:
parent
dec96dd897
commit
202f690a5e
2 changed files with 24 additions and 22 deletions
|
@ -19,7 +19,7 @@ class RDoc::CrossReference
|
|||
#
|
||||
# See CLASS_REGEXP_STR
|
||||
|
||||
METHOD_REGEXP_STR = '([A-Za-z]\w*[!?=]?|%|===?|\[\]=?|<<|>>|\+@|-@|-|\+|\*)(?:\([\w.+*/=<>-]*\))?'
|
||||
METHOD_REGEXP_STR = '([A-Za-z]\w*[!?=]?|%|=(?:==?|~)|![=~]|\[\]=?|<(?:<|=>?)?|>[>=]?|[-+!]@?|\*\*?|[/%])(?:\([\w.+*/=<>-]*\))?'
|
||||
|
||||
##
|
||||
# Regular expressions matching text that should potentially have
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
require File.expand_path '../xref_test_case', __FILE__
|
||||
|
||||
class TestRDocCrossReference < XrefTestCase
|
||||
OPERATOR_METHODS = %w'== === != =~ !~ < > <= >= <=> [] []= << >> -@ +@ ! - + * / % ** !@'
|
||||
|
||||
def setup
|
||||
super
|
||||
|
@ -18,9 +19,9 @@ class TestRDocCrossReference < XrefTestCase
|
|||
end
|
||||
|
||||
def test_METHOD_REGEXP_STR
|
||||
re = /#{RDoc::CrossReference::METHOD_REGEXP_STR}/
|
||||
re = /\A(?:#{RDoc::CrossReference::METHOD_REGEXP_STR})\z/
|
||||
|
||||
%w'== === [] []= << >>'.each do |x|
|
||||
OPERATOR_METHODS.each do |x|
|
||||
re =~ x
|
||||
assert_equal x, $&
|
||||
end
|
||||
|
@ -163,34 +164,35 @@ class TestRDocCrossReference < XrefTestCase
|
|||
assert_ref @c9_a_c_bar, 'C9::B.bar'
|
||||
end
|
||||
|
||||
def test_resolve_method_equals3
|
||||
m = RDoc::AnyMethod.new '', '==='
|
||||
@c1.add_method m
|
||||
|
||||
assert_ref m, '==='
|
||||
end
|
||||
|
||||
def test_resolve_page
|
||||
page = @store.add_file 'README.txt', parser: RDoc::Parser::Simple
|
||||
|
||||
assert_ref page, 'README'
|
||||
end
|
||||
|
||||
def test_resolve_percent
|
||||
i_percent = RDoc::AnyMethod.new nil, '%'
|
||||
i_percent.singleton = false
|
||||
@c1.add_method i_percent
|
||||
def assert_resolve_oeprator(x)
|
||||
@c1.methods_hash.clear
|
||||
|
||||
c_percent = RDoc::AnyMethod.new nil, '%'
|
||||
c_percent.singleton = true
|
||||
@c1.add_method c_percent
|
||||
i_op = RDoc::AnyMethod.new nil, x
|
||||
i_op.singleton = false
|
||||
@c1.add_method i_op
|
||||
|
||||
assert_ref i_percent, '%'
|
||||
assert_ref i_percent, '#%'
|
||||
assert_ref c_percent, '::%'
|
||||
c_op = RDoc::AnyMethod.new nil, x
|
||||
c_op.singleton = true
|
||||
@c1.add_method c_op
|
||||
|
||||
assert_ref i_percent, 'C1#%'
|
||||
assert_ref c_percent, 'C1::%'
|
||||
assert_ref i_op, x
|
||||
assert_ref i_op, "##{x}"
|
||||
assert_ref c_op, "::#{x}"
|
||||
|
||||
assert_ref i_op, "C1##{x}"
|
||||
assert_ref c_op, "C1::#{x}"
|
||||
end
|
||||
|
||||
OPERATOR_METHODS.each do |x|
|
||||
define_method("test_resolve_operator:#{x}") do
|
||||
assert_resolve_oeprator(x)
|
||||
end
|
||||
end
|
||||
|
||||
def test_resolve_no_ref
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue