首先,我想自定义RDoc,以便它自动识别以下代码的attrs
哈希foo
和bar
的每个键:
class SomeClass
def initialize( args = { })
attrs = { 'foo' => nil,
'bar' => 'us'}
attrs.each_key{ |key| (class << self; self; end).send( :attr_accessor, key.to_sym)}
attrs.each_key do |key|
attrs[ key] = args[ key] if( args.has_key?( key))
raise "No #{key} defined" if( attrs[key] === nil))
end
attrs.each {|key, value| instance_variable_set( "@#{key}", value)}
end
end
好像我按如下方式对它们进行了初始化:
class SomeClass
attr_accessor :foo, :bar
def initialize( foo = nil, bar = 'us')
raise "No foo defined" if( foo === nil))
@foo = foo
@bar = bar
end
end
我可以执行以下操作,并使访问者正确显示为Attributes
:
class SomeClass
##
# :attr_accessor: foo
##
# :attr_accessor: bar
##
# this is a comment for a the initialize method
def initialize( args = { })
attrs = { 'foo' => nil,
'bar' => 'us'}
attrs.each_key{ |key| (class << self; self; end).send( :attr_accessor, key.to_sym)}
attrs.each_key do |key|
attrs[ key] = args[ key] if( args.has_key?( key))
raise "No #{key} defined" if( attrs[key] === nil))
end
attrs.each {|key, value| instance_variable_set( "@#{key}", value)}
end
end
但我希望RDoc能够自动识别这些!
第二,我希望能够在类似于以下的庄园中发表与其定义相关的评论,并将评论显示在文档中:
class SomeClass
def initialize( args = { })
attrs = {
##
#This stores your Foo
'foo' => nil,
##
#This stores your Bar
'bar' => 'us'}
attrs.each_key{ |key| (class << self; self; end).send( :attr_accessor, key.to_sym)}
attrs.each_key do |key|
attrs[ key] = args[ key] if( args.has_key?( key))
raise "No #{key} defined" if( attrs[key] === nil))
end
attrs.each {|key, value| instance_variable_set( "@#{key}", value)}
end
end
最后,我希望自动列出他们的默认值(即在列出的文档中使用默认值foo = nil
和bar = 'us'
的属性。
我一直在研究Ruby代码解析器RDoc::Parser::Ruby的RDoc文档,我想构建一个插件,如RDoc Developer Introduction所述,但我不确定如何开始。
1)那里有什么东西已经完成了我所描述的内容吗? 2)如果不存在,有人可以指点我一个完成类似功能的示例插件吗?