Class: Sevgi::ValidationError

Inherits:
Error
  • Object
show all
Defined in:
lib/sevgi/standard/errors.rb

Overview

Base class for SVG standard validation errors.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context, args = []) ⇒ void

Builds a validation error with a context label and offending values.

Parameters:

  • context (Object)

    validation context included in the error message

  • args (Array<Object>, Object) (defaults to: [])

    invalid values included in the error message



10
11
12
13
14
15
# File 'lib/sevgi/standard/errors.rb', line 10

def initialize(context, args = [])
  @context = context
  @args = Array(args)

  super()
end

Class Method Details

.call(context, args = []) ⇒ void

This method returns an undefined value.

Raises this validation error class.

Parameters:

  • context (Object)

    validation context included in the error message

  • args (Array<Object>, Object) (defaults to: [])

    invalid values included in the error message

Raises:



22
23
24
# File 'lib/sevgi/standard/errors.rb', line 22

def self.call(context, args = [])
  raise new(context, args)
end

.variant(message) ⇒ Class<Sevgi::ValidationError>

Builds a validation error subclass with a fixed message fragment.

Parameters:

  • message (String)

    message fragment placed after the validation context

Returns:



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/sevgi/standard/errors.rb', line 29

def self.variant(message)
  Class.new(self) do
    define_method(:message) do
      [@context, message]
        .tap do |messages|
          messages << @args.map { "'#{it}'" }.join(", ") unless @args.empty?
        end
        .join(": ")
    end
  end
end