Sha256: aa8f43fd3534e1b2d0ff329d15f4a9daced690f672ce565eff7dcab648533c2e

Contents?: true

Size: 682 Bytes

Versions: 40

Compression:

Stored size: 682 Bytes

Contents

# frozen_string_literal: true

require_relative 'method_decorator'
require_relative 'engine'
require_relative 'engine_proxy'

module Ree::Contracts
  module Contractable
    def method_added(name)
      MethodDecorator.new(name, false, self).call
      super
    end

    def singleton_method_added(name)
      MethodDecorator.new(name, true, self).call
      super
    end

    def doc(str)
      return if Ree::Contracts.no_contracts?
      
      engine = Engine.fetch_for(self)
      engine.add_doc(str.strip)
    end

    def contract(*args, &block)
      engine = Engine.fetch_for(self)
      engine.add_contract(*args, &block)
      EngineProxy.new(engine)
    end
  end
end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
ree-1.1.1 lib/ree/contracts/contractable.rb
ree-1.1.0 lib/ree/contracts/contractable.rb
ree-1.0.47 lib/ree/contracts/contractable.rb
ree-1.0.46 lib/ree/contracts/contractable.rb
ree-1.0.45 lib/ree/contracts/contractable.rb
ree-1.0.44 lib/ree/contracts/contractable.rb
ree-1.0.43 lib/ree/contracts/contractable.rb
ree-1.0.42 lib/ree/contracts/contractable.rb
ree-1.0.41 lib/ree/contracts/contractable.rb
ree-1.0.40 lib/ree/contracts/contractable.rb
ree-1.0.39 lib/ree/contracts/contractable.rb
ree-1.0.38 lib/ree/contracts/contractable.rb
ree-1.0.37 lib/ree/contracts/contractable.rb
ree-1.0.36 lib/ree/contracts/contractable.rb
ree-1.0.35 lib/ree/contracts/contractable.rb
ree-1.0.34 lib/ree/contracts/contractable.rb
ree-1.0.33 lib/ree/contracts/contractable.rb
ree-1.0.32 lib/ree/contracts/contractable.rb
ree-1.0.31 lib/ree/contracts/contractable.rb
ree-1.0.30 lib/ree/contracts/contractable.rb