Class: Contracts::ImmutableHashOf

Inherits:
Callable
  • Object
show all
Defined in:
middleman-core/lib/middleman-core/contracts.rb,
middleman-core/lib/middleman-core/contracts.rb

Constant Summary collapse

INVALID_KEY_VALUE_PAIR =
'You should provide only one key-value pair to HashOf contract'

Instance Method Summary collapse

Methods inherited from Callable

[]

Constructor Details

#initialize(key, value) ⇒ ImmutableHashOf

Returns a new instance of ImmutableHashOf.


28
29
30
31
# File 'middleman-core/lib/middleman-core/contracts.rb', line 28

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

Instance Method Details

#to_sObject


42
43
44
# File 'middleman-core/lib/middleman-core/contracts.rb', line 42

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

#valid?(hash) ⇒ Boolean

Returns:

  • (Boolean)

33
34
35
36
37
38
39
40
# File 'middleman-core/lib/middleman-core/contracts.rb', line 33

def valid?(hash)
  return false unless hash.is_a?(::Hamster::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