class ActionParamsPermitter::Builders::Resource
Command class for building hash for permitting resource
Parameters: name - name of the building resource state - current state of the builder
Returns: new state
Attributes
name[R]
state[R]
Public Class Methods
new(name, state)
click to toggle source
# File lib/action_params_permitter/builders/resource.rb, line 16 def initialize(name, state) @name, @state = name, state end
Public Instance Methods
call(&block)
click to toggle source
# File lib/action_params_permitter/builders/resource.rb, line 20 def call(&block) if hash_state? process_hash_state(&block) else process_array_state(&block) end end
Private Instance Methods
child_hash()
click to toggle source
# File lib/action_params_permitter/builders/resource.rb, line 57 def child_hash state.detect {|el| el.is_a?(Hash)} end
gen_empty_builder(&block)
click to toggle source
# File lib/action_params_permitter/builders/resource.rb, line 53 def gen_empty_builder(&block) Builders::Main.new([]).instance_eval(&block) || [] end
gen_sub_state(&block)
click to toggle source
# File lib/action_params_permitter/builders/resource.rb, line 49 def gen_sub_state(&block) block_given? ? gen_empty_builder(&block) : [] end
hash_state?()
click to toggle source
# File lib/action_params_permitter/builders/resource.rb, line 30 def hash_state? state.is_a?(Hash) end
process_array_state(&block)
click to toggle source
# File lib/action_params_permitter/builders/resource.rb, line 39 def process_array_state(&block) sub_state = gen_sub_state(&block) if state_has_hash? child_hash.merge!(name => sub_state) else state << {name => sub_state } end state end
process_hash_state(&block)
click to toggle source
# File lib/action_params_permitter/builders/resource.rb, line 34 def process_hash_state(&block) state[name] = gen_empty_builder(&block) state end
state_has_hash?()
click to toggle source
# File lib/action_params_permitter/builders/resource.rb, line 61 def state_has_hash? !child_hash.nil? end