module AttrStatements::ClassMethods
Attributes
attr_statements[W]
Public Instance Methods
attr_statements()
click to toggle source
# File lib/attr_statements.rb, line 29 def attr_statements @attr_statements ||= [] end
Private Instance Methods
attr_statement(key, class_type, options = {})
click to toggle source
# File lib/attr_statements.rb, line 39 def attr_statement(key, class_type, options = {}) attr_statements << key.to_sym define_writer_object_method(key, Attribute.new(key, class_type, options)) define_reader_object_method(key) define_writer_instance_method(key) define_reader_instance_method(key) end
define_reader_instance_method(key)
click to toggle source
# File lib/attr_statements.rb, line 67 def define_reader_instance_method(key) define_method(key) do get_statement_value(key) end end
define_reader_object_method(key)
click to toggle source
# File lib/attr_statements.rb, line 52 def define_reader_object_method(key) # define as singleton method (class << self; self end).send(:define_method, key) do get_statement_object(key) end end
define_writer_instance_method(key)
click to toggle source
# File lib/attr_statements.rb, line 73 def define_writer_instance_method(key) define_method("#{key}=") do |value| set_statement_value(key, value) end end
define_writer_object_method(key, attribute)
click to toggle source
# File lib/attr_statements.rb, line 48 def define_writer_object_method(key, attribute) set_statement_object(key, attribute) end
get_statement_object(key)
click to toggle source
# File lib/attr_statements.rb, line 63 def get_statement_object(key) class_variable_get("@@#{key}") end
set_statement_object(key, value)
click to toggle source
# File lib/attr_statements.rb, line 59 def set_statement_object(key, value) class_variable_set("@@#{key}", value) end