class Preserve::Callback

Attributes

controller[R]
options[R]
parameter_key[R]
source_class[R]

Public Class Methods

new(source_class, parameter_key, options) click to toggle source
# File lib/preserve/callback.rb, line 9
def initialize(source_class, parameter_key, options)
  @source_class = source_class
  @parameter_key = parameter_key
  @options = options
end

Public Instance Methods

before(controller) click to toggle source
# File lib/preserve/callback.rb, line 15
def before(controller)
  @controller = controller

  if parameter_blank?
    parameter_stored? ? restore_parameter : set_default_value
  else
    store_parameter
  end
end

Private Instance Methods

parameter_blank?() click to toggle source
# File lib/preserve/callback.rb, line 32
def parameter_blank?
  predicate = options[:allow_blank] ? :nil? : :blank?
  parameter_value.__send__(predicate)
end
parameter_stored?() click to toggle source
# File lib/preserve/callback.rb, line 37
def parameter_stored?
  session.key?(session_key)
end
parameter_value() click to toggle source
# File lib/preserve/callback.rb, line 53
def parameter_value
  keys = Array(parameter_key)
  keys.reduce(params) { |h, k| h[k] if h.is_a?(HASH_CLASS) }
end
parameter_value=(value) click to toggle source
# File lib/preserve/callback.rb, line 58
def parameter_value=(value)
  *keys, last_key = parameter_key

  nested_hash = keys.reduce(params) do |hash, key|
    hash[key] ||= HASH_CLASS.new
  end

  nested_hash[last_key] = value
end
restore_parameter() click to toggle source
# File lib/preserve/callback.rb, line 41
def restore_parameter
  self.parameter_value = session[session_key]
end
session_key() click to toggle source
# File lib/preserve/callback.rb, line 68
def session_key
  SessionKey.new(source_class, parameter_key).build
end
set_default_value() click to toggle source
# File lib/preserve/callback.rb, line 45
def set_default_value
  self.parameter_value = options[:default] if options[:default]
end
store_parameter() click to toggle source
# File lib/preserve/callback.rb, line 49
def store_parameter
  session[session_key] = parameter_value
end