class Hessian2::StructWrapper
Attributes
values[R]
Public Class Methods
new(klass, object)
click to toggle source
# File lib/hessian2/struct_wrapper.rb, line 5 def initialize(klass, object) raise "klass should not be nil: #{klass}" unless klass if klass.is_a?(Array) is_multi = true members = klass.first.members elsif klass.is_a?(String) if klass.include?('[') is_multi = true members = Kernel.const_get(klass.delete('[]')).members else is_multi = false members = Kernel.const_get(klass).members end else is_multi = false members = klass.members end if is_multi values = [] object.each do |o| values << get_values(members, o) end else values = get_values(members, object) end @values = values end
Private Instance Methods
get_values(members, object)
click to toggle source
# File lib/hessian2/struct_wrapper.rb, line 39 def get_values(members, object) return nil unless object values = [] if object.is_a?(Hash) members.each{|f| values << (object[f] || object[f.to_s]) } elsif object.instance_variable_get(:@values).is_a?(Hash) attrs = object.values members.each{|f| values << attrs[f] } elsif object.instance_variable_get(:@attributes).is_a?(Hash) attrs = object.attributes members.each{|f| values << attrs[f.to_s] } else members.each{|f| values << object.instance_variable_get(f.to_s.prepend('@')) } end values end