Sha256: 49f031855dfb48c695e4d48b38a7f2d41deba1ab7be945b0eec642eeeb0f0c8d
Contents?: true
Size: 1.5 KB
Versions: 1
Compression:
Stored size: 1.5 KB
Contents
# frozen_string_literal: true require "active_support/concern" module HtmlSafeFlash module FlashHashExtension extend ActiveSupport::Concern class_methods do def from_session_value(*) super.tap do |flash| flash.send(:deserialize_html_safe_values) end end end def to_session_value serialize_html_safe_values super end private HTML_SAFE_KEYS = "_html_safe_keys" def deserialize_html_safe_values safe_keys = @flashes.delete(HTML_SAFE_KEYS) safe_values = @flashes.slice(*safe_keys) safe_values.each do |key, value| @flashes[key] = html_safe_value_or_array(value) end end def serialize_html_safe_values safe_keys = @flashes.except(*@discard).filter_map do |key, value| key if html_safe_string?(value) || html_safe_array?(value) end if safe_keys.empty? @flashes.delete(HTML_SAFE_KEYS) else @flashes[HTML_SAFE_KEYS] = safe_keys end end def html_safe_value_or_array(value) if value.respond_to?(:html_safe) value.html_safe elsif value.is_a?(Array) value.map do |item| item.respond_to?(:html_safe) ? item.html_safe : item end else value end end def html_safe_array?(value) value.is_a?(Array) && value.any? && value.all?(&method(:html_safe_string?)) end def html_safe_string?(value) value.is_a?(ActiveSupport::SafeBuffer) && value.html_safe? end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
html_safe_flash-0.2.0 | lib/html_safe_flash/flash_hash_extension.rb |