57 lines
1.6 KiB
GDScript3
57 lines
1.6 KiB
GDScript3
|
|
static func buffer_(boundaries : Observable) -> Callable:
|
||
|
|
return GDRx.pipe.compose2(
|
||
|
|
GDRx.op.window(boundaries),
|
||
|
|
GDRx.op.flat_map(GDRx.op.to_list()),
|
||
|
|
)
|
||
|
|
|
||
|
|
static func buffer_when_(closing_mapper : Callable) -> Callable:
|
||
|
|
return GDRx.pipe.compose2(
|
||
|
|
GDRx.op.window_when(closing_mapper),
|
||
|
|
GDRx.op.flat_map(GDRx.op.to_list()),
|
||
|
|
)
|
||
|
|
|
||
|
|
static func buffer_toggle_(openings : Observable, closing_mapper : Callable) -> Callable:
|
||
|
|
return GDRx.pipe.compose2(
|
||
|
|
GDRx.op.window_toggle(openings, closing_mapper),
|
||
|
|
GDRx.op.flat_map(GDRx.op.to_list()),
|
||
|
|
)
|
||
|
|
|
||
|
|
static func buffer_with_count_(
|
||
|
|
count : int, skip = null
|
||
|
|
) -> Callable:
|
||
|
|
var _skip = RefValue.Set(skip)
|
||
|
|
# """Projects each element of an observable sequence into zero or more
|
||
|
|
# buffers which are produced based on element count information.
|
||
|
|
#
|
||
|
|
# Examples:
|
||
|
|
# >>> var res = GDRx.op.buffer_with_count(10).call(xs)
|
||
|
|
# >>> var res = GDRx.op.buffer_with_count(10, 1).call(xs)
|
||
|
|
#
|
||
|
|
# Args:
|
||
|
|
# count: Length of each buffer.
|
||
|
|
# skip: [Optional] Number of elements to skip between
|
||
|
|
# creation of consecutive buffers. If not provided, defaults to
|
||
|
|
# the count.
|
||
|
|
#
|
||
|
|
# Returns:
|
||
|
|
# A function that takes an observable source and returns an
|
||
|
|
# observable sequence of buffers.
|
||
|
|
# """
|
||
|
|
var buffer_with_count = func(source : Observable) -> Observable:
|
||
|
|
if _skip.v == null:
|
||
|
|
_skip.v = count
|
||
|
|
|
||
|
|
var mapper = func(value : Observable) -> Observable:
|
||
|
|
return value.pipe1(GDRx.op.to_list())
|
||
|
|
|
||
|
|
var predicate = func(value : Array) -> bool:
|
||
|
|
return value.size() > 0
|
||
|
|
|
||
|
|
return source.pipe3(
|
||
|
|
GDRx.op.window_with_count(count, _skip.v),
|
||
|
|
GDRx.op.flat_map(mapper),
|
||
|
|
GDRx.op.filter(predicate)
|
||
|
|
)
|
||
|
|
|
||
|
|
return buffer_with_count
|