module Rad class Flash < OpenObject attr_accessor :previous_messages, :current_messages def initialize format, previous_messages = {} self.current_messages, self.previous_messages = {}, previous_messages @keep = false end def [] key key = key.to_s if keep? previous_messages[key] else current_messages[key] || previous_messages[key] end end def []= key, value current_messages[key.to_s] = value.to_s end def keep! @keep = true self end def keep? !!@keep end def messages_for_next_request if keep? current_messages else {} end end end end