diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-10-29 06:23:21 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-10-29 06:23:21 +0000 |
commit | b9ca9169ba7c71a507fb3d4bcd6373c9c23edc7f (patch) | |
tree | 57d0acdb6bbc29d4f499608effbf1697cf18c677 | |
parent | c80f3f709fc94dac52726b5d9a2f486e6c3be745 (diff) |
Mark up code inside link text as <code>
Merged https://github.com/ruby/rdoc/pull/660
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | lib/rdoc/markup/to_html_crossref.rb | 22 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_markup_to_html_crossref.rb | 46 |
2 files changed, 38 insertions, 30 deletions
diff --git a/lib/rdoc/markup/to_html_crossref.rb b/lib/rdoc/markup/to_html_crossref.rb index 6020263799..2fbddeb83b 100644 --- a/lib/rdoc/markup/to_html_crossref.rb +++ b/lib/rdoc/markup/to_html_crossref.rb @@ -49,16 +49,19 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml # Creates a link to the reference +name+ if the name exists. If +text+ is # given it is used as the link text, otherwise +name+ is used. - def cross_reference name, text = nil + def cross_reference name, text = nil, code = true lookup = name name = name[1..-1] unless @show_hash if name[0, 1] == '#' - name = "#{CGI.unescape $'} at #{$1}" if name =~ /(.*[^#:])@/ - - text = name unless text + if name =~ /(.*[^#:])@/ + text ||= "#{CGI.unescape $'} at <code>#{$1}</code>" + code = false + else + text ||= name + end - link lookup, text + link lookup, text, code end ## @@ -119,13 +122,14 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml def gen_url url, text return super unless url =~ /\Ardoc-ref:/ - cross_reference $', text + name = $' + cross_reference name, text, name == text end ## # Creates an HTML link to +name+ with the given +text+. - def link name, text + def link name, text, code = true if name =~ /(.*[^#:])@/ then name = $1 label = $' @@ -139,6 +143,10 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml else path = ref.as_href @from_path + if code and RDoc::CodeObject === ref and !(RDoc::TopLevel === ref) + text = "<code>#{text}</code>" + end + if path =~ /#/ then path << "-label-#{label}" elsif ref.sections and diff --git a/test/rdoc/test_rdoc_markup_to_html_crossref.rb b/test/rdoc/test_rdoc_markup_to_html_crossref.rb index 19cc6a8ec1..598bae3d3f 100644 --- a/test/rdoc/test_rdoc_markup_to_html_crossref.rb +++ b/test/rdoc/test_rdoc_markup_to_html_crossref.rb @@ -14,26 +14,26 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase def test_convert_CROSSREF result = @to.convert 'C1' - assert_equal para("<a href=\"C1.html\">C1</a>"), result + assert_equal para("<a href=\"C1.html\"><code>C1</code></a>"), result end def test_convert_CROSSREF_label result = @to.convert 'C1@foo' - assert_equal para("<a href=\"C1.html#label-foo\">foo at C1</a>"), result + assert_equal para("<a href=\"C1.html#label-foo\">foo at <code>C1</code></a>"), result result = @to.convert 'C1#m@foo' - assert_equal para("<a href=\"C1.html#method-i-m-label-foo\">foo at C1#m</a>"), + assert_equal para("<a href=\"C1.html#method-i-m-label-foo\">foo at <code>C1#m</code></a>"), result end def test_convert_CROSSREF_label_period result = @to.convert 'C1@foo.' - assert_equal para("<a href=\"C1.html#label-foo\">foo at C1</a>."), result + assert_equal para("<a href=\"C1.html#label-foo\">foo at <code>C1</code></a>."), result end def test_convert_CROSSREF_label_space result = @to.convert 'C1@foo+bar' - assert_equal para("<a href=\"C1.html#label-foo+bar\">foo bar at C1</a>"), + assert_equal para("<a href=\"C1.html#label-foo+bar\">foo bar at <code>C1</code></a>"), result end @@ -41,31 +41,31 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase @c1.add_section 'Section' result = @to.convert 'C1@Section' - assert_equal para("<a href=\"C1.html#Section\">Section at C1</a>"), result + assert_equal para("<a href=\"C1.html#Section\">Section at <code>C1</code></a>"), result end def test_convert_CROSSREF_constant result = @to.convert 'C1::CONST' - assert_equal para("<a href=\"C1.html#CONST\">C1::CONST</a>"), result + assert_equal para("<a href=\"C1.html#CONST\"><code>C1::CONST</code></a>"), result end def test_convert_RDOCLINK_rdoc_ref result = @to.convert 'rdoc-ref:C1' - assert_equal para("<a href=\"C1.html\">C1</a>"), result + assert_equal para("<a href=\"C1.html\"><code>C1</code></a>"), result end def test_convert_RDOCLINK_rdoc_ref_method result = @to.convert 'rdoc-ref:C1#m' - assert_equal para("<a href=\"C1.html#method-i-m\">C1#m</a>"), result + assert_equal para("<a href=\"C1.html#method-i-m\"><code>C1#m</code></a>"), result end def test_convert_RDOCLINK_rdoc_ref_method_label result = @to.convert 'rdoc-ref:C1#m@foo' - assert_equal para("<a href=\"C1.html#method-i-m-label-foo\">foo at C1#m</a>"), + assert_equal para("<a href=\"C1.html#method-i-m-label-foo\">foo at <code>C1#m</code></a>"), result, 'rdoc-ref:C1#m@foo' end @@ -75,13 +75,13 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase result = @to.convert 'rdoc-ref:C1#%' - assert_equal para("<a href=\"C1.html#method-i-25\">C1#%</a>"), result + assert_equal para("<a href=\"C1.html#method-i-25\"><code>C1#%</code></a>"), result m.singleton = true result = @to.convert 'rdoc-ref:C1::%' - assert_equal para("<a href=\"C1.html#method-c-25\">C1::%</a>"), result + assert_equal para("<a href=\"C1.html#method-c-25\"><code>C1::%</code></a>"), result end def test_convert_RDOCLINK_rdoc_ref_method_percent_label @@ -90,21 +90,21 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase result = @to.convert 'rdoc-ref:C1#%@f' - assert_equal para("<a href=\"C1.html#method-i-25-label-f\">f at C1#%</a>"), + assert_equal para("<a href=\"C1.html#method-i-25-label-f\">f at <code>C1#%</code></a>"), result m.singleton = true result = @to.convert 'rdoc-ref:C1::%@f' - assert_equal para("<a href=\"C1.html#method-c-25-label-f\">f at C1::%</a>"), + assert_equal para("<a href=\"C1.html#method-c-25-label-f\">f at <code>C1::%</code></a>"), result end def test_convert_RDOCLINK_rdoc_ref_label result = @to.convert 'rdoc-ref:C1@foo' - assert_equal para("<a href=\"C1.html#label-foo\">foo at C1</a>"), result, + assert_equal para("<a href=\"C1.html#label-foo\">foo at <code>C1</code></a>"), result, 'rdoc-ref:C1@foo' end @@ -117,18 +117,18 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase end def test_handle_regexp_CROSSREF - assert_equal "<a href=\"C2/C3.html\">C2::C3</a>", REGEXP_HANDLING('C2::C3') + assert_equal "<a href=\"C2/C3.html\"><code>C2::C3</code></a>", REGEXP_HANDLING('C2::C3') end def test_handle_regexp_CROSSREF_label - assert_equal "<a href=\"C1.html#method-i-m-label-foo\">foo at C1#m</a>", + assert_equal "<a href=\"C1.html#method-i-m-label-foo\">foo at <code>C1#m</code></a>", REGEXP_HANDLING('C1#m@foo') end def test_handle_regexp_CROSSREF_show_hash_false @to.show_hash = false - assert_equal "<a href=\"C1.html#method-i-m\">m</a>", + assert_equal "<a href=\"C1.html#method-i-m\"><code>m</code></a>", REGEXP_HANDLING('#m') end @@ -140,11 +140,11 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase link = @to.handle_regexp_HYPERLINK hyper 'C2::C3' - assert_equal '<a href="C2/C3.html">C2::C3</a>', link + assert_equal '<a href="C2/C3.html"><code>C2::C3</code></a>', link link = @to.handle_regexp_HYPERLINK hyper 'C4' - assert_equal '<a href="C4.html">C4</a>', link + assert_equal '<a href="C4.html"><code>C4</code></a>', link link = @to.handle_regexp_HYPERLINK hyper 'README.txt' @@ -200,16 +200,16 @@ class TestRDocMarkupToHtmlCrossref < XrefTestCase def test_link assert_equal 'n', @to.link('n', 'n') - assert_equal '<a href="C1.html#method-c-m">m</a>', @to.link('m', 'm') + assert_equal '<a href="C1.html#method-c-m"><code>m</code></a>', @to.link('m', 'm') end def test_link_for_method_traverse @to = RDoc::Markup::ToHtmlCrossref.new @options, 'C2.html', @c9 - assert_equal '<a href="C9/A.html#method-i-foo">C9::B#foo</a>', @to.link('C9::B#foo', 'C9::B#foo') + assert_equal '<a href="C9/A.html#method-i-foo"><code>C9::B#foo</code></a>', @to.link('C9::B#foo', 'C9::B#foo') end def test_link_class_method_full - assert_equal '<a href="Parent.html#method-c-m">Parent::m</a>', + assert_equal '<a href="Parent.html#method-c-m"><code>Parent::m</code></a>', @to.link('Parent::m', 'Parent::m') end |