class J8::Stream
Attributes
enumerator[R]
Public Class Methods
concat(stream1, stream2)
click to toggle source
# File lib/j8/stream.rb, line 13 def self.concat(stream1, stream2) J8::Stream.new( Enumerator.new do |enumerator| [stream1, stream2].each do |stream| stream.enumerator.each { |o| enumerator << o } end end ) end
empty()
click to toggle source
# File lib/j8/stream.rb, line 23 def self.empty [].j8_stream end
generate(supplier = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 27 def self.generate(supplier = nil, &block) callable = J8::Common.from_callable_class(supplier, block, J8::Supplier) J8::Stream.new( Enumerator.new do |enumerator| loop { enumerator << callable.get } end ) end
iterate(seed, function = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 37 def self.iterate(seed, function = nil, &block) callable = J8::Common.from_callable_class(function, block, J8::Function) J8::Stream.new( Enumerator.new do |enumerator| loop { enumerator << callable.apply(seed) } end ) end
new(enumerator)
click to toggle source
# File lib/j8/stream.rb, line 9 def initialize(enumerator) @enumerator = enumerator end
of(*values)
click to toggle source
# File lib/j8/stream.rb, line 47 def self.of(*values) values.j8_stream end
Public Instance Methods
all_match?(predicate = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 51 def all_match?(predicate = nil, &block) callable = from_callable_class(predicate, block, J8::Predicate) # Handle Ruby's use of #all? # [].all? { |n| n == true } => true ran = false ret = @enumerator.all? do |o| ran = true callable.test(o) == true end ran ? ret : false end
any_match?(predicate = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 66 def any_match?(predicate = nil, &block) callable = from_callable_class(predicate, block, J8::Predicate) @enumerator.any? { |o| callable.test(o) } end
collect()
click to toggle source
# File lib/j8/stream.rb, line 72 def collect # figure it out end
count()
click to toggle source
# File lib/j8/stream.rb, line 76 def count @enumerator.count end
each(consumer = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 97 def each(consumer = nil, &block) callable = from_callable_class(consumer, block, J8::Consumer) @enumerator.each { |n| callable.accept(n) } end
filter(predicate = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 80 def filter(predicate = nil, &block) callable = from_callable_class(predicate, block, J8::Predicate) @enumerator.select { |n| callable.test(n) }.j8_stream end
find_first()
click to toggle source
# File lib/j8/stream.rb, line 86 def find_first J8::Optional.new(@enumerator.first) end
Also aliased as: find_any
flat_map(function = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 91 def flat_map(function = nil, &block) callable = from_callable_class(function, block, J8::Function) @enumerator.map { |n| callable.apply(n) }.flatten.j8_stream end
limit(size)
click to toggle source
# File lib/j8/stream.rb, line 103 def limit(size) @enumerator.first(size).j8_stream end
map(function = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 107 def map(function = nil, &block) callable = from_callable_class(function, block, J8::Function) @enumerator.map { |object| callable.apply(object) }.j8_stream end
max(comparator = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 113 def max(comparator = nil, &block) callable = from_callable_class(comparator, block, J8::Comparator) @enumerator.max { |a, b| callable.compare(a, b) } end
min(comparator = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 119 def min(comparator = nil, &block) callable = from_callable_class(comparator, block, J8::Comparator) @enumerator.min { |a, b| callable.compare(a, b) } end
none_match?(predicate = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 125 def none_match?(predicate = nil, &block) callable = from_callable_class(predicate, block, J8::Predicate) # Handle Ruby's use of #all? # [].all? { |n| n == true } => true ran = false ret = @enumerator.all? do |object| ran = true callable.test(object) != true end ran ? ret : false end
peek(consumer = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 140 def peek(consumer = nil, &block) callable = from_callable_class(consumer, block, J8::Consumer) @enumerator.entries.tap do |entries| entries.each { |v| callable.accept(v) } @enumerator.rewind end.j8_stream end
reduce(binary_operator = nil, memo: nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 149 def reduce(binary_operator = nil, memo: nil, &block) callable = from_callable_class(binary_operator, block, J8::BinaryOperator) J8::Optional.of( @enumerator.reduce(memo) do |accumulator, object| callable.apply(accumulator, object) end ) end
skip(amount)
click to toggle source
# File lib/j8/stream.rb, line 159 def skip(amount) @enumerator.slice_after(amount).to_a.last.j8_stream end
sort()
click to toggle source
# File lib/j8/stream.rb, line 163 def sort @enumerator.sort.j8_stream end
sort_by(comparator = nil, &block)
click to toggle source
# File lib/j8/stream.rb, line 167 def sort_by(comparator = nil, &block) callable = from_callable_class(comparator, block, J8::Comparator) @enumerator.sort { |a, b| callable.compare(a, b) }.j8_stream end
to_a()
click to toggle source
# File lib/j8/stream.rb, line 173 def to_a @enumerator.to_a end