Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Use Set#subtract and Set#merge for keeping track of used / unused keys

  • Loading branch information...
commit ea35967524797c0ae82333bdef3667ddb0934d05 1 parent b88a181
@tenderlove tenderlove authored
Showing with 4 additions and 15 deletions.
  1. +4 −15 actionpack/lib/action_dispatch/middleware/flash.rb
View
19 actionpack/lib/action_dispatch/middleware/flash.rb
@@ -163,7 +163,8 @@ def now
# flash.keep # keeps the entire flash
# flash.keep(:notice) # keeps only the "notice" entry, the rest of the flash is discarded
def keep(k = nil)
- use(k, false)
+ @used.subtract Array(k || keys)
+ k ? self[k] : self
end
# Marks the entire flash or a single flash entry to be discarded by the end of the current action:
@@ -171,7 +172,8 @@ def keep(k = nil)
# flash.discard # discard the entire flash at the end of the current action
# flash.discard(:warning) # discard only the "warning" entry at the end of the current action
def discard(k = nil)
- use(k)
+ @used.merge Array(k || keys)
+ k ? self[k] : self
end
# Mark for removal entries that were kept, and delete unkept ones.
@@ -215,19 +217,6 @@ def notice=(message)
def now_is_loaded?
@now
end
-
- private
- # Used internally by the <tt>keep</tt> and <tt>discard</tt> methods
- # use() # marks the entire flash as used
- # use('msg') # marks the "msg" entry as used
- # use(nil, false) # marks the entire flash as unused (keeps it around for one more action)
- # use('msg', false) # marks the "msg" entry as unused (keeps it around for one more action)
- # Returns the single value for the key you asked to be marked (un)used or the FlashHash itself
- # if no key is passed.
- def use(key = nil, used = true)
- Array(key || keys).each { |k| used ? @used << k : @used.delete(k) }
- return key ? self[key] : self
- end
end
def initialize(app)
Please sign in to comment.
Something went wrong with that request. Please try again.