class NxtErrorRegistry::DefaultCodeValidator

Constants

CodeAlreadyTakenError
FORMAT
InvalidCodeFormatError
LEGACY_FORMAT

Attributes

code[R]
context[R]
name[R]
type[R]

Public Class Methods

new(name, type, code, context) click to toggle source
# File lib/nxt_error_registry/default_code_validator.rb, line 9
def initialize(name, type, code, context)
  @name = name
  @type = type
  @code = code
  @context = context
end

Public Instance Methods

validate() click to toggle source
# File lib/nxt_error_registry/default_code_validator.rb, line 16
def validate
  validate_code_format
  validate_code_uniqueness

  code
end

Private Instance Methods

registry() click to toggle source
# File lib/nxt_error_registry/default_code_validator.rb, line 40
def registry
  NxtErrorRegistry::Registry.instance
end
validate_code_format() click to toggle source
# File lib/nxt_error_registry/default_code_validator.rb, line 27
def validate_code_format
  return if code =~ FORMAT

  raise InvalidCodeFormatError, "Code #{code} for name #{name} violates format #{FORMAT} in context: #{context}"
end
validate_code_uniqueness() click to toggle source
# File lib/nxt_error_registry/default_code_validator.rb, line 33
def validate_code_uniqueness
  duplicates = registry.duplicated_codes
  return if duplicates.empty?

  raise CodeAlreadyTakenError, "The following codes are duplicated: #{duplicates.keys.join(',')}"
end