class Gigya::GigyaDynamicImplementation
Attributes
area[RW]
connection[RW]
data_keys[RW]
data_results[RW]
function[RW]
Public Instance Methods
blank?()
click to toggle source
# File lib/gigya/connection.rb, line 62 def blank? to_value.blank? end
clone_gdi()
click to toggle source
# File lib/gigya/connection.rb, line 26 def clone_gdi gdi = GigyaDynamicImplementation.new gdi.connection = connection gdi.area = area gdi.function = function gdi.data_results = data_results gdi.data_keys = (data_keys || []).clone return gdi end
empty?()
click to toggle source
# File lib/gigya/connection.rb, line 66 def empty? to_value.empty? end
gdi_value()
click to toggle source
# File lib/gigya/connection.rb, line 37 def gdi_value current_result = data_results data_keys.each do |k| current_result = current_result[k] return nil if current_result == nil end return current_result end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/gigya/connection.rb, line 70 def method_missing(name, *args, &block) name = name.to_s gdi = clone_gdi if data_results == nil if(name[-1..-1] == "=" && args.size == 1) field_name = name[0..-2] if self.area == nil raise "Can't run a setter on #{area}" else function_name = "set" + field_name.camelize return connection.api_get(area, function_name, val) end elsif args.size == 0 field_name = name function_name = "get" + field_name.camelize results = connection.api_get(area, function_name) gdi.function = function_name gdi.data_results = results gdi.data_keys = [] return gdi end else field_name = name if field_name[-1..-1] == "=" field_name = field_name[0..-2] if field_name[0..1] == "__" field_name = field_name[2..-1] else field_name = field_name.camelize(:lower) end setter_hash = {} cur_hashpoint = setter_hash curval = gdi.data_results gdi.data_keys.each do |k| curval = curval[k] if Hash === curval cur_hashpoint[k] = {} cur_hashpoint = cur_hashpoint[k] elsif Array === curval cur_hashpoint[k] = [] cur_hashpoint = cur_hashpoint[k] else cur_hashpoint[k] = curval cur_hashpoint = curval end end cur_hashpoint[field_name] = args[0] setter_hash.keys.each do |k| val = setter_hash[k] if Hash === val || Array === val val = val.to_json setter_hash[k] = val end end return connection.api_get(area, function.gsub(/^get/, "set"), setter_hash) else if field_name[0..1] == "__" # This is an escape sequence to maintain capitalization field_name = field_name[2..-1] else field_name = field_name.camelize(:lower) end gdi.data_keys.push(field_name) val = gdi.to_value if Hash === val || Array === val || val == nil return gdi else return val end end end super end
nil?()
click to toggle source
# File lib/gigya/connection.rb, line 58 def nil? to_value.nil? end
to_h()
click to toggle source
# File lib/gigya/connection.rb, line 46 def to_h gdi_value end
to_hash()
click to toggle source
# File lib/gigya/connection.rb, line 50 def to_hash gdi_value end
to_value()
click to toggle source
# File lib/gigya/connection.rb, line 54 def to_value gdi_value end