Class: SelfSysteem::InstanceVariablesBuilder
- Inherits:
-
Object
- Object
- SelfSysteem::InstanceVariablesBuilder
- Includes:
- ActionView::Helpers::NumberHelper
- Defined in:
- lib/self_systeem/instance_variables_builder.rb
Instance Attribute Summary collapse
-
#controller ⇒ Object
readonly
Returns the value of attribute controller.
-
#instance_variable_objects ⇒ Object
readonly
Returns the value of attribute instance_variable_objects.
-
#relevant_instance_varaibles ⇒ Object
readonly
Returns the value of attribute relevant_instance_varaibles.
Class Method Summary collapse
Instance Method Summary collapse
- #build_variables ⇒ Object
- #call ⇒ Object
-
#initialize(controller) ⇒ InstanceVariablesBuilder
constructor
A new instance of InstanceVariablesBuilder.
- #slice_hash(hash, regex) ⇒ Object
- #transform_hash(original, options = {}, &block) ⇒ Object
Constructor Details
#initialize(controller) ⇒ InstanceVariablesBuilder
Returns a new instance of InstanceVariablesBuilder.
7 8 9 |
# File 'lib/self_systeem/instance_variables_builder.rb', line 7 def initialize(controller) @controller = controller end |
Instance Attribute Details
#controller ⇒ Object (readonly)
Returns the value of attribute controller.
5 6 7 |
# File 'lib/self_systeem/instance_variables_builder.rb', line 5 def controller @controller end |
#instance_variable_objects ⇒ Object (readonly)
Returns the value of attribute instance_variable_objects.
5 6 7 |
# File 'lib/self_systeem/instance_variables_builder.rb', line 5 def instance_variable_objects @instance_variable_objects end |
#relevant_instance_varaibles ⇒ Object (readonly)
Returns the value of attribute relevant_instance_varaibles.
5 6 7 |
# File 'lib/self_systeem/instance_variables_builder.rb', line 5 def relevant_instance_varaibles @relevant_instance_varaibles end |
Class Method Details
.call(controller) ⇒ Object
57 58 59 |
# File 'lib/self_systeem/instance_variables_builder.rb', line 57 def self.call(controller) new(controller).call end |
Instance Method Details
#build_variables ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# 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 ⇒ Object
11 12 13 14 |
# File 'lib/self_systeem/instance_variables_builder.rb', line 11 def call build_variables self end |
#slice_hash(hash, regex) ⇒ Object
51 52 53 54 55 |
# 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) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/self_systeem/instance_variables_builder.rb', line 39 def transform_hash(original, ={}, &block) original.inject({}){|result, (key,value)| value = if ([:deep] && Hash === value) transform_hash(value, , &block) else value end block.call(result,key,value) result } end |