Sha256: b884d81d6d9d6fa645f359c687d2a7d176ceccada2983bd40d8662456d779849
Contents?: true
Size: 780 Bytes
Versions: 20
Compression:
Stored size: 780 Bytes
Contents
unless Array.method_defined? :bsearch_index class Array def bsearch_index return to_enum(__method__) unless block_given? from = 0 to = size - 1 satisfied = nil while from <= to do midpoint = (from + to).div(2) result = yield(self[midpoint]) case result when Numeric return midpoint if result == 0 result = result < 0 when true satisfied = midpoint when nil, false # nothing to do else raise TypeError, "wrong argument type #{result.class} (must be numeric, true, false or nil)" end if result to = midpoint - 1 else from = midpoint + 1 end end satisfied end end end
Version data entries
20 entries across 20 versions & 3 rubygems