Class: Assertion::Inverter

Inherits:
Object
  • Object
show all
Includes:
DSL::Caller
Defined in:
lib/assertion/inverter.rb

Overview

Builds inversions for instances of some ‘Assertion::Base` subclass

Examples:

IsAdult = Assertion.about :name, :age do
  age >= 18
end

joe = OpenStruct.new(name: "Joe", age: 40)

child = Inverter.new(IsAdult)
child[name: "Joe"].validate!
# => #<Assertion::InvalidError @messages=["Joe is an adult (age 40)"]>

Instance Attribute Summary collapse

Class Method Summary collapse

Methods included from DSL::Caller

#[]

Instance Attribute Details

#sourceClass (readonly)

Returns The ‘Assertion::Base` sublcass to build negators for.

Returns:

  • (Class)

    The ‘Assertion::Base` sublcass to build negators for



26
27
28
# File 'lib/assertion/inverter.rb', line 26

def source
  @source
end

Class Method Details

.initialize(source) ⇒ Object



37
38
39
40
# File 'lib/assertion/inverter.rb', line 37

def initialize(source)
  @source = source
  IceNine.deep_freeze(self)
end

.new(hash = {}) ⇒ Assertion::Inverter::Inversion

Initializes a [#source] object and builds a negator for it

Parameters:

  • hash (Hash) (defaults to: {})

    The hash of attributes to apply the assertion to

Returns:

  • (Assertion::Inverter::Inversion)


# File 'lib/assertion/inverter.rb', line 28