class AttrArgsShorthand

Public Class Methods

set(object, arguments, args = {}) click to toggle source
# File lib/attr_args_shorthand.rb, line 2
def self.set(object, arguments, args = {})
  arguments.each do |key, value|
    object.instance_variable_set("@#{key}", value)

    unless object.respond_to?(key)
      object.define_singleton_method(key) do
        instance_variable_get("@#{key}")
      end
    end

    unless object.respond_to?("#{key}=")
      object.define_singleton_method("#{key}=") do |value|
        instance_variable_set("@#{key}", value)
      end
    end
  end
end
set_args(object, args) click to toggle source
# File lib/attr_args_shorthand.rb, line 32
def self.set_args(object, args)
  args.each do |key, value|
    object.instance_variable_set("@#{key}", value)
  end
end
set_attrs(clazz, args) click to toggle source
# File lib/attr_args_shorthand.rb, line 20
def self.set_attrs(clazz, args)
  args.each do |arg|
    clazz.__send__(:define_method, arg) do
      instance_variable_get("@#{arg}")
    end

    clazz.__send__(:define_method, "#{arg}=") do |value|
      instance_variable_set("@#{arg}", value)
    end
  end
end