Method: Enumerable#aT_all
- Defined in:
- lib/y_support/typing/enumerable/typing.rb
#aT_all(what_is_collection_element = nil, how_comply = nil, &b) ⇒ Object
Fails with TypeError unless all the members of the collection comply with the supplied block criterion. Optional arguments customize the error message. First optional argument describes the collection element, the second one describes the tested duck type. If the criterion block takes at least one argument, the receiver elemnts are passed to it (#all? method). If the criterion block takes no arguments (arity 0), it is gradually executed inside the elements (using #instance_exec method). If no block is given, all members are required to be truey.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/y_support/typing/enumerable/typing.rb', line 13 def aT_all what_is_collection_element=nil, how_comply=nil, &b e = what_is_collection_element || "collection element" if block_given? m = "Each #{e} must %s!" % ( how_comply ? how_comply : "comply with the given duck type" ) raise TErr, m unless ( b.arity == 0 ? all? { |e| e.instance_exec( &b ) } : all? { |e| b.( e ) } ) else m = "No #{e} must be nil or false!" raise TErr, m unless all? { |e| e } end return self end |