Class: Contracts::Builtin::CollectionOf

Inherits:
CallableClass show all
Defined in:
lib/contracts-ruby2/lib/contracts/builtin_contracts.rb,
lib/contracts-ruby3/lib/contracts/builtin_contracts.rb

Overview

Takes a collection(responds to :each) type and a contract. The related argument must be of specified collection type. Checks the contract against every element of the collection. If it passes for all elements, the contract passes. Example: CollectionOf[Array, Num]

Defined Under Namespace

Classes: Factory

Instance Method Summary collapse

Methods inherited from CallableClass

[]

Constructor Details

#initialize(collection_class, contract) ⇒ CollectionOf

Returns a new instance of CollectionOf.



277
278
279
280
# File 'lib/contracts-ruby2/lib/contracts/builtin_contracts.rb', line 277

def initialize(collection_class, contract)
  @collection_class = collection_class
  @contract = contract
end

Instance Method Details

#to_sObject



290
291
292
# File 'lib/contracts-ruby2/lib/contracts/builtin_contracts.rb', line 290

def to_s
  "a collection #{@collection_class} of #{@contract}"
end

#valid?(vals) ⇒ Boolean

Returns:

  • (Boolean)


282
283
284
285
286
287
288
# File 'lib/contracts-ruby2/lib/contracts/builtin_contracts.rb', line 282

def valid?(vals)
  return false unless vals.is_a?(@collection_class)
  vals.all? do |val|
    res, _ = Contract.valid?(val, @contract)
    res
  end
end