class CloudConvert::Base

Attributes

attrs[R]

@return [Hash]

to_h[R]

@return [Hash]

to_hash[R]

@return [Hash]

Public Class Methods

attr_reader(*attrs) click to toggle source

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
collection_attr_reader(klass, *attrs) click to toggle source

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
new(attrs = {}) click to toggle source

Initializes a new object

@param attrs [Hash] @return [CloudConvert::Base]

# File lib/cloudconvert/base.rb, line 163
def initialize(attrs = {})
  @attrs = attrs || {}
end
object_attr_reader(klass, *attrs) click to toggle source

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
predicate_attr_reader(*attrs) click to toggle source

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
struct_attr_reader(*attrs) click to toggle source

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
symbol_attr_reader(*attrs) click to toggle source

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
time_attr_reader(*attrs) click to toggle source

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

define_attribute_method(key) click to toggle source

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
define_collection_method(key, klass) click to toggle source

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
define_object_method(key, klass) click to toggle source

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
define_predicate_method(key1, key2 = key1) click to toggle source

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
define_struct_method(key) click to toggle source

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
define_symbol_method(key) click to toggle source

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
define_time_method(key) click to toggle source

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

attr_falsey_or_empty?(key) click to toggle source
# File lib/cloudconvert/base.rb, line 169
def attr_falsey_or_empty?(key)
  !@attrs[key] || @attrs[key].respond_to?(:empty?) && @attrs[key].empty?
end