Module: Atacama

Defined in:
lib/atacama.rb,
lib/atacama/step.rb,
lib/atacama/types.rb,
lib/atacama/values.rb,
lib/atacama/version.rb,
lib/atacama/contract.rb,
lib/atacama/transaction.rb,
lib/atacama/contract/context.rb,
lib/atacama/contract/parameter.rb,
lib/atacama/contract/validator.rb,
lib/atacama/transaction/definition.rb

Defined Under Namespace

Modules: Types, Values Classes: Context, Contract, Definition, Parameter, Step, Transaction, Validator

Constant Summary collapse

OptionTypeMismatchError =
Class.new(StandardError)
ReturnTypeMismatchError =
Class.new(StandardError)
ResultTypeMismatchError =
Class.new(StandardError)
VERSION =
'0.2.2'.freeze

Class Method Summary collapse

Class Method Details

.check(type, value) ⇒ Object

Execute a type check, catch and yield if theres an error.

Parameters:

  • type (Dry::Types?)

    type to check

  • value (Object)

    object to execute with



20
21
22
23
24
25
# File 'lib/atacama.rb', line 20

def self.check(type, value)
  type && type[value]
  nil
rescue Dry::Types::ConstraintError => exception
  yield exception
end

.format_exception(klass, exception, description) ⇒ Object

Generate more human readable error messages for type errors.

Parameters:

  • klass (Class)

    the class dispatching the exception

  • exception (Dry::Types::)


31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/atacama.rb', line 31

def self.format_exception(klass, exception, description)
  [
    '',
    '',
    'Source:',
    "  #{klass}",
    '',
    'Description:',
    "  #{description}",
    '',
    'Error:',
    "  The value #{exception.input.inspect} failed the following test: #{exception.result}",
    ''
  ].join("\n")
end