Class: FlashMessenger::Messages::Base

Inherits:
Object
  • Object
show all
Extended by:
ActiveModel::Naming
Includes:
ActiveModel::AttributeMethods, ActiveModel::Model, ActiveModel::Serializers::JSON
Defined in:
lib/flash_messenger/messages/base.rb

Direct Known Subclasses

Nonpersistent, Persistent

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(level, translation, **i18n_params) ⇒ Base

Returns a new instance of Base.



11
12
13
# File 'lib/flash_messenger/messages/base.rb', line 11

def initialize(level, translation, **i18n_params)
  @i18n_params, @level, @translation = i18n_params, level, translation
end

Instance Attribute Details

#i18n_paramsObject

Normalize hash and force :raise so we can catch exceptions



16
17
18
# File 'lib/flash_messenger/messages/base.rb', line 16

def i18n_params
  @i18n_params
end

#levelObject

Returns the value of attribute level.



9
10
11
# File 'lib/flash_messenger/messages/base.rb', line 9

def level
  @level
end

#translationObject

Returns the value of attribute translation.



9
10
11
# File 'lib/flash_messenger/messages/base.rb', line 9

def translation
  @translation
end

Class Method Details

.alert(message, **i18n_params) ⇒ Object



103
104
105
# File 'lib/flash_messenger/messages/base.rb', line 103

def self.alert(message, **i18n_params)
  new(:alert, message, **i18n_params)
end

.class_nameObject



123
124
125
# File 'lib/flash_messenger/messages/base.rb', line 123

def self.class_name
  model_name.element
end

.error(message, **i18n_params) ⇒ Object



107
108
109
# File 'lib/flash_messenger/messages/base.rb', line 107

def self.error(message, **i18n_params)
  new(:error, message, **i18n_params)
end

.from_session(json) ⇒ Object



143
144
145
# File 'lib/flash_messenger/messages/base.rb', line 143

def self.from_session(json)
  new(:stub, nil).from_json(json, false)
end

.info(message, **i18n_params) ⇒ Object



111
112
113
# File 'lib/flash_messenger/messages/base.rb', line 111

def self.info(message, **i18n_params)
  new(:info, message, **i18n_params)
end

.notice(message, **i18n_params) ⇒ Object



115
116
117
# File 'lib/flash_messenger/messages/base.rb', line 115

def self.notice(message, **i18n_params)
  new(:notice, message, **i18n_params)
end

Instance Method Details

#<=>(other) ⇒ Object

Overridden Comparison Operators



46
47
48
49
50
51
52
53
54
# File 'lib/flash_messenger/messages/base.rb', line 46

def <=>(other)
  return (self.message <=> other) if other.is_a?(String)
  return nil unless other.is_a?(self.class)
  my_values = [self.message, self.level, self.class_name]
  other_values = [other.message, other.level, self.class_name]
  (my_values <=> other_values)
rescue NoMethodError
  nil
end

#alert?Boolean

Message Helpers (by level)

Returns:

  • (Boolean)


87
88
89
# File 'lib/flash_messenger/messages/base.rb', line 87

def alert?
  @level == :alert
end

#attributesObject



161
162
163
# File 'lib/flash_messenger/messages/base.rb', line 161

def attributes
  instance_values
end

#attributes=(hash) ⇒ Object



155
156
157
158
159
# File 'lib/flash_messenger/messages/base.rb', line 155

def attributes=(hash)
  hash.each do |key, value|
    send("#{key}=", value)
  end
end

#class_nameObject



119
120
121
# File 'lib/flash_messenger/messages/base.rb', line 119

def class_name
  self.class.model_name.element
end

#eql?(other) ⇒ Boolean Also known as: ==

Returns:

  • (Boolean)


56
57
58
# File 'lib/flash_messenger/messages/base.rb', line 56

def eql?(other)
  (self.<=> other) == 0
end

#error?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'lib/flash_messenger/messages/base.rb', line 91

def error?
  @level == :error
end

#from_json(json, include_root = include_root_in_json) ⇒ Object

Serialization Helpers



131
132
133
# File 'lib/flash_messenger/messages/base.rb', line 131

def from_json(json, include_root=include_root_in_json)
  super(JSON.parse(json).tap { |this| this.delete('class') }.to_json)
end

#info?Boolean

Returns:

  • (Boolean)


95
96
97
# File 'lib/flash_messenger/messages/base.rb', line 95

def info?
  @level == :info
end

#match?(other) ⇒ Boolean Also known as: match

Returns:

  • (Boolean)


60
61
62
63
64
65
66
67
68
69
70
# File 'lib/flash_messenger/messages/base.rb', line 60

def match?(other)
  if other.is_a?(self.class)
    us = "#{self.class_name}, #{self.level}, #{self.message}"
    them = "#{self.class_name}, #{self.level}, #{self.message}"
    return us =~ them
  elsif other.is_a?(String)
    return self.to_s =~ %r(#{other})
  end

  nil
end

#messageObject



29
30
31
32
33
34
35
36
# File 'lib/flash_messenger/messages/base.rb', line 29

def message
  I18n.translate(self.translation, **self.i18n_params)
rescue I18n::MissingTranslationData
  return self.translation.join('.') if self.translation.is_a?(Array)
  self.translation
# rescue I18n::MissingInterpolationArgument
  # TODO
end

#notice?Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/flash_messenger/messages/base.rb', line 99

def notice?
  @level == :notice
end

#persistent?Boolean

Message Interface Definitions

Returns:

  • (Boolean)

Raises:

  • (NotImplementedError)


79
80
81
# File 'lib/flash_messenger/messages/base.rb', line 79

def persistent?
  raise NotImplementedError
end

#serializable_hash(options = {}) ⇒ Object



135
136
137
# File 'lib/flash_messenger/messages/base.rb', line 135

def serializable_hash(options = {})
  super.merge({ 'class' => self.class_name })
end

#to_sObject



38
39
40
# File 'lib/flash_messenger/messages/base.rb', line 38

def to_s
  self.message.strip
end

#to_sessionObject



139
140
141
# File 'lib/flash_messenger/messages/base.rb', line 139

def to_session
  serializable_hash.to_json
end