Module: Julewire::Core::Records::Severity

Defined in:
lib/julewire/core/records/severity.rb

Constant Summary collapse

VALUES =
%i[debug info warn error fatal unknown].freeze
STRING_VALUES =
VALUES.to_h { [it.name, it] }.freeze
RANKS =
VALUES.each_with_index.to_h.freeze
LOGGER_INTEGER_VALUES =
VALUES.each_with_index.to_h.invert.freeze

Class Method Summary collapse

Class Method Details

.normalize(value) ⇒ Object

Raises:

  • (ArgumentError)


14
15
16
17
18
19
20
21
# File 'lib/julewire/core/records/severity.rb', line 14

def normalize(value)
  return value if RANKS.key?(value)

  severity = severity_symbol(value)
  return severity if RANKS.key?(severity)

  raise ArgumentError, "unsupported severity: #{value.inspect}"
end

.rank(value) ⇒ Object



34
35
36
37
38
39
# File 'lib/julewire/core/records/severity.rb', line 34

def rank(value)
  rank = RANKS[value]
  return rank unless rank.nil?

  RANKS.fetch(normalize(value))
end

.severity_symbol(value) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/julewire/core/records/severity.rb', line 23

def severity_symbol(value)
  case value
  when Symbol
    value.downcase
  when String
    STRING_VALUES[value.downcase]
  when Integer
    LOGGER_INTEGER_VALUES[value]
  end
end