Class: ActionController::Flash::FlashHash

Inherits:
Hash
  • Object
show all
Defined in:
lib/rails_4_session_flash_backport/rails2/flash_hash.rb,
lib/rails_4_session_flash_backport/rails4/flash_hash.rb,
lib/rails_4_session_flash_backport/rails3-0/flash_hash.rb,
lib/rails_4_session_flash_backport/rails3-1/flash_hash.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

._load(args) ⇒ Object



45
46
47
# File 'lib/rails_4_session_flash_backport/rails4/flash_hash.rb', line 45

def self._load(args)
  {}
end

.from_session_value(value) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rails_4_session_flash_backport/rails2/flash_hash.rb', line 9

def self.from_session_value(value)
  case value
  when FlashHash # Rails 2.3
    value.tap(&:sweep)
  when ::ActionDispatch::Flash::FlashHash # Rails 3.2
    flashes = value.instance_variable_get(:@flashes)
    if discard = value.instance_variable_get(:@used).presence
      flashes.except!(*discard)
    end

    new_from_session(flashes)
  when Hash # Rails 4.0
    flashes = value['flashes'] || {}
    if discard = value['discard'].presence
      flashes.except!(*discard)
    end

    new_from_session(flashes)
  else
    new
  end
end

Instance Method Details

#hashify(selected) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/rails_4_session_flash_backport/rails2/flash_hash.rb', line 38

def hashify(selected)
  if selected.respond_to?(:to_h)
    selected.to_h
  else
    selected
  end
end

#store(session, key = "flash") ⇒ Object



46
47
48
# File 'lib/rails_4_session_flash_backport/rails2/flash_hash.rb', line 46

def store(session, key = "flash")
  session[key] = to_session_value
end

#to_session_valueObject



32
33
34
35
36
# File 'lib/rails_4_session_flash_backport/rails2/flash_hash.rb', line 32

def to_session_value
  return nil if empty?
  discard = hashify(@used.select { |_, used| used }).keys
  {'flashes' => Hash[to_a].except(*discard)}
end