module SimpleAttrs

Constants

VERSION

Public Class Methods

included(base) click to toggle source
# File lib/simple_attrs.rb, line 4
def self.included(base)
  base.extend ClassMethods

  base.class_eval do
    @simple_attrs ||= {}

    def initialize(options = {})
      options.each do |key, value|
        if self.class.simple_attrs.has_key?(key.to_sym)
          instance_variable_set("@#{key}", value)
        else
          raise ArgumentError, "Cannot set #{key} through initializer"
        end
      end
    end

    def attributes
      self.class.simple_attrs.inject({}) do |result, attr_pair|
        key, _value = attr_pair
        result.merge(key => self.public_send(key))
      end
    end
  end
end
new(options = {}) click to toggle source
# File lib/simple_attrs.rb, line 10
def initialize(options = {})
  options.each do |key, value|
    if self.class.simple_attrs.has_key?(key.to_sym)
      instance_variable_set("@#{key}", value)
    else
      raise ArgumentError, "Cannot set #{key} through initializer"
    end
  end
end

Public Instance Methods

attributes() click to toggle source
# File lib/simple_attrs.rb, line 20
def attributes
  self.class.simple_attrs.inject({}) do |result, attr_pair|
    key, _value = attr_pair
    result.merge(key => self.public_send(key))
  end
end