module Contracts::NonIntrusive
Constants
- VERSION
Public Class Methods
included(base)
click to toggle source
# File lib/contracts/non_intrusive.rb, line 22 def self.included(base) base.send(:extend, self) end
Public Instance Methods
Contract(*contracts)
click to toggle source
# File lib/contracts/non_intrusive.rb, line 26 def Contract(*contracts) lambda do |method_map| name = method_map.first.first raw_name = method_map.first.last simple_method = SimpleMethodReference.new(name, raw_name) contract = nil define_method(name) do |*args, &blk| simple_method.set_method_once(method(raw_name)) klass = self.class == Class ? self : self.class contract ||= Contract.new(klass, simple_method, *contracts) contract.call_with(self, *args, &blk) end end end