Sha256: ba5cc49e3e8d858066cdf85d9cc1bbd1cc793fd810612e5aebe04ef89fa87419
Contents?: true
Size: 1.13 KB
Versions: 3
Compression:
Stored size: 1.13 KB
Contents
module VzaarApi module Lib module HasAttributes def self.prepended(klass) klass::ATTR_READERS.each do |attr| klass.send :attr_reader, attr end unless defined? klass::ATTR_ACCESSORS klass.const_set 'ATTR_ACCESSORS', [].freeze end klass::ATTR_ACCESSORS.each do |attr| klass.send :attr_accessor, attr klass.send(:define_method, "#{attr}=") do |val| if self.changes[attr] self.changes[attr][1] = val else self.changes[attr] = [self.send(attr), val] end val end end end def initialize(attrs = {}) self.class::ATTR_READERS.each do |attr| instance_variable_set("@#{attr}", attrs[attr]) end self.class::ATTR_ACCESSORS.each do |attr| instance_variable_set("@#{attr}", attrs[attr]) end super end private def update_from_attributes(attrs = {}) attrs.each do |attr, val| instance_variable_set("@#{attr}", attrs[attr]) end super end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
vzaar_api-2.0.2 | lib/vzaar_api/lib/has_attributes.rb |
vzaar_api-2.0.1 | lib/vzaar_api/lib/has_attributes.rb |
vzaar_api-2.0.0 | lib/vzaar_api/lib/has_attributes.rb |