Packages
oaspec
0.58.0
0.68.0
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.59.0
0.58.1
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.0
0.7.0
0.6.3
0.6.1
0.6.0
0.5.0
0.4.0
0.3.0
0.1.3
Generate Gleam code from OpenAPI 3.x specifications
Current section
Files
Jump to
Current section
Files
src/oaspec@internal@progress.erl
-module(oaspec@internal@progress).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaspec/internal/progress.gleam").
-export([noop/0, from_fn/1, report/2, timed/1, format_ms/1, stdout_with_elapsed/0]).
-export_type([reporter/0]).
-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 reporter() :: {reporter, fun((binary()) -> nil)}.
-file("src/oaspec/internal/progress.gleam", 29).
?DOC(false).
-spec noop() -> reporter().
noop() ->
{reporter, fun(_) -> nil end}.
-file("src/oaspec/internal/progress.gleam", 36).
?DOC(false).
-spec from_fn(fun((binary()) -> nil)) -> reporter().
from_fn(Emit) ->
{reporter, Emit}.
-file("src/oaspec/internal/progress.gleam", 41).
?DOC(false).
-spec report(reporter(), binary()) -> nil.
report(Reporter, Message) ->
(erlang:element(2, Reporter))(Message).
-file("src/oaspec/internal/progress.gleam", 48).
?DOC(false).
-spec timed(fun(() -> TCT)) -> {integer(), TCT}.
timed(Body) ->
Start = oaspec_ffi:monotonic_ms(),
Result = Body(),
End = oaspec_ffi:monotonic_ms(),
{End - Start, Result}.
-file("src/oaspec/internal/progress.gleam", 58).
?DOC(false).
-spec format_ms(integer()) -> binary().
format_ms(Ms) ->
case Ms < 1000 of
true ->
<<(erlang:integer_to_binary(Ms))/binary, "ms"/utf8>>;
false ->
Total_seconds = Ms div 1000,
Tenths = (Ms - (Total_seconds * 1000)) div 100,
case Total_seconds >= 60 of
true ->
Minutes = Total_seconds div 60,
Seconds = Total_seconds - (Minutes * 60),
<<<<<<<<<<(erlang:integer_to_binary(Minutes))/binary,
"m"/utf8>>/binary,
(erlang:integer_to_binary(Seconds))/binary>>/binary,
"."/utf8>>/binary,
(erlang:integer_to_binary(Tenths))/binary>>/binary,
"s"/utf8>>;
false ->
<<<<<<(erlang:integer_to_binary(Total_seconds))/binary,
"."/utf8>>/binary,
(erlang:integer_to_binary(Tenths))/binary>>/binary,
"s"/utf8>>
end
end.
-file("src/oaspec/internal/progress.gleam", 95).
?DOC(false).
-spec pad_left(binary(), integer()) -> binary().
pad_left(Value, Width) ->
Len = string:length(Value),
case Len >= Width of
true ->
Value;
false ->
<<(gleam@string:repeat(<<" "/utf8>>, Width - Len))/binary,
Value/binary>>
end.
-file("src/oaspec/internal/progress.gleam", 87).
?DOC(false).
-spec stdout_with_elapsed() -> reporter().
stdout_with_elapsed() ->
Started_at = oaspec_ffi:monotonic_ms(),
from_fn(
fun(Message) ->
Elapsed = oaspec_ffi:monotonic_ms() - Started_at,
gleam_stdlib:println(
<<<<<<"[+"/utf8, (pad_left(format_ms(Elapsed), 7))/binary>>/binary,
"] "/utf8>>/binary,
Message/binary>>
)
end
).