Class: Contracts::HashOf

Inherits:
CallableClass show all
Defined in:
lib/contracts/builtin_contracts.rb

Overview

Use this to specify the Hash characteristics. Takes two contracts, one for hash keys and one for hash values. Example: HashOf[Symbol, String]

Instance Method Summary collapse

Methods inherited from CallableClass

[]

Constructor Details

#initialize(key, value) ⇒ HashOf

Returns a new instance of HashOf.



321
322
323
324
# File 'lib/contracts/builtin_contracts.rb', line 321

def initialize(key, value)
  @key   = key
  @value = value
end

Instance Method Details

#to_sObject



333
334
335
# File 'lib/contracts/builtin_contracts.rb', line 333

def to_s
  "Hash<#{@key.to_s}, #{@value.to_s}>"
end

#valid?(hash) ⇒ Boolean

Returns:

  • (Boolean)


326
327
328
329
330
331
# File 'lib/contracts/builtin_contracts.rb', line 326

def valid?(hash)
  keys_match = hash.keys.map {|k| Contract.valid?(k, @key) }.all?
  vals_match = hash.values.map {|v| Contract.valid?(v, @value) }.all?

  [keys_match, vals_match].all?
end