Class: Lawyer::Contract

Inherits:
Object
  • Object
show all
Defined in:
lib/lawyer/contract.rb

Class Method Summary collapse

Class Method Details

.check!(subject) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/lawyer/contract.rb', line 14

def check!(subject)
  klass = subject.is_a?(Class) ? subject : subject.class

  violations = self.clauses.map do |clause|
    clause.check(klass)
  end
  violations.compact!

  if violations.any?
    raise Lawyer::BrokenContract.new(klass, self, violations)
  end
end

.clausesObject



6
7
8
# File 'lib/lawyer/contract.rb', line 6

def clauses
  @clauses ||= []
end

.confirm(clause) ⇒ Object



10
11
12
# File 'lib/lawyer/contract.rb', line 10

def confirm(clause)
  self.clauses << Lawyer::Clause.new(clause)
end