Sha256: 7d4c4e61356c48496e6508b949c9be678fe82bd18dc02959ea1e747824a715aa
Contents?: true
Size: 1.08 KB
Versions: 1
Compression:
Stored size: 1.08 KB
Contents
module Contracts module Core def self.included(base) common(base) end def self.extended(base) common(base) end def self.common(base) return if base.respond_to?(:Contract) base.extend(MethodDecorators) base.instance_eval do def functype(funcname) contracts = Engine.fetch_from(self).decorated_methods_for(:class_methods, funcname) if contracts.nil? "No contract for #{self}.#{funcname}" else "#{funcname} :: #{contracts[0]}" end end end base.class_eval do # TODO: deprecate # Required when contracts are included in global scope def Contract(*args) self.class.Contract(*args) end def functype(funcname) contracts = Engine.fetch_from(self.class).decorated_methods_for(:instance_methods, funcname) if contracts.nil? "No contract for #{self.class}.#{funcname}" else "#{funcname} :: #{contracts[0]}" end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
contracts-0.11.0 | lib/contracts/core.rb |