Module: CacheableFlash::CookieFlash
- Included in:
- CacheableFlash, Middleware
- Defined in:
- lib/cacheable_flash/cookie_flash.rb
Instance Method Summary collapse
Instance Method Details
#cookie_flash(flash, cookies) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/cacheable_flash/cookie_flash.rb', line 11 def (flash, ) cflash = (JSON.parse(['flash']) if ['flash']) || {} rescue {} flash.each do |key, value| # key like :notice, or :error, or :sticky # When stacking we won't be escaping anything here, because will be array, not string value = ERB::Util.html_escape(value) if value.kind_of?(String) && !value.html_safe? # Since v0.3.0 only escaping strings skey = key.to_s # This allows any data type to be stored in the cookie; important for using an array as the value with # stackable_flash # The cookie flash will generally be set to a value stacked according to the :stack_with_proc of stackable_flash # But when there is already a value for the cookie when we get here, we need to join them somehow. stacked_value = value.respond_to?(:stack) ? value.stack : value if cflash[skey].kind_of?(Array) # Just because it could be an array if stacked_value.kind_of?(Array) cflash[skey] += stacked_value else cflash[skey] << stacked_value end else cflash[skey] = stacked_value end end # I have forgotten why the gsub + matters, so NOTE: to future self: document weird shit. cflash.to_json.gsub("+", "%2B") end |