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