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