class SelfSysteem::InstanceVariablesBuilder
Attributes
controller[R]
instance_variable_objects[R]
relevant_instance_varaibles[R]
Public Class Methods
call(controller)
click to toggle source
# File lib/self_systeem/instance_variables_builder.rb, line 57 def self.call(controller) new(controller).call end
new(controller)
click to toggle source
# File lib/self_systeem/instance_variables_builder.rb, line 7 def initialize(controller) @controller = controller end
Public Instance Methods
build_variables()
click to toggle source
# File lib/self_systeem/instance_variables_builder.rb, line 16 def build_variables @relevant_instance_varaibles = controller .instance_variable_names.reject {|v| v[/@_/] || v == "@marked_for_same_origin_verification"} @instance_variable_objects = {} relevant_instance_varaibles.each do |v| iv_val = controller.instance_variable_get(v) if iv_val.class.name.match(/ActiveRecord::AssociationRelation|ActiveRecord::Associations::CollectionProxy/) instance_variable_objects.merge!(v.to_s => { }) iv_val.each do |o| instance_variable_objects[v.to_s].merge!(o.attributes.select {|k, v| k.to_s.match(/^id|_id/)}) end elsif iv_val.respond_to?(:attributes) instance_variable_objects.merge!({ v.to_s => iv_val.attributes.select {|k, v| k.to_s.match(/^id|_id/)} }) elsif iv_val.present? && iv_val.class.ancestors.select {|c| c.to_s.match(/ActiveModel|ActiveRecord/)}.present? && iv_val.is_a?(Symbol) != true instance_variable_objects.merge!({ v.to_s => slice_hash(JSON.parse(iv_val.to_json), /^id|_id/) }) elsif iv_val.respond_to?(:instance_values) instance_variable_objects.merge!({ v.to_s => iv_val.instance_values.select {|k, v| k.to_s.match(/^id|_id/)} }) else instance_variable_objects.merge!({ v.to_s => iv_val.to_s }) end end end
call()
click to toggle source
# File lib/self_systeem/instance_variables_builder.rb, line 11 def call build_variables self end
slice_hash(hash, regex)
click to toggle source
# File lib/self_systeem/instance_variables_builder.rb, line 51 def slice_hash(hash, regex) transform_hash(hash, :deep => true) {|hash, key, value| hash[key] = value if (value.is_a?(Hash) || key.to_s.match(regex) ) } end
transform_hash(original, options={}, &block)
click to toggle source
# File lib/self_systeem/instance_variables_builder.rb, line 39 def transform_hash(original, options={}, &block) original.inject({}){|result, (key,value)| value = if (options[:deep] && Hash === value) transform_hash(value, options, &block) else value end block.call(result,key,value) result } end