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