1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/rdoc/parser/ruby.rb: Ignore methods defined on constants to

prevent modules with the names of constants from appearing in the
  documentation.
* test/rdoc/test_rdoc_parser_ruby.rb:  Test for the above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
drbrain 2012-12-20 06:23:28 +00:00
parent d3d00ab8fe
commit a6ed298df7
3 changed files with 53 additions and 4 deletions

View file

@ -1,3 +1,10 @@
Thu Dec 20 15:22:59 2012 Eric Hodel <drbrain@segment7.net>
* lib/rdoc/parser/ruby.rb: Ignore methods defined on constants to
prevent modules with the names of constants from appearing in the
documentation.
* test/rdoc/test_rdoc_parser_ruby.rb: Test for the above.
Thu Dec 20 16:00:33 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
* ext/openssl/ossl_cipher.c: add support for Authenticated Encryption

View file

@ -1116,6 +1116,18 @@ class RDoc::Parser::Ruby < RDoc::Parser
name = name_t2.name
prev_container = container
container = container.find_module_named(name_t.name)
unless container then
constant = prev_container.constants.find do |const|
const.name == name_t.name
end
if constant then
parse_method_dummy prev_container
return
end
end
unless container then
added_container = true
obj = name_t.name.split("::").inject(Object) do |state, item|
@ -1138,10 +1150,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
container.record_location @top_level
end
when TkIDENTIFIER, TkIVAR, TkGVAR then
dummy = RDoc::Context.new
dummy.parent = container
dummy.store = container.store
skip_method dummy
parse_method_dummy container
return
when TkTRUE, TkFALSE, TkNIL then
klass_name = "#{name_t.name.capitalize}Class"
@ -1228,6 +1237,16 @@ class RDoc::Parser::Ruby < RDoc::Parser
@stats.add_method meth
end
##
# Parses a method that needs to be ignored.
def parse_method_dummy container
dummy = RDoc::Context.new
dummy.parent = container
dummy.store = container.store
skip_method dummy
end
##
# Extracts +yield+ parameters from +method+

View file

@ -1525,6 +1525,21 @@ end
assert ampersand.singleton
end
def test_parse_method_constant
c = RDoc::Constant.new 'CONST', nil, ''
m = @top_level.add_class RDoc::NormalModule, 'M'
m.add_constant c
util_parser "def CONST.m() end"
tk = @parser.get_tk
@parser.parse_method m, RDoc::Parser::Ruby::NORMAL, tk, @comment
assert_empty @store.modules_hash.keys
assert_equal %w[M], @store.classes_hash.keys
end
def test_parse_method_false
util_parser "def false.foo() :bar end"
@ -1766,6 +1781,14 @@ end
assert_equal "def \317\211", omega.text
end
def test_parse_method_dummy
util_parser ".method() end"
@parser.parse_method_dummy @top_level
assert_nil @parser.get_tk
end
def test_parse_method_or_yield_parameters_hash
util_parser "({})\n"