class FormJourney::Parameters

Public Class Methods

new(attributes = nil, session) click to toggle source
Calls superclass method
# File lib/form_journey/parameters.rb, line 3
def initialize(attributes = nil, session)
  @session = (session || {})
  @session.deep_merge!(attributes.deep_symbolize_keys) if attributes
  super(@session)
end

Public Instance Methods

[]=(key, value) click to toggle source
Calls superclass method
# File lib/form_journey/parameters.rb, line 14
def []=(key, value)
  super
  update_session
end
add_to_array(*path, value:, unique: false) click to toggle source
# File lib/form_journey/parameters.rb, line 56
def add_to_array(*path, value:, unique: false)
  array = Array(get(*path))
  array << value
  array.uniq! if unique
  set(*path, value: array)
end
clear!() click to toggle source
# File lib/form_journey/parameters.rb, line 9
def clear!
  replace({})
  @session.clear
end
del(*keys) click to toggle source
# File lib/form_journey/parameters.rb, line 28
def del(*keys)
  parent_param = self
  while !keys.empty?
    return nil if parent_param.nil?

    if keys.length == 1
      del_param = parent_param.try(:delete, keys.shift)
      update_session
      return del_param
    end
    parent_param = parent_param[keys.shift]
  end
end
get(*keys) click to toggle source
# File lib/form_journey/parameters.rb, line 19
def get(*keys)
  params = to_hash
  while !keys.empty?
    return nil if params.nil?
    params = params[keys.shift.to_s]
  end
  params
end
remove_from_array(*path, value:) click to toggle source
# File lib/form_journey/parameters.rb, line 63
def remove_from_array(*path, value:)
  array = Array(get(*path))
  array.select! { |v| v != value }
  set(*path, value: array)
end
require(key) click to toggle source
# File lib/form_journey/parameters.rb, line 69
def require(key)
  ActionController::Parameters.new(to_hash).require(key)
end
set(*keys, value:) click to toggle source
# File lib/form_journey/parameters.rb, line 42
def set(*keys, value:)
  parent_param = self
  while !keys.empty?
    return nil if parent_param.nil?

    if keys.length == 1
      parent_param[keys.shift] = value
      update_session
      return self
    end
    parent_param = parent_param[keys.shift]
  end
end

Private Instance Methods

update_session() click to toggle source
# File lib/form_journey/parameters.rb, line 75
def update_session
  @session.clear
  @session.merge!(deep_symbolize_keys)
end