Class: Flame::Flash::FlashArray
- Inherits:
-
Object
- Object
- Flame::Flash::FlashArray
- Defined in:
- lib/flame/flash_array.rb
Overview
A subclass of Array that “remembers forward” by exactly one action. Tastes just like the API of Rails’s ActionController::Flash::FlashHash, but with fewer calories.
Instance Attribute Summary collapse
-
#next ⇒ Object
readonly
Returns the value of attribute next.
-
#now ⇒ Object
readonly
Returns the value of attribute now.
Instance Method Summary collapse
- #[](type = nil) ⇒ Object
-
#[]=(type, text) ⇒ Object
We assign to the next hash, but retrieve values from the now hash.
- #each(&block) ⇒ Object
-
#initialize(session, parent = nil, scope = nil) ⇒ FlashArray
constructor
Builds a new FlashHash.
-
#merge(hash) ⇒ Object
Mass adding to next.
- #scope(scope = nil) ⇒ Object
Constructor Details
#initialize(session, parent = nil, scope = nil) ⇒ FlashArray
Builds a new FlashHash. It takes the hash for this action’s values as an initialization variable.
11 12 13 14 15 16 17 |
# File 'lib/flame/flash_array.rb', line 11 def initialize(session, parent = nil, scope = nil) @now = session || [] @next = [] @parent = parent || self @scope = scope end |
Instance Attribute Details
#next ⇒ Object (readonly)
Returns the value of attribute next.
7 8 9 |
# File 'lib/flame/flash_array.rb', line 7 def next @next end |
#now ⇒ Object (readonly)
Returns the value of attribute now.
7 8 9 |
# File 'lib/flame/flash_array.rb', line 7 def now @now end |
Instance Method Details
#[](type = nil) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/flame/flash_array.rb', line 41 def [](type = nil) selected = @parent.now.select do |hash| condition(hash, type: type, scope: @scope) end # p 'flash[]', type, @scope, selected selected.map { |hash| hash[:text] } end |
#[]=(type, text) ⇒ Object
We assign to the next hash, but retrieve values from the now hash. Freaky, huh?
31 32 33 34 35 36 37 38 39 |
# File 'lib/flame/flash_array.rb', line 31 def []=(type, text) return text.each { |el| self[type] = el } if text.is_a?(Array) hash = { type: type, text: text } # p @parent == self, @scope hash[:scope] = @scope if @parent != self # p hash @parent.next.push(hash) # p @parent.next end |
#each(&block) ⇒ Object
49 50 51 |
# File 'lib/flame/flash_array.rb', line 49 def each(&block) @now.each(&block) end |
#merge(hash) ⇒ Object
Mass adding to next
54 55 56 |
# File 'lib/flame/flash_array.rb', line 54 def merge(hash) hash.each { |type, text| self[type] = text } end |
#scope(scope = nil) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/flame/flash_array.rb', line 19 def scope(scope = nil) # p 'scope', scope return self unless scope self.class.new( @now.select { |hash| condition(hash, scope: scope) }, self, scope ) end |