Current section

Files

Jump to
testament src testament@internal@stream.erl
Raw

src/testament@internal@stream.erl

-module(testament@internal@stream).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/testament/internal/stream.gleam").
-export([new/1, map/2, filter/2, to_list/1]).
-export_type([stream/2]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-opaque stream(SRV, SRW) :: {step, list(SRV), fun((list(SRV)) -> list(SRW))}.
-file("src/testament/internal/stream.gleam", 8).
?DOC(false).
-spec new(list(SRX)) -> stream(SRX, SRX).
new(Vals) ->
{step, Vals, fun gleam@function:identity/1}.
-file("src/testament/internal/stream.gleam", 12).
?DOC(false).
-spec map(stream(SSB, SSC), fun((SSC) -> SSF)) -> stream(SSB, SSF).
map(S, F) ->
{step, Values, Curr} = S,
{step, Values, fun(Vals) -> _pipe = Curr(Vals),
gleam@list:map(_pipe, F) end}.
-file("src/testament/internal/stream.gleam", 18).
?DOC(false).
-spec filter(stream(SSI, SSJ), fun((SSJ) -> boolean())) -> stream(SSI, SSJ).
filter(S, F) ->
{step, Values, Curr} = S,
{step, Values, fun(Vals) -> _pipe = Curr(Vals),
gleam@list:filter(_pipe, F) end}.
-file("src/testament/internal/stream.gleam", 24).
?DOC(false).
-spec to_list(stream(any(), SSP)) -> list(SSP).
to_list(S) ->
{step, Values, Curr} = S,
Curr(Values).