class DuckPond::Contract

Public Class Methods

clauses() click to toggle source

clauses

Gets this contract’s list of clauses or returns an empty array if uninitialized.

# File lib/duckpond/contract.rb, line 23
def clauses
  @clauses ||= []
end
each_clause() { |clauses| ... } click to toggle source

each_clause

Iterator for clauses

# File lib/duckpond/contract.rb, line 32
def each_clause
  0.upto(clauses.size-1) do |i|
    yield @clauses[i]
  end
end
fulfilled_by!(obj) click to toggle source

fulfilled_by!

Raises a ContractInfringementError unless this contract fulfills the passed in object, otherwise returns true.

# File lib/duckpond/contract.rb, line 79
def fulfilled_by!(obj)
  DuckPond::Inspection.new(obj).tap do |inspection|
    unless inspection.fulfilled_by? self
      raise ContractInfringementError.new(self, obj, inspection)
    else
      return true
    end
  end
end
Also aliased as: fulfills!
fulfilled_by?(obj) click to toggle source

fulfilled_by?

Returns true if this contract fulfills the passed-in object, otherwise false.

# File lib/duckpond/contract.rb, line 64
def fulfilled_by?(obj)
  DuckPond::Inspection.new(obj).tap do |inspection|
    return inspection.fulfilled_by? self
  end
end
Also aliased as: fulfills?
fulfills!(obj)

For backward compatibility

Alias for: fulfilled_by!
fulfills?(obj)

For backward compatibility

Alias for: fulfilled_by?
has_clause(clause_klass, opts = {}, &block) click to toggle source

has_clause

add a clause to the contract’s list of clauses

# File lib/duckpond/contract.rb, line 43
def has_clause(clause_klass, opts = {}, &block)
  clauses << clause_klass.new(opts, block)
end
include_clauses_from(other_contract) click to toggle source

include_clauses_from

Facilitates composition of multiple contracts

# File lib/duckpond/contract.rb, line 52
def include_clauses_from(other_contract)
  other_contract.each_clause do |other_clause|
    has_clause other_clause.class, other_clause.options, &other_clause.block
  end
end