module PropCheck::Helper
Helper
functions that have no other place to live
Public Instance Methods
call_splatted(val, &block)
click to toggle source
# File lib/prop_check/helper.rb, line 35 def call_splatted(val, &block) case val when Hash block.call(**val) else block.call(val) end # if kwval != {} # block.call(**kwval) # else # block.call(*val) # end end
lazy_append(this_enumerator, other_enumerator)
click to toggle source
allow lazy appending of two (potentially lazy) enumerators:
>> PropCheck::Helper::LazyAppend.lazy_append([1,2,3],[4,5.6]).to_a => [1,2,3,4,5,6]
# File lib/prop_check/helper.rb, line 31 def lazy_append(this_enumerator, other_enumerator) [this_enumerator, other_enumerator].lazy.flat_map(&:lazy) end
scanl(elem, &operation)
click to toggle source
Creates a (potentially lazy) Enumerator starting with `elem` with each consecutive element obtained by calling `operation` on the previous element.
>> Helper.scanl(0, &:next).take(10).force => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >> Helper.scanl([0, 1]) { |curr, next_elem| [next_elem, curr + next_elem] }.map(&:first).take(10).force => [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
# File lib/prop_check/helper.rb, line 16 def scanl(elem, &operation) Enumerator.new do |yielder| acc = elem loop do # p acc yielder << acc acc = operation.call(acc) end end.lazy end