module Pathway::Plugins::DryValidation::V1_0::ClassMethods

Attributes

auto_wire_options[RW]
contract_class[R]
contract_options[R]

Public Instance Methods

build_contract(opts = {}) click to toggle source
# File lib/pathway/plugins/dry_validation/v1_0.rb, line 32
def build_contract(opts = {})
  @builded_contract || contract_class.new(opts)
end
contract(base = nil, &block) click to toggle source
# File lib/pathway/plugins/dry_validation/v1_0.rb, line 11
def contract(base = nil, &block)
  if block_given?
    base ||= _base_contract
    self.contract_class = Class.new(base, &block)
  elsif base
    self.contract_class = base
  else
    raise ArgumentError, 'Either a contract class or a block must be provided'
  end
end
contract_class=(klass) click to toggle source
# File lib/pathway/plugins/dry_validation/v1_0.rb, line 26
def contract_class= klass
  @contract_class = klass
  @contract_options = (klass.dry_initializer.options - Dry::Validation::Contract.dry_initializer.options).map(&:target)
  @builded_contract = @contract_options.empty? && klass.schema ? klass.new : nil
end
inherited(subclass) click to toggle source
Calls superclass method
# File lib/pathway/plugins/dry_validation/v1_0.rb, line 36
def inherited(subclass)
  super
  subclass.contract_class = contract_class
  subclass.auto_wire_options = auto_wire_options
end
params(*args, &block) click to toggle source
# File lib/pathway/plugins/dry_validation/v1_0.rb, line 22
def params(*args, &block)
  contract { params(*args, &block) }
end

Private Instance Methods

_base_contract() click to toggle source
# File lib/pathway/plugins/dry_validation/v1_0.rb, line 44
def _base_contract
  superclass.respond_to?(:contract_class) ? superclass.contract_class : Dry::Validation::Contract
end