mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/rdoc: Update to RDoc 3.7 (final)
* NEWS: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32264 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
41ab31e67a
commit
84ece95163
10 changed files with 201 additions and 111 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Tue Jun 28 11:17:28 2011 Eric Hodel <drbrain@segment7.net>
|
||||||
|
|
||||||
|
* lib/rdoc: Update to RDoc 3.7 (final)
|
||||||
|
* NEWS: ditto
|
||||||
|
|
||||||
Tue Jun 28 10:18:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
|
Tue Jun 28 10:18:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
* process.c (rb_daemon): fix wrong #endif position.
|
* process.c (rb_daemon): fix wrong #endif position.
|
||||||
|
|
2
NEWS
2
NEWS
|
@ -199,7 +199,7 @@ with all sufficient information, see the ChangeLog file.
|
||||||
https://github.com/jimweirich/rake/blob/master/CHANGES
|
https://github.com/jimweirich/rake/blob/master/CHANGES
|
||||||
|
|
||||||
* RDoc
|
* RDoc
|
||||||
* RDoc has been upgraded from 2.5.8 to 3.6.1. For full release notes see
|
* RDoc has been upgraded from 2.5.8 to 3.7. For full release notes see
|
||||||
http://docs.seattlerb.org/rdoc/History_txt.html
|
http://docs.seattlerb.org/rdoc/History_txt.html
|
||||||
|
|
||||||
* rexml
|
* rexml
|
||||||
|
|
|
@ -616,11 +616,16 @@ class RDoc::Markup
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# We take +text+, parse it then invoke the output +formatter+ using a
|
# We take +input+, parse it if necessary, then invoke the output +formatter+
|
||||||
# Visitor to render the result.
|
# using a Visitor to render the result.
|
||||||
|
|
||||||
def convert text, formatter
|
def convert input, formatter
|
||||||
document = RDoc::Markup::Parser.parse text
|
document = case input
|
||||||
|
when RDoc::Markup::Document then
|
||||||
|
input
|
||||||
|
else
|
||||||
|
RDoc::Markup::Parser.parse input
|
||||||
|
end
|
||||||
|
|
||||||
document.accept formatter
|
document.accept formatter
|
||||||
end
|
end
|
||||||
|
|
|
@ -56,7 +56,12 @@ class RDoc::Markup::Document
|
||||||
visitor.start_accepting
|
visitor.start_accepting
|
||||||
|
|
||||||
@parts.each do |item|
|
@parts.each do |item|
|
||||||
item.accept visitor
|
case item
|
||||||
|
when RDoc::Markup::Document then # HACK
|
||||||
|
visitor.accept_document item
|
||||||
|
else
|
||||||
|
item.accept visitor
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
visitor.end_accepting
|
visitor.end_accepting
|
||||||
|
@ -66,7 +71,9 @@ class RDoc::Markup::Document
|
||||||
# Does this document have no parts?
|
# Does this document have no parts?
|
||||||
|
|
||||||
def empty?
|
def empty?
|
||||||
@parts.empty?
|
@parts.empty? or
|
||||||
|
(@parts.length == 1 and RDoc::Markup::Document === @parts.first and
|
||||||
|
@parts.first.empty?)
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
|
@ -60,7 +60,14 @@ class RDoc::Markup
|
||||||
|
|
||||||
class AttrChanger
|
class AttrChanger
|
||||||
def to_s # :nodoc:
|
def to_s # :nodoc:
|
||||||
"Attr: +#{Attribute.as_string turn_on}/-#{Attribute.as_string turn_on}"
|
"Attr: +#{Attribute.as_string turn_on}/-#{Attribute.as_string turn_off}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def inspect # :nodoc:
|
||||||
|
"+%s/-%s" % [
|
||||||
|
Attribute.as_string(turn_on),
|
||||||
|
Attribute.as_string(turn_off),
|
||||||
|
]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,9 @@ class RDoc::Markup::ToAnsi < RDoc::Markup::ToRdoc
|
||||||
super
|
super
|
||||||
|
|
||||||
@headings.clear
|
@headings.clear
|
||||||
@headings[1] = ["\e[1;32m", "\e[m"]
|
@headings[1] = ["\e[1;32m", "\e[m"] # bold
|
||||||
@headings[2] = ["\e[4;32m", "\e[m"]
|
@headings[2] = ["\e[4;32m", "\e[m"] # underline
|
||||||
@headings[3] = ["\e[32m", "\e[m"]
|
@headings[3] = ["\e[32m", "\e[m"] # just green
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
|
@ -344,8 +344,8 @@ Options may also be set in the 'RI' environment variable.
|
||||||
@stores = []
|
@stores = []
|
||||||
|
|
||||||
RDoc::RI::Paths.each(options[:use_system], options[:use_site],
|
RDoc::RI::Paths.each(options[:use_system], options[:use_site],
|
||||||
options[:use_home], options[:use_gems],
|
options[:use_home], options[:use_gems],
|
||||||
*options[:extra_doc_dirs]) do |path, type|
|
*options[:extra_doc_dirs]) do |path, type|
|
||||||
@doc_dirs << path
|
@doc_dirs << path
|
||||||
|
|
||||||
store = RDoc::RI::Store.new path, type
|
store = RDoc::RI::Store.new path, type
|
||||||
|
@ -504,6 +504,70 @@ Options may also be set in the 'RI' environment variable.
|
||||||
def class_cache # :nodoc:
|
def class_cache # :nodoc:
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Builds a RDoc::Markup::Document from +found+, +klasess+ and +includes+
|
||||||
|
|
||||||
|
def class_document name, found, klasses, includes
|
||||||
|
also_in = []
|
||||||
|
|
||||||
|
out = RDoc::Markup::Document.new
|
||||||
|
|
||||||
|
add_class out, name, klasses
|
||||||
|
|
||||||
|
add_includes out, includes
|
||||||
|
|
||||||
|
found.each do |store, klass|
|
||||||
|
comment = klass.comment
|
||||||
|
class_methods = store.class_methods[klass.full_name]
|
||||||
|
instance_methods = store.instance_methods[klass.full_name]
|
||||||
|
attributes = store.attributes[klass.full_name]
|
||||||
|
|
||||||
|
if comment.empty? and !(instance_methods or class_methods) then
|
||||||
|
also_in << store
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
|
add_from out, store
|
||||||
|
|
||||||
|
unless comment.empty? then
|
||||||
|
out << RDoc::Markup::Rule.new(1)
|
||||||
|
out << comment
|
||||||
|
end
|
||||||
|
|
||||||
|
if class_methods or instance_methods or not klass.constants.empty? then
|
||||||
|
out << RDoc::Markup::Rule.new(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
unless klass.constants.empty? then
|
||||||
|
out << RDoc::Markup::Heading.new(1, "Constants:")
|
||||||
|
out << RDoc::Markup::BlankLine.new
|
||||||
|
list = RDoc::Markup::List.new :NOTE
|
||||||
|
|
||||||
|
constants = klass.constants.sort_by { |constant| constant.name }
|
||||||
|
|
||||||
|
list.push(*constants.map do |constant|
|
||||||
|
parts = constant.comment.parts if constant.comment
|
||||||
|
parts << RDoc::Markup::Paragraph.new('[not documented]') if
|
||||||
|
parts.empty?
|
||||||
|
|
||||||
|
RDoc::Markup::ListItem.new(constant.name, *parts)
|
||||||
|
end)
|
||||||
|
|
||||||
|
out << list
|
||||||
|
end
|
||||||
|
|
||||||
|
add_method_list out, class_methods, 'Class methods'
|
||||||
|
add_method_list out, instance_methods, 'Instance methods'
|
||||||
|
add_method_list out, attributes, 'Attributes'
|
||||||
|
|
||||||
|
out << RDoc::Markup::BlankLine.new
|
||||||
|
end
|
||||||
|
|
||||||
|
add_also_in out, also_in
|
||||||
|
|
||||||
|
out
|
||||||
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Hash mapping a known class or module to the stores it can be loaded from
|
# Hash mapping a known class or module to the stores it can be loaded from
|
||||||
|
|
||||||
|
@ -523,6 +587,29 @@ Options may also be set in the 'RI' environment variable.
|
||||||
@classes
|
@classes
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Returns the stores wherin +name+ is found along with the classes and
|
||||||
|
# includes that match it
|
||||||
|
|
||||||
|
def classes_and_includes_for name
|
||||||
|
klasses = []
|
||||||
|
includes = []
|
||||||
|
|
||||||
|
found = @stores.map do |store|
|
||||||
|
begin
|
||||||
|
klass = store.load_class name
|
||||||
|
klasses << klass
|
||||||
|
includes << [klass.includes, store] if klass.includes
|
||||||
|
[store, klass]
|
||||||
|
rescue Errno::ENOENT
|
||||||
|
end
|
||||||
|
end.compact
|
||||||
|
|
||||||
|
includes.reject! do |modules,| modules.empty? end
|
||||||
|
|
||||||
|
[found, klasses, includes]
|
||||||
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Completes +name+ based on the caches. For Readline
|
# Completes +name+ based on the caches. For Readline
|
||||||
|
|
||||||
|
@ -582,79 +669,11 @@ Options may also be set in the 'RI' environment variable.
|
||||||
def display_class name
|
def display_class name
|
||||||
return if name =~ /#|\./
|
return if name =~ /#|\./
|
||||||
|
|
||||||
klasses = []
|
found, klasses, includes = classes_and_includes_for name
|
||||||
includes = []
|
|
||||||
|
|
||||||
found = @stores.map do |store|
|
|
||||||
begin
|
|
||||||
klass = store.load_class name
|
|
||||||
klasses << klass
|
|
||||||
includes << [klass.includes, store] if klass.includes
|
|
||||||
[store, klass]
|
|
||||||
rescue Errno::ENOENT
|
|
||||||
end
|
|
||||||
end.compact
|
|
||||||
|
|
||||||
return if found.empty?
|
return if found.empty?
|
||||||
|
|
||||||
also_in = []
|
out = class_document name, found, klasses, includes
|
||||||
|
|
||||||
includes.reject! do |modules,| modules.empty? end
|
|
||||||
|
|
||||||
out = RDoc::Markup::Document.new
|
|
||||||
|
|
||||||
add_class out, name, klasses
|
|
||||||
|
|
||||||
add_includes out, includes
|
|
||||||
|
|
||||||
found.each do |store, klass|
|
|
||||||
comment = klass.comment
|
|
||||||
class_methods = store.class_methods[klass.full_name]
|
|
||||||
instance_methods = store.instance_methods[klass.full_name]
|
|
||||||
attributes = store.attributes[klass.full_name]
|
|
||||||
|
|
||||||
if comment.empty? and !(instance_methods or class_methods) then
|
|
||||||
also_in << store
|
|
||||||
next
|
|
||||||
end
|
|
||||||
|
|
||||||
add_from out, store
|
|
||||||
|
|
||||||
unless comment.empty? then
|
|
||||||
out << RDoc::Markup::Rule.new(1)
|
|
||||||
out << comment
|
|
||||||
end
|
|
||||||
|
|
||||||
if class_methods or instance_methods or not klass.constants.empty? then
|
|
||||||
out << RDoc::Markup::Rule.new(1)
|
|
||||||
end
|
|
||||||
|
|
||||||
unless klass.constants.empty? then
|
|
||||||
out << RDoc::Markup::Heading.new(1, "Constants:")
|
|
||||||
out << RDoc::Markup::BlankLine.new
|
|
||||||
list = RDoc::Markup::List.new :NOTE
|
|
||||||
|
|
||||||
constants = klass.constants.sort_by { |constant| constant.name }
|
|
||||||
|
|
||||||
list.push(*constants.map do |constant|
|
|
||||||
parts = constant.comment.parts if constant.comment
|
|
||||||
parts << RDoc::Markup::Paragraph.new('[not documented]') if
|
|
||||||
parts.empty?
|
|
||||||
|
|
||||||
RDoc::Markup::ListItem.new(constant.name, *parts)
|
|
||||||
end)
|
|
||||||
|
|
||||||
out << list
|
|
||||||
end
|
|
||||||
|
|
||||||
add_method_list out, class_methods, 'Class methods'
|
|
||||||
add_method_list out, instance_methods, 'Instance methods'
|
|
||||||
add_method_list out, attributes, 'Attributes'
|
|
||||||
|
|
||||||
out << RDoc::Markup::BlankLine.new
|
|
||||||
end
|
|
||||||
|
|
||||||
add_also_in out, also_in
|
|
||||||
|
|
||||||
display out
|
display out
|
||||||
end
|
end
|
||||||
|
@ -669,32 +688,7 @@ Options may also be set in the 'RI' environment variable.
|
||||||
|
|
||||||
filtered = filter_methods found, name
|
filtered = filter_methods found, name
|
||||||
|
|
||||||
out = RDoc::Markup::Document.new
|
out = method_document name, filtered
|
||||||
|
|
||||||
out << RDoc::Markup::Heading.new(1, name)
|
|
||||||
out << RDoc::Markup::BlankLine.new
|
|
||||||
|
|
||||||
filtered.each do |store, methods|
|
|
||||||
methods.each do |method|
|
|
||||||
out << RDoc::Markup::Paragraph.new("(from #{store.friendly_path})")
|
|
||||||
|
|
||||||
unless name =~ /^#{Regexp.escape method.parent_name}/ then
|
|
||||||
out << RDoc::Markup::Heading.new(3, "Implementation from #{method.parent_name}")
|
|
||||||
end
|
|
||||||
out << RDoc::Markup::Rule.new(1)
|
|
||||||
|
|
||||||
if method.arglists then
|
|
||||||
arglists = method.arglists.chomp.split "\n"
|
|
||||||
arglists = arglists.map { |line| line + "\n" }
|
|
||||||
out << RDoc::Markup::Verbatim.new(*arglists)
|
|
||||||
out << RDoc::Markup::Rule.new(1)
|
|
||||||
end
|
|
||||||
|
|
||||||
out << RDoc::Markup::BlankLine.new
|
|
||||||
out << method.comment
|
|
||||||
out << RDoc::Markup::BlankLine.new
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
display out
|
display out
|
||||||
end
|
end
|
||||||
|
@ -736,6 +730,7 @@ Options may also be set in the 'RI' environment variable.
|
||||||
display_name name
|
display_name name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Expands abbreviated klass +klass+ into a fully-qualified class. "Zl::Da"
|
# Expands abbreviated klass +klass+ into a fully-qualified class. "Zl::Da"
|
||||||
# will be expanded to Zlib::DataError.
|
# will be expanded to Zlib::DataError.
|
||||||
|
@ -1003,6 +998,40 @@ Options may also be set in the 'RI' environment variable.
|
||||||
found.reject do |path, methods| methods.empty? end
|
found.reject do |path, methods| methods.empty? end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Builds a RDoc::Markup::Document from +found+, +klasess+ and +includes+
|
||||||
|
|
||||||
|
def method_document name, filtered
|
||||||
|
out = RDoc::Markup::Document.new
|
||||||
|
|
||||||
|
out << RDoc::Markup::Heading.new(1, name)
|
||||||
|
out << RDoc::Markup::BlankLine.new
|
||||||
|
|
||||||
|
filtered.each do |store, methods|
|
||||||
|
methods.each do |method|
|
||||||
|
out << RDoc::Markup::Paragraph.new("(from #{store.friendly_path})")
|
||||||
|
|
||||||
|
unless name =~ /^#{Regexp.escape method.parent_name}/ then
|
||||||
|
out << RDoc::Markup::Heading.new(3, "Implementation from #{method.parent_name}")
|
||||||
|
end
|
||||||
|
out << RDoc::Markup::Rule.new(1)
|
||||||
|
|
||||||
|
if method.arglists then
|
||||||
|
arglists = method.arglists.chomp.split "\n"
|
||||||
|
arglists = arglists.map { |line| line + "\n" }
|
||||||
|
out << RDoc::Markup::Verbatim.new(*arglists)
|
||||||
|
out << RDoc::Markup::Rule.new(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
out << RDoc::Markup::BlankLine.new
|
||||||
|
out << method.comment
|
||||||
|
out << RDoc::Markup::BlankLine.new
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
out
|
||||||
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Returns the type of method (:both, :instance, :class) for +selector+
|
# Returns the type of method (:both, :instance, :class) for +selector+
|
||||||
|
|
||||||
|
|
|
@ -56,5 +56,36 @@ the time
|
||||||
assert_equal expected, out
|
assert_equal expected, out
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_convert_document
|
||||||
|
doc = RDoc::Markup::Parser.parse <<-STR
|
||||||
|
now is
|
||||||
|
the time
|
||||||
|
|
||||||
|
hello
|
||||||
|
dave
|
||||||
|
|
||||||
|
1. l1
|
||||||
|
2. l2
|
||||||
|
STR
|
||||||
|
|
||||||
|
m = RDoc::Markup.new
|
||||||
|
|
||||||
|
tt = RDoc::Markup::ToTest.new m
|
||||||
|
|
||||||
|
out = m.convert doc, tt
|
||||||
|
|
||||||
|
expected = [
|
||||||
|
"now is the time",
|
||||||
|
"\n",
|
||||||
|
" hello\n dave\n",
|
||||||
|
"1: ",
|
||||||
|
"l1",
|
||||||
|
"1: ",
|
||||||
|
"l2",
|
||||||
|
]
|
||||||
|
|
||||||
|
assert_equal expected, out
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,12 @@ class TestRDocMarkupDocument < MiniTest::Unit::TestCase
|
||||||
refute_empty @d
|
refute_empty @d
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_empty_eh_document
|
||||||
|
d = @RM::Document.new @d
|
||||||
|
|
||||||
|
assert_empty d
|
||||||
|
end
|
||||||
|
|
||||||
def test_equals2
|
def test_equals2
|
||||||
d2 = @RM::Document.new
|
d2 = @RM::Document.new
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ contents of a string.
|
||||||
# FIXME 1.9 fix on windoze
|
# FIXME 1.9 fix on windoze
|
||||||
# preprocessor uses binread, so line endings are \r\n
|
# preprocessor uses binread, so line endings are \r\n
|
||||||
expected.gsub!("\n", "\r\n") if
|
expected.gsub!("\n", "\r\n") if
|
||||||
RUBY_VERSION =~ /^1.9/ && RUBY_PLATFORM =~ /mswin|mingw/
|
RUBY_VERSION < "1.9.3" && RUBY_PLATFORM =~ /mswin|mingw/
|
||||||
|
|
||||||
assert_equal expected, content
|
assert_equal expected, content
|
||||||
end
|
end
|
||||||
|
@ -67,7 +67,7 @@ contents of a string.
|
||||||
# FIXME 1.9 fix on windoze
|
# FIXME 1.9 fix on windoze
|
||||||
# preprocessor uses binread, so line endings are \r\n
|
# preprocessor uses binread, so line endings are \r\n
|
||||||
expected.gsub!("\n", "\r\n") if
|
expected.gsub!("\n", "\r\n") if
|
||||||
RUBY_VERSION =~ /^1.9/ && RUBY_PLATFORM =~ /mswin|mingw/
|
RUBY_VERSION < "1.9.3" && RUBY_PLATFORM =~ /mswin|mingw/
|
||||||
|
|
||||||
assert_equal expected, content
|
assert_equal expected, content
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue