class FlashMessenger::Storage
Attributes
locale[RW]
messages[RW]
Public Class Methods
from_session(json)
click to toggle source
# File lib/flash_messenger/storage.rb, line 103 def self.from_session(json) new.from_json(json, false) end
new(locale = DEFAULT_LOCALE.to_sym)
click to toggle source
# File lib/flash_messenger/storage.rb, line 10 def initialize(locale = DEFAULT_LOCALE.to_sym) @locale, @messages = locale.to_sym, [] end
Public Instance Methods
<<(message)
click to toggle source
# File lib/flash_messenger/storage.rb, line 14 def <<(message) return unless message.is_a?(Messages::Base) return if @messages.any? { |i| message.eql?(i) } @messages << message end
add(klass, level, msg, **i18n_params)
click to toggle source
# File lib/flash_messenger/storage.rb, line 75 def add(klass, level, msg, **i18n_params) classify(klass).send(level, msg, **i18n_params).tap do |instance| self.<< instance end end
alert(msg, klass = DEFAULT_MESSAGE_KLASS, **i18n_params)
click to toggle source
# File lib/flash_messenger/storage.rb, line 59 def alert(msg, klass = DEFAULT_MESSAGE_KLASS, **i18n_params) add(klass, :alert, msg, **i18n_params) end
alerts()
click to toggle source
Message Helpers (by level)
# File lib/flash_messenger/storage.rb, line 43 def alerts @messages.select(&:alert?) end
attributes()
click to toggle source
# File lib/flash_messenger/storage.rb, line 121 def attributes instance_values end
attributes=(hash)
click to toggle source
# File lib/flash_messenger/storage.rb, line 115 def attributes=(hash) hash.each do |key, value| send("#{key}=", value) end end
delete(message_or_translation)
click to toggle source
# File lib/flash_messenger/storage.rb, line 31 def delete(message_or_translation) matcher = /#{message_or_translation}/ @messages.delete_if do |message| message.to_s =~ matcher || message.translation =~ matcher end end
each_message(&block)
click to toggle source
# File lib/flash_messenger/storage.rb, line 20 def each_message(&block) read_messages = [] I18n.with_locale(@locale) do @messages.each do |message| block.call(message) if block_given? read_messages << message unless message.persistent? end end read_messages.each { |i| @messages.delete(i) } end
error(msg, klass = DEFAULT_MESSAGE_KLASS, **i18n_params)
click to toggle source
# File lib/flash_messenger/storage.rb, line 63 def error(msg, klass = DEFAULT_MESSAGE_KLASS, **i18n_params) add(klass, :error, msg, **i18n_params) end
errors()
click to toggle source
# File lib/flash_messenger/storage.rb, line 47 def errors @messages.select(&:error?) end
from_json(json, include_root = include_root_in_json)
click to toggle source
Serialization Helpers
Calls superclass method
# File lib/flash_messenger/storage.rb, line 85 def from_json(json, include_root = include_root_in_json) super.tap do |instance| instance.messages = instance.messages.collect do |m| m.is_a?(Hash) ? classify(m['class']).from_session(m.to_json) : m end end end
info(msg, klass = DEFAULT_MESSAGE_KLASS, **i18n_params)
click to toggle source
# File lib/flash_messenger/storage.rb, line 67 def info(msg, klass = DEFAULT_MESSAGE_KLASS, **i18n_params) add(klass, :info, msg, **i18n_params) end
infos()
click to toggle source
# File lib/flash_messenger/storage.rb, line 55 def infos @messages.select(&:info?) end
notice(msg, klass = DEFAULT_MESSAGE_KLASS, **i18n_params)
click to toggle source
# File lib/flash_messenger/storage.rb, line 71 def notice(msg, klass = DEFAULT_MESSAGE_KLASS, **i18n_params) add(klass, :notice, msg, **i18n_params) end
notices()
click to toggle source
# File lib/flash_messenger/storage.rb, line 51 def notices @messages.select(&:notice?) end
serializable_hash()
click to toggle source
Calls superclass method
# File lib/flash_messenger/storage.rb, line 93 def serializable_hash super.tap do |instance| instance['messages'].map!(&:serializable_hash) end end
to_session()
click to toggle source
# File lib/flash_messenger/storage.rb, line 99 def to_session serializable_hash.to_json end
Private Instance Methods
attribute_contrived?(attr)
click to toggle source
# File lib/flash_messenger/storage.rb, line 127 def attribute_contrived?(attr) true end
classify(name)
click to toggle source
Normalize :persistent / :nonpersistent to actual class reference
# File lib/flash_messenger/storage.rb, line 136 def classify(name) return name unless name.is_a?(String) || name.is_a?(Symbol) "::FlashMessenger::Messages::#{name.to_s.classify}".safe_constantize end
clear_attribute(attr)
click to toggle source
# File lib/flash_messenger/storage.rb, line 131 def clear_attribute(attr) send("#{attr}=", nil) end