class CloudConvert::Base
Attributes
@return [Hash]
@return [Hash]
@return [Hash]
Public Class Methods
Define methods that retrieve the value from attributes
@param attrs [Array, Symbol]
# File lib/cloudconvert/base.rb, line 14 def attr_reader(*attrs) attrs.each do |attr| define_attribute_method(attr) define_predicate_method(attr) end end
Define collection methods from attributes
@param klass [Symbol] @param attrs [Array, Symbol]
# File lib/cloudconvert/base.rb, line 25 def collection_attr_reader(klass, *attrs) attrs.each do |attr| define_collection_method(attr, klass) define_predicate_method(attr) end end
Initializes a new object
@param attrs [Hash] @return [CloudConvert::Base]
# File lib/cloudconvert/base.rb, line 163 def initialize(attrs = {}) @attrs = attrs || {} end
Define object methods from attributes
@param klass [Symbol] @param attrs [Array, Symbol]
# File lib/cloudconvert/base.rb, line 36 def object_attr_reader(klass, *attrs) attrs.each do |attr| define_object_method(attr, klass) define_predicate_method(attr) end end
Define predicate methods from attributes
@param attrs [Array, Symbol]
# File lib/cloudconvert/base.rb, line 46 def predicate_attr_reader(*attrs) attrs.each do |attr| define_predicate_method(attr) end end
Define struct methods from attributes
@param attrs [Array, Symbol]
# File lib/cloudconvert/base.rb, line 55 def struct_attr_reader(*attrs) attrs.each do |attr| define_struct_method(attr) define_predicate_method(attr) end end
Define symbol methods from attributes
@param attrs [Array, Symbol]
# File lib/cloudconvert/base.rb, line 65 def symbol_attr_reader(*attrs) attrs.each do |attr| define_symbol_method(attr) end end
Define time methods from attributes
@param attrs [Array, Symbol]
# File lib/cloudconvert/base.rb, line 74 def time_attr_reader(*attrs) attrs.each do |attr| define_time_method(attr) define_predicate_method(attr.to_s.gsub(/_at$/, ""), attr) end end
Private Class Methods
Dynamically define a method for an attribute
@param key [Symbol] @param klass [Symbol]
# File lib/cloudconvert/base.rb, line 87 def define_attribute_method(key) define_method(key) do @attrs[key] end memoize(key) end
Dynamically define a collection method for an attribute
@param key [Symbol] @param klass [Symbol]
# File lib/cloudconvert/base.rb, line 98 def define_collection_method(key, klass) define_method(key) do collection = @attrs[key] || [] entity = CloudConvert.const_get(klass) Collection.new collection.map { |item| entity.new(item) } end memoize(key) end
Dynamically define a object method for an attribute
@param key [Symbol]
# File lib/cloudconvert/base.rb, line 121 def define_object_method(key, klass) define_method(key) do CloudConvert.const_get(klass).new(@attrs[key]) unless @attrs[key].nil? end memoize(key) end
Dynamically define a predicate method for an attribute
@param key1 [Symbol] @param key2 [Symbol]
# File lib/cloudconvert/base.rb, line 111 def define_predicate_method(key1, key2 = key1) define_method(:"#{key1}?") do !attr_falsey_or_empty?(key2) end memoize(:"#{key1}?") end
Dynamically define a struct method for an attribute
@param key [Symbol]
# File lib/cloudconvert/base.rb, line 131 def define_struct_method(key) define_method(key) do OpenStruct.new(@attrs[key]) unless @attrs[key].nil? end memoize(key) end
Dynamically define a symbol method for an attribute
@param key [Symbol]
# File lib/cloudconvert/base.rb, line 141 def define_symbol_method(key) define_method(key) do @attrs[key].to_sym unless @attrs[key].nil? end memoize(key) end
Dynamically define a time method for an attribute
@param key [Symbol]
# File lib/cloudconvert/base.rb, line 151 def define_time_method(key) define_method(key) do Time.parse(@attrs[key]).utc unless @attrs[key].nil? end memoize(key) end
Private Instance Methods
# File lib/cloudconvert/base.rb, line 169 def attr_falsey_or_empty?(key) !@attrs[key] || @attrs[key].respond_to?(:empty?) && @attrs[key].empty? end