Module: Scriptorium::Contract
- Included in:
- API, BannerSVG, Post, Repo, Repo, Theme, Theme, View, Widget, Widget::FeaturedPosts, Widget::Links, Widget::ListWidget, Widget::Pages
- Defined in:
- lib/scriptorium/contract.rb
Class Method Summary collapse
Instance Method Summary collapse
- #assume(condition = nil, message = nil, &block) ⇒ Object
- #check_invariants ⇒ Object
- #invariant(&block) ⇒ Object
- #verify(condition = nil, message = nil, &block) ⇒ Object
Class Method Details
.enabled? ⇒ Boolean
2 3 4 |
# File 'lib/scriptorium/contract.rb', line 2 def self.enabled? !ENV['DBC_DISABLED'] end |
Instance Method Details
#assume(condition = nil, message = nil, &block) ⇒ Object
6 7 8 9 10 11 12 13 |
# File 'lib/scriptorium/contract.rb', line 6 def assume(condition = nil, = nil, &block) return unless Scriptorium::Contract.enabled? if block_given? raise "Precondition violated: #{}" unless instance_eval(&block) else raise "Precondition violated: #{}" unless condition end end |
#check_invariants ⇒ Object
29 30 31 32 |
# File 'lib/scriptorium/contract.rb', line 29 def check_invariants return unless Scriptorium::Contract.enabled? @invariants&.each { |invariant| raise "Invariant violated" unless instance_eval(&invariant) } end |
#invariant(&block) ⇒ Object
24 25 26 27 |
# File 'lib/scriptorium/contract.rb', line 24 def invariant(&block) @invariants ||= [] @invariants << block end |
#verify(condition = nil, message = nil, &block) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/scriptorium/contract.rb', line 15 def verify(condition = nil, = nil, &block) return unless Scriptorium::Contract.enabled? if block_given? raise "Postcondition violated: #{}" unless instance_eval(&block) else raise "Postcondition violated: #{}" unless condition end end |