class Contracts::Builtin::HashOf
Use this to specify the Hash characteristics. Takes two contracts, one for
hash keys and one for hash values. Example: HashOf[Symbol,
String]
Constants
- INVALID_KEY_VALUE_PAIR
Public Class Methods
new(key, value = nil)
click to toggle source
# File lib/contracts/builtin_contracts.rb, line 366 def initialize(key, value = nil) if value @key = key @value = value else validate_hash(key) @key = key.keys.first @value = key[@key] end end
Public Instance Methods
to_s()
click to toggle source
# File lib/contracts/builtin_contracts.rb, line 385 def to_s "Hash<#{@key}, #{@value}>" end
valid?(hash)
click to toggle source
# File lib/contracts/builtin_contracts.rb, line 377 def valid?(hash) return false unless hash.is_a?(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
Private Instance Methods
validate_hash(hash)
click to toggle source
# File lib/contracts/builtin_contracts.rb, line 391 def validate_hash(hash) fail ArgumentError, INVALID_KEY_VALUE_PAIR unless hash.count == 1 end