Sha256: 35ab6b231d5d88079ec89480528718e0524b6951256194f9d0e7a6dd82c8391a

Contents?: true

Size: 546 Bytes

Versions: 10

Compression:

Stored size: 546 Bytes

Contents

module Compel

  class Contract

    attr_reader :object, :schema

    def initialize(object, schema)
      @object = object
      @schema = schema
    end

    def validate
      Result.new(setup!.validate)
    end

    private

    def setup!
      validator_klass.new(object, schema)
    end

    def validator_klass
      if schema.type == Coercion::Hash
        Validators::HashValidator
      elsif schema.type == Coercion::Array
        Validators::ArrayValidator
      else
        Validators::TypeValidator
      end
    end

  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
compel-0.5.1 lib/compel/contract.rb
compel-0.5.0 lib/compel/contract.rb
compel-0.4.3 lib/compel/contract.rb
compel-0.4.2 lib/compel/contract.rb
compel-0.4.0 lib/compel/contract.rb
compel-0.3.7 lib/compel/contract.rb
compel-0.3.6 lib/compel/contract.rb
compel-0.3.4 lib/compel/contract.rb
compel-0.3.2 lib/compel/contract.rb
compel-0.3.1 lib/compel/contract.rb