class Wordpress::Object::Base
Attributes
client[R]
request[R]
Public Class Methods
new(client = Wordpress.client, response = {})
click to toggle source
# File lib/wordpress/object/base.rb, line 25 def initialize(client = Wordpress.client, response = {}) @client = client assign(response) end
options()
click to toggle source
# File lib/wordpress/object/base.rb, line 11 def options @options ||= {} end
Private Class Methods
attr_parameter(*args)
click to toggle source
# File lib/wordpress/object/base.rb, line 17 def attr_parameter(*args) opt = args[-1].is_a?(Hash) ? args.pop : {} args.each do |arg| options[arg.to_s] = opt.dup end end
Public Instance Methods
[](name)
click to toggle source
# File lib/wordpress/object/base.rb, line 35 def [](name) name = name.to_s get_object(name) if available_object?(name) end
assign(response)
click to toggle source
# File lib/wordpress/object/base.rb, line 30 def assign(response) @response = Hash[response.map{ |k, v| [k.to_s.downcase, v] }] self end
respond_to_missing?(method_name, include_private = false)
click to toggle source
Calls superclass method
# File lib/wordpress/object/base.rb, line 44 def respond_to_missing?(method_name, include_private = false) name = method_name.to_s is_setter = name.to_s[-1] == '=' ? !!name.pop : false (is_setter && available_object?(name[0..-1])) || available_object?(name) || super end
to_hash()
click to toggle source
# File lib/wordpress/object/base.rb, line 40 def to_hash @response.dup end
Private Instance Methods
available_object?(name)
click to toggle source
# File lib/wordpress/object/base.rb, line 63 def available_object?(name) name = name.to_s options.include?(name) end
get_object(name)
click to toggle source
# File lib/wordpress/object/base.rb, line 68 def get_object(name) name = name.to_s v = @response[name] if options && options[name] && (as = options[name][:as]) if as.is_a?(Proc) as.call(client, v) elsif as.is_a?(String) Wordpress::Object.const_get(as).new(client, v) else as.new(v) end elsif v.is_a?(Hash) Wordpress::OpenStruct.new(v) else v end end
method_missing(method_name, *arguments, &block)
click to toggle source
Calls superclass method
# File lib/wordpress/object/base.rb, line 52 def method_missing(method_name, *arguments, &block) name = method_name.to_s is_setter = name.to_s[-1] == '=' if is_setter return set_object(name[0...-1], *arguments) if available_object?(name[0...-1]) else return get_object(name) if available_object?(name) end super(method_name, *arguments, &block) end
options()
click to toggle source
# File lib/wordpress/object/base.rb, line 90 def options self.class.options.freeze end
set_object(name, v)
click to toggle source
# File lib/wordpress/object/base.rb, line 86 def set_object(name, v) @response[name] = v end