class Shoulda::Matchers::ActionController::FlashStore

@private

def self.future

def self.future
  new
end

def self.now

def self.now
  new.use_now!
end

def copy_discard_if_necessary(original_flash, new_flash)

def copy_discard_if_necessary(original_flash, new_flash)
  discard = original_flash.instance_variable_get('@discard').dup
  new_flash.instance_variable_set('@discard', discard)
end

def copy_flashes(original_flash, new_flash)

def copy_flashes(original_flash, new_flash)
  flashes = original_flash.instance_variable_get('@flashes').dup
  new_flash.instance_variable_set('@flashes', flashes)
end

def copy_of_flash_from_controller

def copy_of_flash_from_controller
  controller.flash.dup.tap do |flash|
    copy_flashes(controller.flash, flash)
    copy_discard_if_necessary(controller.flash, flash)
  end
end

def flash

def flash
  @_flash ||= copy_of_flash_from_controller
end

def has_key?(key)

def has_key?(key)
  values_to_check.include?(key.to_s)
end

def has_value?(expected_value)

def has_value?(expected_value)
  values_to_check.values.any? do |actual_value|
    expected_value === actual_value
  end
end

def initialize

def initialize
  @use_now = false
end

def keys_to_discard

def keys_to_discard
  flash.instance_variable_get('@discard')
end

def name

def name
  if @use_now
    'flash.now'
  else
    'flash'
  end
end

def set_values

def set_values
  flash.instance_variable_get('@flashes')
end

def use_now!

def use_now!
  @use_now = true
  self
end

def values_to_check

def values_to_check
  if @use_now
    set_values.slice(*keys_to_discard.to_a)
  else
    set_values.except(*keys_to_discard.to_a)
  end
end