# frozen_string_literal: true require_relative 'xref_test_case' class TestRDocMarkupToHtmlCrossref < XrefTestCase def setup super @options.hyperlink_all = true @to = RDoc::Markup::ToHtmlCrossref.new @options, 'index.html', @c1 end def test_convert_CROSSREF result = @to.convert 'C1' assert_equal para("C1"), result end def test_convert_CROSSREF_method result = @to.convert 'C1#m(foo, bar, baz)' assert_equal para("C1#m(foo, bar, baz)"), result end def test_convert_CROSSREF_label result = @to.convert 'C1@foo' assert_equal para("foo at C1"), result result = @to.convert 'C1#m@foo' assert_equal para("foo at C1#m"), result end def test_convert_CROSSREF_label_for_md result = @to.convert 'EXAMPLE@foo' assert_equal para("foo at EXAMPLE"), result end def test_convert_CROSSREF_label_period result = @to.convert 'C1@foo.' assert_equal para("foo at C1."), result end def test_convert_CROSSREF_label_space result = @to.convert 'C1@foo+bar' assert_equal para("foo bar at C1"), result end def test_convert_CROSSREF_section @c1.add_section 'Section' result = @to.convert 'C1@Section' assert_equal para("Section at C1"), result end def test_convert_CROSSREF_constant result = @to.convert 'C1::CONST' assert_equal para("C1::CONST"), result end def test_convert_RDOCLINK_rdoc_ref result = @to.convert 'rdoc-ref:C1' assert_equal para("C1"), result end def test_convert_RDOCLINK_rdoc_ref_method result = @to.convert 'rdoc-ref:C1#m' assert_equal para("C1#m"), result end def test_convert_RDOCLINK_rdoc_ref_method_label result = @to.convert 'rdoc-ref:C1#m@foo' assert_equal para("foo at C1#m"), result, 'rdoc-ref:C1#m@foo' end def test_convert_RDOCLINK_rdoc_ref_method_percent m = @c1.add_method RDoc::AnyMethod.new nil, '%' m.singleton = false result = @to.convert 'rdoc-ref:C1#%' assert_equal para("C1#%"), result m.singleton = true result = @to.convert 'rdoc-ref:C1::%' assert_equal para("C1::%"), result end def test_convert_RDOCLINK_rdoc_ref_method_escape_html m = @c1.add_method RDoc::AnyMethod.new nil, '<<' m.singleton = false result = @to.convert 'rdoc-ref:C1#<<' assert_equal para("C1#<<"), result m.singleton = true result = @to.convert 'rdoc-ref:C1::<<' assert_equal para("C1::<<"), result end def test_convert_RDOCLINK_rdoc_ref_method_percent_label m = @c1.add_method RDoc::AnyMethod.new nil, '%' m.singleton = false result = @to.convert 'rdoc-ref:C1#%@f' assert_equal para("f at C1#%"), result m.singleton = true result = @to.convert 'rdoc-ref:C1::%@f' assert_equal para("f at C1::%"), result end def test_convert_RDOCLINK_rdoc_ref_label result = @to.convert 'rdoc-ref:C1@foo' assert_equal para("foo at C1"), result, 'rdoc-ref:C1@foo' end def test_gen_url assert_equal 'Some class', @to.gen_url('rdoc-ref:C1', 'Some class') assert_equal 'HTTP example', @to.gen_url('http://example', 'HTTP example') end def test_handle_regexp_CROSSREF assert_equal "C2::C3", REGEXP_HANDLING('C2::C3') end def test_handle_regexp_CROSSREF_label assert_equal "foo at C1#m", REGEXP_HANDLING('C1#m@foo') end def test_handle_regexp_CROSSREF_show_hash_false @to.show_hash = false assert_equal "m", REGEXP_HANDLING('#m') end def test_handle_regexp_CROSSREF_with_arg_looks_like_TIDYLINK result = @to.convert 'C1.m[:sym]' assert_equal para("C1.m[:sym]"), result, 'C1.m[:sym]' end def test_handle_regexp_HYPERLINK_rdoc readme = @store.add_file 'README.txt' readme.parser = RDoc::Parser::Simple @to = RDoc::Markup::ToHtmlCrossref.new @options, 'C2.html', @c2 link = @to.handle_regexp_HYPERLINK hyper 'C2::C3' assert_equal 'C2::C3', link link = @to.handle_regexp_HYPERLINK hyper 'C4' assert_equal 'C4', link link = @to.handle_regexp_HYPERLINK hyper 'README.txt' assert_equal 'README.txt', link end def test_handle_regexp_TIDYLINK_rdoc readme = @store.add_file 'README.txt' readme.parser = RDoc::Parser::Simple @to = RDoc::Markup::ToHtmlCrossref.new @options, 'C2.html', @c2 link = @to.handle_regexp_TIDYLINK tidy 'C2::C3' assert_equal 'tidy', link link = @to.handle_regexp_TIDYLINK tidy 'C4' assert_equal 'tidy', link link = @to.handle_regexp_TIDYLINK tidy 'C1#m' assert_equal 'tidy', link link = @to.handle_regexp_TIDYLINK tidy 'README.txt' assert_equal 'tidy', link end def test_handle_regexp_TIDYLINK_label link = @to.handle_regexp_TIDYLINK tidy 'C1#m@foo' assert_equal "tidy", link, 'C1#m@foo' end def test_to_html_CROSSREF_email @options.hyperlink_all = false @to = RDoc::Markup::ToHtmlCrossref.new @options, 'index.html', @c1 result = @to.to_html 'first.last@example.com' assert_equal 'first.last@example.com', result end def test_to_html_CROSSREF_email_hyperlink_all result = @to.to_html 'first.last@example.com' assert_equal 'first.last@example.com', result end def test_link assert_equal 'n', @to.link('n', 'n') assert_equal 'm', @to.link('m', 'm') end def test_link_for_method_traverse @to = RDoc::Markup::ToHtmlCrossref.new @options, 'C2.html', @c9 assert_equal 'C9::B#foo', @to.link('C9::B#foo', 'C9::B#foo') end def test_link_class_method_full assert_equal 'Parent::m', @to.link('Parent::m', 'Parent::m') end def para text "\n

#{text}

\n" end def REGEXP_HANDLING text @to.handle_regexp_CROSSREF regexp_handling text end def hyper reference RDoc::Markup::RegexpHandling.new 0, "rdoc-ref:#{reference}" end def regexp_handling text RDoc::Markup::RegexpHandling.new 0, text end def tidy reference RDoc::Markup::RegexpHandling.new 0, "{tidy}[rdoc-ref:#{reference}]" end end