FIRST, я бы хотел настроить 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
LAST, я хотел бы, чтобы их значения по умолчанию автоматически перечислялись (то есть в документации это перечисляло бы с атрибутами, которые по умолчанию foo = nil
и bar = 'us'
).
Я изучал документацию RDoc для синтаксического анализатора кода Ruby RDoc :: Parser :: Ruby и хотел бы создать плагин, как описано во RDoc Developer Введение но я не уверен, как вообще начать.
1) Есть ли что-то там, что уже выполняет то, что я описал?2) Если ничего не существует, может кто-нибудь указать мне пример плагина, выполняющего аналогичную функциональность?