class ACTV::Base
Attributes
attrs[R]
body[R]
Public Class Methods
attr_reader(*attrs)
click to toggle source
Define methods that retrieve the value from an initialized instance variable Hash, using the attribute as a key
@overload self. attr_reader
(attr)
@param attr [Symbol]
@overload self. attr_reader
(attrs)
@param attrs [Array<Symbol>]
# File lib/actv/base.rb, line 15 def self.attr_reader(*attrs) attrs.each do |attribute| define_attribute_method(attribute) define_predicate_method(attribute) end end
define_attribute_method(key1, klass=nil, key2=nil)
click to toggle source
# File lib/actv/base.rb, line 49 def self.define_attribute_method(key1, klass=nil, key2=nil) define_method(key1) do memoize(key1) do if klass.nil? @attrs[key1] else if @attrs[key1] if key2.nil? ACTV.const_get(klass).new(@attrs[key1]) else attrs = @attrs.dup value = attrs.delete(key1) ACTV.const_get(klass).new(value.update(key2 => attrs)) end else ACTV::NullObject.instance end end end end end
define_predicate_method(key1, key2=key1)
click to toggle source
# File lib/actv/base.rb, line 71 def self.define_predicate_method(key1, key2=key1) define_method(:"#{key1}?") do !!@attrs[key2] end end
define_uri_method(key1, key2)
click to toggle source
# File lib/actv/base.rb, line 41 def self.define_uri_method(key1, key2) define_method(key1) do memoize(key1) do ::URI.parse(@attrs[key2]) if @attrs[key2] end end end
from_response(response={})
click to toggle source
# File lib/actv/base.rb, line 77 def self.from_response response={} new response[:body] end
new(attrs={})
click to toggle source
# File lib/actv/base.rb, line 81 def initialize attrs={} @attrs = attrs || {} end
object_attr_reader(klass, key1, key2=nil)
click to toggle source
# File lib/actv/base.rb, line 22 def self.object_attr_reader(klass, key1, key2=nil) define_attribute_method(key1, kass, key2) define_predicate_method(key1) end
uri_attr_reader(*attrs)
click to toggle source
# File lib/actv/base.rb, line 27 def self.uri_attr_reader(*attrs) attrs.each do |uri_key| array = uri_key.to_s.split("_") index = array.index("uri") array[index] = "url" url_key = array.join("_").to_sym define_uri_method(uri_key, url_key) define_predicate_method(uri_key, url_key) alias_method(url_key, uri_key) alias_method("#{url_key}?", "#{uri_key}?") end end
Public Instance Methods
[](method)
click to toggle source
# File lib/actv/base.rb, line 93 def [](method) send(method) rescue NoMethodError nil end
delete(key)
click to toggle source
# File lib/actv/base.rb, line 85 def delete key attrs.delete key end
memoize(key, &block)
click to toggle source
# File lib/actv/base.rb, line 99 def memoize(key, &block) ivar = :"@#{key}" return instance_variable_get(ivar) if instance_variable_defined?(ivar) result = block.call instance_variable_set(ivar, result) end
method_missing(meth, *args, &block)
click to toggle source
Calls superclass method
# File lib/actv/base.rb, line 106 def method_missing(meth, *args, &block) if @attrs && @attrs.has_key?(meth) @attrs[meth] elsif meth.to_s.include?('=') and !args.empty? @attrs[meth[0..-2].to_sym] = args.first else super end end
respond_to?(meth, *args)
click to toggle source
Calls superclass method
# File lib/actv/base.rb, line 116 def respond_to?(meth, *args) if @attrs && @attrs.has_key?(meth) true else super end end
to_hash()
click to toggle source
Creation of object hash when sending request to soap
# File lib/actv/base.rb, line 125 def to_hash hash = {} hash["attrs"] = @attrs self.instance_variables.keep_if { |key| key != :@attrs }.each do |var| val = self.instance_variable_get(var) hash["attrs"][var.to_s.delete("@").to_sym] = val.to_hash if val.is_a? ACTV::Base end hash["attrs"] end
update(key)
click to toggle source
# File lib/actv/base.rb, line 89 def update key attrs.update key end
Protected Instance Methods
attr_equal(attr, other)
click to toggle source
@param attr [Symbol] @param other [ACTV::Base] @return [Boolean]
# File lib/actv/base.rb, line 142 def attr_equal(attr, other) self.class == other.class && !other.send(attr).nil? && send(attr) == other.send(attr) end
attrs_equal(other)
click to toggle source
@param other [ACTV::Base] @return [Boolean]
# File lib/actv/base.rb, line 148 def attrs_equal(other) self.class == other.class && !other.attrs.empty? && attrs == other.attrs end