-module(timeago). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -define(FILEPATH, "src/timeago.gleam"). -export([time_ago/3]). -file("src/timeago.gleam", 46). -spec unit_to_string(gleam@time@duration:unit()) -> binary(). unit_to_string(Unit) -> case Unit of nanosecond -> <<"nanosecond"/utf8>>; microsecond -> <<"microsecond"/utf8>>; millisecond -> <<"millisecond"/utf8>>; second -> <<"second"/utf8>>; minute -> <<"minute"/utf8>>; hour -> <<"hour"/utf8>>; day -> <<"day"/utf8>>; week -> <<"week"/utf8>>; month -> <<"month"/utf8>>; year -> <<"year"/utf8>> end. -file("src/timeago.gleam", 6). -spec time_ago( gleam@time@timestamp:timestamp(), gleam@option:option(gleam@time@timestamp:timestamp()), gleam@option:option(binary()) ) -> binary(). time_ago(Timestamp, Maybe_now, _) -> Now = gleam@option:unwrap(Maybe_now, gleam@time@timestamp:system_time()), {Amount, Unit} = gleam@time@duration:approximate( gleam@time@timestamp:difference(Timestamp, Now) ), case Unit of nanosecond -> <<"just now"/utf8>>; microsecond -> <<"just now"/utf8>>; millisecond -> <<"just now"/utf8>>; _ -> Unit_string = unit_to_string(Unit), Magnitude = gleam@int:absolute_value(Amount), Unit_string_suffix = case Magnitude of 1 -> <<""/utf8>>; _ -> <<"s"/utf8>> end, case Amount < 0 of true -> <<<<<<<<"in "/utf8, (erlang:integer_to_binary(Magnitude))/binary>>/binary, " "/utf8>>/binary, Unit_string/binary>>/binary, Unit_string_suffix/binary>>; false -> <<<<<<<<(erlang:integer_to_binary(Magnitude))/binary, " "/utf8>>/binary, Unit_string/binary>>/binary, Unit_string_suffix/binary>>/binary, " ago"/utf8>> end end.