class Jet::Contract::Check::Set

Attributes

checks[R]

Public Class Methods

new(*checks) click to toggle source
# File lib/jet/contract/check/set.rb, line 9
def initialize(*checks)
  @checks = []
  checks.each { |c| add!(c) }
  @checks.freeze
end

Public Instance Methods

call(output) click to toggle source
# File lib/jet/contract/check/set.rb, line 15
def call(output)
  @checks.each do |(check, *args)|
    check.(output, *args).tap { |r| return r if Jet.failure?(r) }
  end
  Result.success(output)
end
to_builder() click to toggle source
# File lib/jet/contract/check/set.rb, line 22
def to_builder
  @checks.map { |(c, *args)| [c.name].concat(args) }
end

Private Instance Methods

add!(check) click to toggle source
# File lib/jet/contract/check/set.rb, line 28
def add!(check)
  case check
  when Array
    add_with_args!(check.first, *check[1..-1])
  when Hash
    check.each { |c, args| add_with_args!(c, args) }
  when Check
    add_with_args!(check)
  else
    Jet.type_check!(check.inspect, check, Array, Hash, Check)
  end
  @checks
end
add_with_args!(check, *args) click to toggle source
# File lib/jet/contract/check/set.rb, line 42
def add_with_args!(check, *args)
  Jet.type_check!(check.inspect, check, Check)
  @checks << [check].concat(args)
end