Current section

Files

Jump to
lap src lap.erl
Raw

src/lap.erl

-module(lap).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([start_with_time/3, start/2, start_in_microseconds/1, start_in_milliseconds/1, start_in_seconds/1, start_in_minutes/1, time_with_time/3, time/2, intervals/1, pretty_print/1]).
-export_type([lap_data/0, interval_data/0]).
-opaque lap_data() :: {lap_data,
birl:time(),
binary(),
birl@duration:unit(),
list(interval_data())}.
-opaque interval_data() :: {interval_data,
binary(),
binary(),
birl@duration:duration()}.
-file("/Users/josephlyons/Projects/Personal/gleam/lap/src/lap.gleam", 49).
-spec start_with_time(binary(), birl@duration:unit(), birl:time()) -> lap_data().
start_with_time(Marker, Duration_unit, Time) ->
{lap_data, Time, Marker, Duration_unit, []}.
-file("/Users/josephlyons/Projects/Personal/gleam/lap/src/lap.gleam", 40).
-spec start(binary(), birl@duration:unit()) -> lap_data().
start(Marker, Duration_unit) ->
gleam@list:repeat(birl:now(), 3),
start_with_time(Marker, Duration_unit, birl:now()).
-file("/Users/josephlyons/Projects/Personal/gleam/lap/src/lap.gleam", 24).
-spec start_in_microseconds(binary()) -> lap_data().
start_in_microseconds(Marker) ->
start(Marker, micro_second).
-file("/Users/josephlyons/Projects/Personal/gleam/lap/src/lap.gleam", 28).
-spec start_in_milliseconds(binary()) -> lap_data().
start_in_milliseconds(Marker) ->
start(Marker, milli_second).
-file("/Users/josephlyons/Projects/Personal/gleam/lap/src/lap.gleam", 32).
-spec start_in_seconds(binary()) -> lap_data().
start_in_seconds(Marker) ->
start(Marker, second).
-file("/Users/josephlyons/Projects/Personal/gleam/lap/src/lap.gleam", 36).
-spec start_in_minutes(binary()) -> lap_data().
start_in_minutes(Marker) ->
start(Marker, minute).
-file("/Users/josephlyons/Projects/Personal/gleam/lap/src/lap.gleam", 62).
-spec time_with_time(lap_data(), binary(), birl:time()) -> lap_data().
time_with_time(Data, Marker, Time) ->
{Start_marker, End_marker} = case erlang:element(5, Data) of
[] ->
{erlang:element(3, Data), Marker};
[Last_interval | _] ->
{erlang:element(3, Last_interval), Marker}
end,
erlang:setelement(
5,
erlang:setelement(2, Data, Time),
[{interval_data,
Start_marker,
End_marker,
birl:difference(Time, erlang:element(2, Data))} |
erlang:element(5, Data)]
).
-file("/Users/josephlyons/Projects/Personal/gleam/lap/src/lap.gleam", 57).
-spec time(lap_data(), binary()) -> lap_data().
time(Data, Marker) ->
time_with_time(Data, Marker, birl:now()).
-file("/Users/josephlyons/Projects/Personal/gleam/lap/src/lap.gleam", 78).
-spec intervals(lap_data()) -> list({binary(), binary(), integer()}).
intervals(Data) ->
_pipe = erlang:element(5, Data),
_pipe@2 = gleam@list:map(
_pipe,
fun(Interval) ->
{erlang:element(2, Interval),
erlang:element(3, Interval),
begin
_pipe@1 = erlang:element(4, Interval),
birl@duration:blur_to(_pipe@1, erlang:element(4, Data))
end}
end
),
lists:reverse(_pipe@2).
-file("/Users/josephlyons/Projects/Personal/gleam/lap/src/lap.gleam", 90).
-spec pretty_print(lap_data()) -> binary().
pretty_print(Data) ->
Interval_string = fun(Interval) ->
<<<<<<<<(erlang:element(1, Interval))/binary, " - "/utf8>>/binary,
(erlang:element(2, Interval))/binary>>/binary,
": "/utf8>>/binary,
(begin
_pipe = erlang:element(3, Interval),
erlang:integer_to_binary(_pipe)
end)/binary>>
end,
_pipe@1 = Data,
_pipe@2 = intervals(_pipe@1),
_pipe@3 = gleam@list:map(_pipe@2, Interval_string),
gleam@string:join(_pipe@3, <<"\n"/utf8>>).