Sha256: 29d4fd9b2158d6fddde7125591b74e3c72f616f4be47865a836bd26828264ff5

Contents?: true

Size: 1.04 KB

Versions: 18

Compression:

Stored size: 1.04 KB

Contents

module Concurrent
  module Actress

    # taken from Algebrick
    # supplies type-checking helpers whenever included
    module TypeCheck

      def Type?(value, *types)
        types.any? { |t| value.is_a? t }
      end

      def Type!(value, *types)
        Type?(value, *types) or
            TypeCheck.error(value, 'is not', types)
        value
      end

      def Match?(value, *types)
        types.any? { |t| t === value }
      end

      def Match!(value, *types)
        Match?(value, *types) or
            TypeCheck.error(value, 'is not matching', types)
        value
      end

      def Child?(value, *types)
        Type?(value, Class) &&
            types.any? { |t| value <= t }
      end

      def Child!(value, *types)
        Child?(value, *types) or
            TypeCheck.error(value, 'is not child', types)
        value
      end

      private

      def self.error(value, message, types)
        raise TypeError,
              "Value (#{value.class}) '#{value}' #{message} any of: #{types.join('; ')}."
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
concurrent-ruby-0.7.0.rc1 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc1-x86_64-linux lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc1-x86_64-darwin-13 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc1-x86-solaris-2.11 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc1-x86-mingw32 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc1-x86-linux lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc1-x64-mingw32 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc1-java lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc0 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc0-x86_64-linux lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc0-x86_64-darwin-13 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc0-x86-solaris-2.11 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc0-x86-mingw32 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc0-x86-linux lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc0-x64-mingw32 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.7.0.rc0-java lib/concurrent/actress/type_check.rb
concurrent-ruby-0.6.1 lib/concurrent/actress/type_check.rb
concurrent-ruby-0.6.0 lib/concurrent/actress/type_check.rb