@@ -58,7 +58,7 @@ def init_link_notation_regexp_handlings
5858 # Creates a link to the reference +name+ if the name exists. If +text+ is
5959 # given it is used as the link text, otherwise +name+ is used.
6060
61- def cross_reference name , text = nil , code = true
61+ def cross_reference name , text = nil , code = true , rdoc_ref : false
6262 lookup = name
6363
6464 name = name [ 1 ..-1 ] unless @show_hash if name [ 0 , 1 ] == '#'
@@ -70,7 +70,7 @@ def cross_reference name, text = nil, code = true
7070 text ||= name
7171 end
7272
73- link lookup , text , code
73+ link lookup , text , code , rdoc_ref : rdoc_ref
7474 end
7575
7676 ##
@@ -92,17 +92,22 @@ def handle_regexp_CROSSREF(target)
9292 return name if name =~ /\A [a-z]*\z /
9393 end
9494
95- cross_reference name
95+ cross_reference name , rdoc_ref : false
9696 end
9797
9898 ##
9999 # Handles <tt>rdoc-ref:</tt> scheme links and allows RDoc::Markup::ToHtml to
100100 # handle other schemes.
101101
102102 def handle_regexp_HYPERLINK target
103- return cross_reference $' if target . text =~ / \A rdoc-ref:/
103+ url = target . text
104104
105- super
105+ case url
106+ when /\A rdoc-ref:/
107+ cross_reference $', rdoc_ref : true
108+ else
109+ super
110+ end
106111 end
107112
108113 ##
@@ -117,8 +122,8 @@ def handle_regexp_RDOCLINK target
117122 url = target . text
118123
119124 case url
120- when /\A rdoc-ref:/ then
121- cross_reference $'
125+ when /\A rdoc-ref:/
126+ cross_reference $', rdoc_ref : true
122127 else
123128 super
124129 end
@@ -129,16 +134,18 @@ def handle_regexp_RDOCLINK target
129134 # RDoc::Markup::ToHtml to handle other schemes.
130135
131136 def gen_url url , text
132- return super unless url =~ /\A rdoc-ref:/
133-
134- name = $'
135- cross_reference name , text , name == text
137+ if url =~ /\A rdoc-ref:/
138+ name = $'
139+ cross_reference name , text , name == text , rdoc_ref : true
140+ else
141+ super
142+ end
136143 end
137144
138145 ##
139146 # Creates an HTML link to +name+ with the given +text+.
140147
141- def link name , text , code = true
148+ def link name , text , code = true , rdoc_ref : false
142149 if !( name . end_with? ( '+@' , '-@' ) ) and name =~ /(.*[^#:])?@/
143150 name = $1
144151 label = $'
@@ -148,6 +155,9 @@ def link name, text, code = true
148155
149156 case ref
150157 when String then
158+ if rdoc_ref && @options . warn_missing_rdoc_ref
159+ puts "#{ @from_path } : `rdoc-ref:#{ name } ` can't be resolved for `#{ text } `"
160+ end
151161 ref
152162 else
153163 path = ref ? ref . as_href ( @from_path ) : +""
0 commit comments