Class: Dryv::Errors

Inherits:
Object
  • Object
show all
Defined in:
lib/dryv/errors.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(messages = {}) ⇒ Errors

Returns a new instance of Errors.



6
7
8
# File 'lib/dryv/errors.rb', line 6

def initialize(messages = {})
  @messages = messages
end

Instance Attribute Details

#messagesObject (readonly)

Returns the value of attribute messages.



4
5
6
# File 'lib/dryv/errors.rb', line 4

def messages
  @messages
end

Instance Method Details

#add(key, message) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/dryv/errors.rb', line 11

def add(key, message)
  keys = key.to_s.split('.').map!(&:to_sym)
  old  = messages.dig(*keys[0...-1]) rescue {}
  old  = {} unless old.is_a?(Hash)
  new  = keys[0...-1].inject(messages) { |h, k| h[k] ||= {} rescue h = {}; h[k] = {} }
  new[keys.last] = [] unless new.is_a?(Array)
  new[keys.last] << message
  new.merge!(old)
end

#any?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/dryv/errors.rb', line 30

def any?
  messages.any?
end

#cloneObject



46
47
48
# File 'lib/dryv/errors.rb', line 46

def clone
  self.class.new(messages.clone)
end

#first_messageObject



41
42
43
# File 'lib/dryv/errors.rb', line 41

def first_message
  fetch_messages(messages.values.first).first
end

#has_key?(key) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
38
# File 'lib/dryv/errors.rb', line 35

def has_key?(key)
  keys = key.to_s.split('.').map!(&:to_sym)
  keys.size == 1 ? messages[keys.first].present? : (messages.dig(*keys[0...-1])[keys.last].present? rescue false)
end

#merge!(error, parent_key = nil) ⇒ Object



22
23
24
25
26
27
# File 'lib/dryv/errors.rb', line 22

def merge!(error, parent_key = nil)
  hash_to_dots(error.messages, {}, parent_key).each do |key, messages|
    messages.each { |message| add(key, message) }
  end
  messages
end