Sha256: cc3921911f86d630b2bf05602d0c316f268bd8912836266dacc83b99d98a8ffc

Contents?: true

Size: 420 Bytes

Versions: 1

Compression:

Stored size: 420 Bytes

Contents

module Wor
  module Batchifier
    module Interface
      attr_writer :contract

      def implements(*selectors)
        self.contract += selectors
      end

      def contract
        @contract ||= []
      end

      def full_contract
        (contract + ancestors.flat_map(&:contract)).uniq
      end

      def breaches_contract?
        full_contract.any? { |it| !method_defined? it }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wor-batchifier-0.0.1 lib/wor/batchifier/interface.rb