module Contracts::Core

Public Class Methods

common(base) click to toggle source
# File lib/contracts/core.rb, line 11
def self.common(base)
  base.extend(MethodDecorators)

  base.instance_eval do
    def functype(funcname)
      contracts = Engine.fetch_from(self).decorated_methods_for(:class_methods, funcname)
      return "No contract for #{self}.#{funcname}" if contracts.nil?
      "#{funcname} :: #{contracts[0]}"
    end
  end

  base.class_eval do
    def functype(funcname)
      contracts = Engine.fetch_from(self.class).decorated_methods_for(:instance_methods, funcname)
      return "No contract for #{self.class}.#{funcname}" if contracts.nil?
      "#{funcname} :: #{contracts[0]}"
    end
  end
end
extended(base) click to toggle source
# File lib/contracts/core.rb, line 7
def self.extended(base)
  common(base)
end
included(base) click to toggle source
# File lib/contracts/core.rb, line 3
def self.included(base)
  common(base)
end

Public Instance Methods

functype(funcname) click to toggle source
# File lib/contracts/core.rb, line 15
def functype(funcname)
  contracts = Engine.fetch_from(self).decorated_methods_for(:class_methods, funcname)
  return "No contract for #{self}.#{funcname}" if contracts.nil?
  "#{funcname} :: #{contracts[0]}"
end