Sha256: 9f6470120447121d51be232ac35c074a7d6dbc31f3885279f6c2acef527a76c6
Contents?: true
Size: 1.16 KB
Versions: 2
Compression:
Stored size: 1.16 KB
Contents
module JsonApiClient module Helpers module DynamicAttributes def attributes @attributes end def attributes=(attrs = {}) @attributes ||= {}.with_indifferent_access return @attributes unless attrs.present? attrs.each do |key, value| set_attribute(key, value) end end def [](key) read_attribute(key) end def []=(key, value) set_attribute(key, value) end def respond_to_missing?(method, include_private = false) if (method.to_s =~ /^(.*)=$/) || has_attribute?(method) true else super end end def has_attribute?(attr_name) attributes.has_key?(attr_name) end protected def method_missing(method, *args, &block) if method.to_s =~ /^(.*)=$/ set_attribute($1, args.first) elsif has_attribute?(method) attributes[method] else super end end def read_attribute(name) attributes.fetch(name, nil) end def set_attribute(name, value) attributes[name] = value end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
json_api_client-1.0.0.beta5 | lib/json_api_client/helpers/dynamic_attributes.rb |
json_api_client-1.0.0.beta4 | lib/json_api_client/helpers/dynamic_attributes.rb |