diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2011-04-06 17:26:55 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2011-04-06 17:26:55 -0700 |
commit | 76c2ea7882a83159408bdf1f7c363f442a65c4f1 (patch) | |
tree | 274b06de880449018c6d4d94cbc6dccb60d7c50b /actionpack/lib/action_dispatch | |
parent | 0ca69ca65f83b4bb34f81f077c1c38c66ad868b9 (diff) | |
download | rails-76c2ea7882a83159408bdf1f7c363f442a65c4f1.tar.gz rails-76c2ea7882a83159408bdf1f7c363f442a65c4f1.tar.bz2 rails-76c2ea7882a83159408bdf1f7c363f442a65c4f1.zip |
favor composition over inheritance, have FlashHash delegate to a Hash
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r-- | actionpack/lib/action_dispatch/middleware/flash.rb | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/flash.rb b/actionpack/lib/action_dispatch/middleware/flash.rb index 6eda1f31a7..98dbe13438 100644 --- a/actionpack/lib/action_dispatch/middleware/flash.rb +++ b/actionpack/lib/action_dispatch/middleware/flash.rb @@ -72,11 +72,13 @@ module ActionDispatch end end - class FlashHash < Hash + class FlashHash + include Enumerable + def initialize #:nodoc: - super - @used = Set.new - @closed = false + @used = Set.new + @closed = false + @flashes = {} end attr_reader :closed @@ -86,19 +88,50 @@ module ActionDispatch def []=(k, v) #:nodoc: raise ClosedError, :flash if closed? keep(k) - super + @flashes[k] = v + end + + def [](k) + @flashes[k] end def update(h) #:nodoc: h.keys.each { |k| keep(k) } - super + @flashes.update h + self + end + + def keys + @flashes.keys + end + + def delete(key) + @flashes.delete key + self + end + + def to_hash + @flashes.dup + end + + def empty? + @flashes.empty? + end + + def clear + @flashes.clear + end + + def each(&block) + @flashes.each(&block) end alias :merge! :update def replace(h) #:nodoc: @used = Set.new - super + @flashes.replace h + self end # Sets a flash that will not be available to the next action, only to the current. |