summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-02-02 05:52:11 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-02-02 05:52:11 +0000
commitde15b19498028d497b528af227057edfc877b66e (patch)
treee334561a3dd0003a19ec8290d95ebe7ab6a1ccd8
parentcc2a16d94d744d14d4a5eb06eca22137f8a9b79e (diff)
Commit files I forgot to add
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--lib/rdoc/markup/to_tt_only.rb114
-rw-r--r--test/rdoc/test_rdoc_markup_to_tt_only.rb225
-rw-r--r--test/rdoc/test_rdoc_single_class.rb12
4 files changed, 357 insertions, 0 deletions
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 <drbrain@segment7.net>
+
+ * 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 <drbrain@segment7.net>
* 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
+