Class: Roda::RodaPlugins::Flash::FlashHash

Inherits:
Hash
  • Object
show all
Defined in:
lib/roda/plugins/flash.rb

Overview

Simple flash hash, where assiging to the hash updates the flash used in the following request.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash = {}) ⇒ FlashHash

Setup the next hash when initializing, and handle treat nil as a new empty hash.



55
56
57
58
# File 'lib/roda/plugins/flash.rb', line 55

def initialize(hash={})
  super(hash||{})
  @next = {}
end

Instance Attribute Details

#nextObject (readonly)

The flash hash for the next request. This is what gets written to by #[]=.



48
49
50
# File 'lib/roda/plugins/flash.rb', line 48

def next
  @next
end

Instance Method Details

#[]=(k, v) ⇒ Object

Update the next hash with the given key and value.



61
62
63
# File 'lib/roda/plugins/flash.rb', line 61

def []=(k, v)
  @next[k] = v
end

#discard(key = (no_arg=true)) ⇒ Object

Remove given key from the next hash, or clear the next hash if no argument is given.



67
68
69
70
71
72
73
# File 'lib/roda/plugins/flash.rb', line 67

def discard(key=(no_arg=true))
  if no_arg
    @next.clear
  else
    @next.delete(key)
  end
end

#keep(key = (no_arg=true)) ⇒ Object

Copy the entry with the given key from the current hash to the next hash, or copy all entries from the current hash to the next hash if no argument is given.



78
79
80
81
82
83
84
# File 'lib/roda/plugins/flash.rb', line 78

def keep(key=(no_arg=true))
  if no_arg
    @next.merge!(self)
  else
    self[key] = self[key]
  end
end

#sweepObject

Replace the current hash with the next hash and clear the next hash.



87
88
89
90
91
# File 'lib/roda/plugins/flash.rb', line 87

def sweep
  replace(@next)
  @next.clear
  self
end