Module: Troupe::Contract::ClassMethods

Defined in:
lib/troupe/contract.rb

Instance Method Summary collapse

Instance Method Details

#all_propertiesObject



100
# File 'lib/troupe/contract.rb', line 100

def all_properties;       property_table.all_properties; end

#default_for(attr) ⇒ Object



101
# File 'lib/troupe/contract.rb', line 101

def default_for(attr);    property_table.default_for(attr); end

#expected_and_permitted_propertiesObject



105
106
107
# File 'lib/troupe/contract.rb', line 105

def expected_and_permitted_properties
  property_table.expected_and_permitted_properties
end

#expected_propertiesObject



97
# File 'lib/troupe/contract.rb', line 97

def expected_properties;  property_table.expected_properties; end

#expects(*args, &block) ⇒ Object

Sugar for core DSL



81
82
83
# File 'lib/troupe/contract.rb', line 81

def expects(*args, &block)
  presence_is(:expected, args, block)
end

#missing_properties(context) ⇒ Object



103
# File 'lib/troupe/contract.rb', line 103

def missing_properties(context);   property_table.missing_properties(context); end

#on_violation(&block) ⇒ Object



75
76
77
# File 'lib/troupe/contract.rb', line 75

def on_violation(&block)
  @on_violation_block = block
end

#on_violation_blockObject



93
94
95
# File 'lib/troupe/contract.rb', line 93

def on_violation_block
  @on_violation_block
end

#on_violation_for(*args, &block) ⇒ Object



68
69
70
71
72
73
# File 'lib/troupe/contract.rb', line 68

def on_violation_for(*args, &block)
  args.each do |arg|
    next unless property = property_table.get(arg)
    property.on_violation = block
  end
end

#permits(*args, &block) ⇒ Object



85
86
87
# File 'lib/troupe/contract.rb', line 85

def permits(*args, &block)
  presence_is(:permitted, args, block)
end

#permitted_propertiesObject



98
# File 'lib/troupe/contract.rb', line 98

def permitted_properties; property_table.permitted_properties; end

#property(attr, opts = {}, &block) ⇒ Object

Core DSL



61
62
63
64
65
66
# File 'lib/troupe/contract.rb', line 61

def property(attr, opts={}, &block)
  opts.merge!(default: block) if block
  property_table.set(attr, opts)

  delegate_properties
end

#provided_propertiesObject



99
# File 'lib/troupe/contract.rb', line 99

def provided_properties;  property_table.provided_properties; end

#provides(*args, &block) ⇒ Object



89
90
91
# File 'lib/troupe/contract.rb', line 89

def provides(*args, &block)
  presence_is(:provided, args, block)
end

#violation_block_for(attr) ⇒ Object



102
# File 'lib/troupe/contract.rb', line 102

def violation_block_for(attr);     property_table.get(attr).on_violation; end