[ruby/rdoc] Process crossref before tidylink
The crossref must be linked before tidylink because Klass.method[:sym] will be processed as a tidylink first and will be broken. https://github.com/ruby/rdoc/commit/0f47baf6d2
This commit is contained in:
parent
c79f9ea606
commit
f52a4690f8
@ -52,12 +52,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|||||||
@th = nil
|
@th = nil
|
||||||
@hard_break = "<br>\n"
|
@hard_break = "<br>\n"
|
||||||
|
|
||||||
# external links
|
init_regexp_handlings
|
||||||
@markup.add_regexp_handling(/(?:link:|https?:|mailto:|ftp:|irc:|www\.)\S+\w/,
|
|
||||||
:HYPERLINK)
|
|
||||||
|
|
||||||
add_regexp_handling_RDOCLINK
|
|
||||||
add_regexp_handling_TIDYLINK
|
|
||||||
|
|
||||||
init_tags
|
init_tags
|
||||||
end
|
end
|
||||||
@ -66,6 +61,24 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter
|
|||||||
#
|
#
|
||||||
# These methods are used by regexp handling markup added by RDoc::Markup#add_regexp_handling.
|
# These methods are used by regexp handling markup added by RDoc::Markup#add_regexp_handling.
|
||||||
|
|
||||||
|
##
|
||||||
|
# Adds regexp handlings.
|
||||||
|
|
||||||
|
def init_regexp_handlings
|
||||||
|
# external links
|
||||||
|
@markup.add_regexp_handling(/(?:link:|https?:|mailto:|ftp:|irc:|www\.)\S+\w/,
|
||||||
|
:HYPERLINK)
|
||||||
|
init_link_notation_regexp_handlings
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Adds regexp handlings about link notations.
|
||||||
|
|
||||||
|
def init_link_notation_regexp_handlings
|
||||||
|
add_regexp_handling_RDOCLINK
|
||||||
|
add_regexp_handling_TIDYLINK
|
||||||
|
end
|
||||||
|
|
||||||
def handle_RDOCLINK url # :nodoc:
|
def handle_RDOCLINK url # :nodoc:
|
||||||
case url
|
case url
|
||||||
when /^rdoc-ref:/
|
when /^rdoc-ref:/
|
||||||
|
@ -39,10 +39,18 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
|
|||||||
@hyperlink_all = @options.hyperlink_all
|
@hyperlink_all = @options.hyperlink_all
|
||||||
@show_hash = @options.show_hash
|
@show_hash = @options.show_hash
|
||||||
|
|
||||||
crossref_re = @hyperlink_all ? ALL_CROSSREF_REGEXP : CROSSREF_REGEXP
|
@cross_reference = RDoc::CrossReference.new @context
|
||||||
|
end
|
||||||
|
|
||||||
|
def init_link_notation_regexp_handlings
|
||||||
|
add_regexp_handling_RDOCLINK
|
||||||
|
|
||||||
|
# The crossref must be linked before tidylink because Klass.method[:sym]
|
||||||
|
# will be processed as a tidylink first and will be broken.
|
||||||
|
crossref_re = @options.hyperlink_all ? ALL_CROSSREF_REGEXP : CROSSREF_REGEXP
|
||||||
@markup.add_regexp_handling crossref_re, :CROSSREF
|
@markup.add_regexp_handling crossref_re, :CROSSREF
|
||||||
|
|
||||||
@cross_reference = RDoc::CrossReference.new @context
|
add_regexp_handling_TIDYLINK
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
|
@ -151,6 +151,13 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase
|
|||||||
REGEXP_HANDLING('#m')
|
REGEXP_HANDLING('#m')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_handle_regexp_CROSSREF_with_arg_looks_like_TIDYLINK
|
||||||
|
result = @to.convert 'C1.m[:sym]'
|
||||||
|
|
||||||
|
assert_equal para("<a href=\"C1.html#method-c-m\"><code>C1.m[:sym]</code></a>"), result,
|
||||||
|
'C1.m[:sym]'
|
||||||
|
end
|
||||||
|
|
||||||
def test_handle_regexp_HYPERLINK_rdoc
|
def test_handle_regexp_HYPERLINK_rdoc
|
||||||
readme = @store.add_file 'README.txt'
|
readme = @store.add_file 'README.txt'
|
||||||
readme.parser = RDoc::Parser::Simple
|
readme.parser = RDoc::Parser::Simple
|
||||||
|
Loading…
x
Reference in New Issue
Block a user