Sha256: b0d2847f5c37ebda2787a69e5a5104ee7ced1552c8f16346264208d17128bb1b

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

module Rlottery

  module Entity

    attr_accessor :identifier, :assignments

    def initialize(args)
      raise ArgumentError, "Must supply a hash!" unless args.respond_to?(:[])
      entity_init(args)
    end

    def is?(identifier)
      @identifier == identifier ? true : false
    end

  private

    def entity_init(args)
      @assignments ||= []
      @identifier = args.delete(:identifier) || raise(ArgumentError, "Must supply identifier!")
      make_args_into_accessors(args)
    end

    def make_args_into_accessors(args)
      args.each_pair do |key, value|
        ivar_name = "@#{key}"
        instance_variable_set ivar_name, value
        define_accessor_for_ivar(key, ivar_name)
      end
    end

    def define_accessor_for_ivar(meth, ivar_name)
      unless self.respond_to?(meth)          # # just do this once per class..
        self.class.instance_eval do          # class SomeEntity
          define_method meth do              #   def foo
            instance_variable_get ivar_name  #     instance_variable_get @foo
          end                                #   end
        end                                  # end
      end
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jlindley-rlottery-0.1.2 lib/rlottery/entity.rb
jlindley-rlottery-0.1.3 lib/rlottery/entity.rb