Stannum

A library for defining and validating data structures.

Class: Stannum::Constraints::Signature

Parent Namespace
Stannum::Constraints
Inherited Classes
Stannum::Constraints::Base > Object
Defined In
lib/stannum/constraints/signature.rb

Table Of Contents

Overview

Constraint for matching objects by the methods they respond to.

Examples

constraint = Stannum::Constraints::Signature.new(:[], :keys)

constraint.matches?(Object.new) #=> false
constraint.matches?([])         #=> false
constraint.matches?({})         #=> true

Back To Top

Direct Subclasses

Stannum::Constraints::Signatures::Map, Stannum::Constraints::Signatures::Tuple

Back To Top

Constants

NEGATED_TYPE

= 'stannum.constraints.has_methods'

The :type of the error generated for a matching object.

TYPE

= 'stannum.constraints.does_not_have_methods'

The :type of the error generated for a non-matching object.

Back To Top

Constructor

#initialize(*expected_methods, **options) => Signature

Parameters

Returns

Back To Top

Instance Attributes

#expected_methods => Array<String, Symbol> (readonly)

Returns

#options => Hash<Symbol, Object>

Inherited From
Stannum::Constraints::Base

Returns

Back To Top

Instance Methods

#==(other) => true, false

Inherited From
Stannum::Constraints::Base

Performs an equality comparison.

Parameters

Returns

#clone(freeze: nil) => Stannum::Constraints::Base

Inherited From
Stannum::Constraints::Base

Produces a shallow copy of the constraint.

Parameters

Returns

#does_not_match?(actual) => true, false

Returns

#dup => Stannum::Constraints::Base

Inherited From
Stannum::Constraints::Base

Produces a shallow copy of the constraint.

Returns

#errors_for(actual, errors: nil) => Stannum::Errors

Note: This method should only be called for an object that does not match the constraint. Generating errors for a matching object can result in undefined behavior.

Generates an errors object for the given object.

The errors object represents the difference between the given object and the expected properties or behavior. It may be the same for all objects, or different based on the details of the object or the constraint.

Examples

Generating errors for a non-matching object.

constraint = CustomConstraint.new
object     = NonMatchingObject.new
errors     = constraint.errors_for(object)

errors.class #=> Stannum::Errors
errors.to_a  #=> [{ type: 'some_error', message: 'some error message' }]

Parameters

Returns

See Also

#match(actual) => Object

Inherited From
Stannum::Constraints::Base

Checks the given object against the constraint and returns errors, if any.

This method checks the given object against the expected properties or behavior. If the object matches the constraint, #match will return true. If the object does not match the constraint, #match will return false and the generated errors for that object.

Examples

Checking a matching object.

constraint = CustomConstraint.new
object     = MatchingObject.new

success, errors = constraint.match(object)
success #=> true
errors  #=> nil

Checking a non-matching object.

constraint = CustomConstraint.new
object     = NonMatchingObject.new

success, errors = constraint.match(object)
success      #=> false
errors.class #=> Stannum::Errors
errors.to_a  #=> [{ type: 'some_error', message: 'some error message' }]

Parameters

See Also

#matches?(actual) => true, false

Also known as: match?

Returns

#message => String, nil

Inherited From
Stannum::Constraints::Base

Returns

#negated_errors_for(actual, errors: nil) => Stannum::Errors

Note: This method should only be called for an object that matches the constraint. Generating errors for a matching object can result in undefined behavior.

Generates an errors object for the given object when negated.

The errors object represents the difference between the given object and the expected properties or behavior when the constraint is negated. It may be the same for all objects, or different based on the details of the object or the constraint.

Examples

Generating errors for a matching object.

constraint = CustomConstraint.new
object     = MatchingObject.new
errors     = constraint.negated_errors_for(object)

errors.class #=> Stannum::Errors
errors.to_a  #=> [{ type: 'some_error', message: 'some error message' }]

Parameters

Returns

See Also

#negated_match(actual) => Object

Inherited From
Stannum::Constraints::Base

Checks the given object against the constraint and returns errors, if any.

This method checks the given object against the expected properties or behavior. If the object matches the constraint, #negated_match will return false and the generated errors for that object. If the object does not match the constraint, #negated_match will return true.

Examples

Checking a matching object.

constraint = CustomConstraint.new
object     = MatchingObject.new

success, errors = constraint.negated_match(object)
success      #=> false
errors.class #=> Stannum::Errors
errors.to_a  #=> [{ type: 'some_error', message: 'some error message' }]

Checking a non-matching object.

constraint = CustomConstraint.new
object     = NonMatchingObject.new

success, errors = constraint.negated_match(object)
success #=> true
errors  #=> nil

Parameters

See Also

#negated_message => String, nil

Inherited From
Stannum::Constraints::Base

Returns

#negated_type => String

Inherited From
Stannum::Constraints::Base

Returns

#type => String

Inherited From
Stannum::Constraints::Base

Returns

#with_options(**options) => Stannum::Constraints::Base

Inherited From
Stannum::Constraints::Base

Creates a copy of the constraint and updates the copy’s options.

Parameters

Returns

Back To Top


Back to Documentation | Reference | Stannum | Stannum::Constraints