File: engine.rb

package info (click to toggle)
ruby-contracts 0.17-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 624 kB
  • sloc: ruby: 3,805; makefile: 4; sh: 2
file content (28 lines) | stat: -rw-r--r-- 669 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# frozen_string_literal: true

require "contracts/engine/base"
require "contracts/engine/target"
require "contracts/engine/eigenclass"

require "forwardable"

module Contracts
  # Engine facade, normally you shouldn't refer internals of Engine
  # module directly.
  module Engine
    class << self
      extend Forwardable

      # .apply(klass)      - enables contracts engine on klass
      # .applied?(klass)   - returns true if klass has contracts engine
      # .fetch_from(klass) - returns contracts engine for klass
      def_delegators :base_engine, :apply, :applied?, :fetch_from

      private

      def base_engine
        Base
      end
    end
  end
end