Current section

Files

Jump to
oas_generator src oas@generator@lookup.erl
Raw

src/oas@generator@lookup.erl

-module(oas@generator@lookup).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oas/generator/lookup.gleam").
-export([then/2, seq/1, fold/3, map_fold/3]).
-export_type([lookup/1]).
-type lookup(PJS) :: {lookup,
binary(),
fun((gleam@option:option(binary()), binary()) -> lookup(PJS))} |
{done, PJS}.
-file("src/oas/generator/lookup.gleam", 9).
-spec then(lookup(PJT), fun((PJT) -> lookup(PJV))) -> lookup(PJV).
then(Lookup, Next) ->
case Lookup of
{lookup, Ref, Inner} ->
{lookup, Ref, fun(Mod, Name) -> then(Inner(Mod, Name), Next) end};
{done, Value} ->
Next(Value)
end.
-file("src/oas/generator/lookup.gleam", 21).
-spec do_seq(list(lookup(PLG)), list(PLG)) -> lookup(list(PLG)).
do_seq(Lookups, Acc) ->
case Lookups of
[] ->
{done, lists:reverse(Acc)};
[{done, Value} | Rest] ->
do_seq(Rest, [Value | Acc]);
[{lookup, Ref, Inner} | Rest@1] ->
{lookup,
Ref,
fun(Mod, Name) -> do_seq([Inner(Mod, Name) | Rest@1], Acc) end}
end.
-file("src/oas/generator/lookup.gleam", 17).
-spec seq(list(lookup(PJY))) -> lookup(list(PJY)).
seq(Lookups) ->
do_seq(Lookups, []).
-file("src/oas/generator/lookup.gleam", 30).
-spec fold(list(PKG), PKI, fun((PKI, PKG) -> lookup(PKI))) -> lookup(PKI).
fold(Items, Initial, Func) ->
case Items of
[] ->
{done, Initial};
[Next | Rest] ->
then(Func(Initial, Next), fun(Acc) -> fold(Rest, Acc, Func) end)
end.
-file("src/oas/generator/lookup.gleam", 44).
-spec map_fold(list(PKL), PKN, fun((PKN, PKL) -> lookup({PKN, PKO}))) -> lookup({PKN,
list(PKO)}).
map_fold(Items, Initial, Func) ->
then(
fold(
Items,
{Initial, []},
fun(Acc, Item) ->
{Inner, Buffer} = Acc,
then(
Func(Inner, Item),
fun(_use0) ->
{Inner@1, Next} = _use0,
{done, {Inner@1, [Next | Buffer]}}
end
)
end
),
fun(_use0@1) ->
{Inner@2, Buffer@1} = _use0@1,
{done, {Inner@2, lists:reverse(Buffer@1)}}
end
).