class Taxjar::Base
Attributes
attrs[R]
to_h[R]
to_hash[R]
Public Class Methods
attr_reader(*attrs)
click to toggle source
# File lib/taxjar/base.rb, line 44 def attr_reader(*attrs) attrs.each do |attr| define_attribute_method(attr) define_predicate_method(attr) end end
define_attribute_method(key1, klass = nil, key2 = nil)
click to toggle source
# File lib/taxjar/base.rb, line 56 def define_attribute_method(key1, klass = nil, key2 = nil) define_method(key1) do if attr_falsey_or_empty?(key1) else klass.nil? ? @attrs[key1] : klass.new(attrs_for_object(key1, key2)) end end memoize(key1) end
define_predicate_method(key1, key2 = key1)
click to toggle source
# File lib/taxjar/base.rb, line 66 def define_predicate_method(key1, key2 = key1) define_method(:"#{key1}?") do !attr_falsey_or_empty?(key2) end memoize(:"#{key1}?") end
new(attributes = {})
click to toggle source
# File lib/taxjar/base.rb, line 74 def initialize(attributes = {}) @attrs = set_attributes(attributes) end
object_attr_reader(klass, key1, key2 = nil)
click to toggle source
# File lib/taxjar/base.rb, line 51 def object_attr_reader(klass, key1, key2 = nil) define_attribute_method(key1, klass, key2) define_predicate_method(key1) end
Public Instance Methods
[](method)
click to toggle source
# File lib/taxjar/base.rb, line 78 def [](method) warn "#{Kernel.caller.first}: [DEPRECATION] #[#{method.inspect}] is deprecated. Use ##{method} to fetch the value." send(method.to_sym) rescue NoMethodError nil end
map_collection(klass, key)
click to toggle source
# File lib/taxjar/base.rb, line 36 def map_collection(klass, key) Array(@attrs[key.to_sym]).map do |entity| klass.new(entity) end end
Private Instance Methods
attr_falsey_or_empty?(key)
click to toggle source
# File lib/taxjar/base.rb, line 87 def attr_falsey_or_empty?(key) !@attrs[key] || @attrs[key].respond_to?(:empty?) && @attrs[key].empty? end
attrs_for_object(key1, key2 = nil)
click to toggle source
# File lib/taxjar/base.rb, line 91 def attrs_for_object(key1, key2 = nil) if key2.nil? @attrs[key1] else attrs = @attrs.dup attrs.delete(key1).merge(key2 => attrs) end end