From de15b19498028d497b528af227057edfc877b66e Mon Sep 17 00:00:00 2001 From: drbrain Date: Wed, 2 Feb 2011 05:52:11 +0000 Subject: Commit files I forgot to add git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 + lib/rdoc/markup/to_tt_only.rb | 114 ++++++++++++++++ test/rdoc/test_rdoc_markup_to_tt_only.rb | 225 +++++++++++++++++++++++++++++++ test/rdoc/test_rdoc_single_class.rb | 12 ++ 4 files changed, 357 insertions(+) create mode 100644 lib/rdoc/markup/to_tt_only.rb create mode 100644 test/rdoc/test_rdoc_markup_to_tt_only.rb create mode 100644 test/rdoc/test_rdoc_single_class.rb diff --git a/ChangeLog b/ChangeLog index eacb7dd3a4..4aed6c6c96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Feb 2 14:51:08 2011 Eric Hodel + + * lib/rdoc/markup/to_tt_only.rb: commit miss + * test/rdoc/test_rdoc_markup_to_tt_only.rb: ditto + * test/rdoc/test_rdoc_single_class.rb: ditto + Wed Feb 2 09:27:53 2011 Eric Hodel * lib/rdoc: Upgrade to RDoc 3.5.1 diff --git a/lib/rdoc/markup/to_tt_only.rb b/lib/rdoc/markup/to_tt_only.rb new file mode 100644 index 0000000000..98ad2f6936 --- /dev/null +++ b/lib/rdoc/markup/to_tt_only.rb @@ -0,0 +1,114 @@ +require 'rdoc/markup/formatter' +require 'rdoc/markup/inline' + +## +# Extracts sections of text enclosed in plus, tt or code. Used to discover +# undocumented parameters. + +class RDoc::Markup::ToTtOnly < RDoc::Markup::Formatter + + ## + # Stack of list types + + attr_reader :list_type + + ## + # Output accumulator + + attr_reader :res + + ## + # Creates a new tt-only formatter. + + def initialize + super + + add_tag :TT, nil, nil + end + + ## + # Pops the list type for +list+ from #list_type + + def accept_list_end list + @list_type.pop + end + + ## + # Pushes the list type for +list+ onto #list_type + + def accept_list_start list + @list_type << list.type + end + + ## + # Prepares the visitor for consuming +list_item+ + + def accept_list_item_start list_item + case @list_type.last + when :NOTE, :LABEL then + tt_sections(list_item.label) + end + end + + ## + # Adds +paragraph+ to the output + + def accept_paragraph paragraph + tt_sections(paragraph.text) + end + + ## + # Does nothing to +markup_item+ because it doesn't have any user-built + # content + + def do_nothing markup_item + end + + alias accept_blank_line do_nothing # :nodoc: + alias accept_heading do_nothing # :nodoc: + alias accept_list_item_end do_nothing # :nodoc: + alias accept_raw do_nothing # :nodoc: + alias accept_rule do_nothing # :nodoc: + alias accept_verbatim do_nothing # :nodoc: + + ## + # Extracts tt sections from +text+ + + def tt_sections text + flow = @am.flow text.dup + + flow.each do |item| + case item + when String then + @res << item if in_tt? + when RDoc::Markup::AttrChanger then + off_tags res, item + on_tags res, item + when RDoc::Markup::Special then + @res << convert_special(item) if in_tt? # TODO can this happen? + else + raise "Unknown flow element: #{item.inspect}" + end + end + + res + end + + ## + # Returns an Array of items that were wrapped in plus, tt or code. + + def end_accepting + @res.compact + end + + ## + # Prepares the visitor for gathering tt sections + + def start_accepting + @res = [] + + @list_type = [] + end + +end + diff --git a/test/rdoc/test_rdoc_markup_to_tt_only.rb b/test/rdoc/test_rdoc_markup_to_tt_only.rb new file mode 100644 index 0000000000..dd50ba8fde --- /dev/null +++ b/test/rdoc/test_rdoc_markup_to_tt_only.rb @@ -0,0 +1,225 @@ +require 'rubygems' +require 'rdoc/markup/formatter_test_case' +require 'rdoc/markup/to_tt_only' +require 'minitest/autorun' + +class TestRDocMarkupToTtOnly < RDoc::Markup::FormatterTestCase + + add_visitor_tests + + def setup + super + + @to = RDoc::Markup::ToTtOnly.new + end + + def accept_blank_line + assert_empty @to.end_accepting + end + + def accept_heading + assert_empty @to.end_accepting + end + + def accept_list_end_bullet + assert_empty @to.res + end + + def accept_list_end_label + assert_empty @to.res + end + + def accept_list_end_lalpha + assert_empty @to.res + end + + def accept_list_end_note + assert_empty @to.res + end + + def accept_list_end_number + assert_empty @to.res + end + + def accept_list_end_ualpha + assert_empty @to.res + end + + def accept_list_item_end_bullet + assert_empty @to.res + end + + def accept_list_item_end_label + assert_empty @to.res + end + + def accept_list_item_end_lalpha + assert_empty @to.res + end + + def accept_list_item_end_note + assert_empty @to.res + end + + def accept_list_item_end_number + assert_empty @to.res + end + + def accept_list_item_end_ualpha + assert_empty @to.res + end + + def accept_list_item_start_bullet + assert_empty @to.res + end + + def accept_list_item_start_label + assert_empty @to.res + end + + def accept_list_item_start_lalpha + assert_empty @to.res + end + + def accept_list_item_start_note + assert_empty @to.res + end + + def accept_list_item_start_number + assert_empty @to.res + end + + def accept_list_item_start_ualpha + assert_empty @to.res + end + + def accept_list_start_bullet + assert_empty @to.res + end + + def accept_list_start_label + assert_empty @to.res + end + + def accept_list_start_lalpha + assert_empty @to.res + end + + def accept_list_start_note + assert_empty @to.res + end + + def accept_list_start_number + assert_empty @to.res + end + + def accept_list_start_ualpha + assert_empty @to.res + end + + def accept_paragraph + assert_empty @to.end_accepting + end + + def accept_raw + assert_empty @to.end_accepting + end + + def accept_rule + assert_empty @to.end_accepting + end + + def accept_verbatim + assert_empty @to.end_accepting + end + + def end_accepting + assert_equal %w[hi], @to.end_accepting + end + + def start_accepting + assert_empty @to.end_accepting + end + + def accept_heading_1 + assert_empty @to.end_accepting + end + + def accept_heading_2 + assert_empty @to.end_accepting + end + + def accept_heading_3 + assert_empty @to.end_accepting + end + + def accept_heading_4 + assert_empty @to.end_accepting + end + + def accept_heading_indent + assert_empty @to.end_accepting + end + + def accept_heading_b + assert_empty @to.end_accepting + end + + def accept_heading_suppressed_crossref + assert_empty @to.end_accepting + end + + def accept_list_item_start_note_2 + assert_equal [nil, 'teletype', nil], @to.res + end + + def accept_paragraph_b + assert_empty @to.end_accepting + end + + def accept_paragraph_i + assert_empty @to.end_accepting + end + + def accept_paragraph_indent + assert_empty @to.end_accepting + end + + def accept_paragraph_plus + assert_equal %w[teletype], @to.end_accepting + end + + def accept_paragraph_star + assert_empty @to.end_accepting + end + + def accept_paragraph_underscore + assert_empty @to.end_accepting + end + + def accept_paragraph_wrap + assert_empty @to.end_accepting + end + + def accept_rule_indent + assert_empty @to.end_accepting + end + + def accept_verbatim_indent + assert_empty @to.end_accepting + end + + def accept_verbatim_big_indent + assert_empty @to.end_accepting + end + + def list_nested + assert_empty @to.end_accepting + end + + def list_verbatim + assert_empty @to.end_accepting + end + +end + diff --git a/test/rdoc/test_rdoc_single_class.rb b/test/rdoc/test_rdoc_single_class.rb new file mode 100644 index 0000000000..d0c71e9eeb --- /dev/null +++ b/test/rdoc/test_rdoc_single_class.rb @@ -0,0 +1,12 @@ +require File.expand_path '../xref_test_case', __FILE__ + +class TestRDocSingleClass < XrefTestCase + + def test_definition + c = RDoc::SingleClass.new 'C' + + assert_equal 'class << C', c.definition + end + +end + -- cgit v1.2.3