aboutsummaryrefslogtreecommitdiff
path: root/aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl
diff options
context:
space:
mode:
Diffstat (limited to 'aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl')
-rw-r--r--aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl90
1 files changed, 90 insertions, 0 deletions
diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl
new file mode 100644
index 0000000..14a5538
--- /dev/null
+++ b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl
@@ -0,0 +1,90 @@
+-module(gleam@erlang).
+-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]).
+
+-export([format/1, term_to_binary/1, get_line/1, system_time/1, erlang_timestamp/0, rescue/1, binary_to_term/1, unsafe_binary_to_term/1, start_arguments/0, ensure_all_started/1, make_reference/0, priv_directory/1]).
+-export_type([safe/0, get_line_error/0, time_unit/0, crash/0, ensure_all_started_error/0, reference_/0]).
+
+-type safe() :: safe.
+
+-type get_line_error() :: eof | no_data.
+
+-type time_unit() :: second | millisecond | microsecond | nanosecond.
+
+-type crash() :: {exited, gleam@dynamic:dynamic_()} |
+ {thrown, gleam@dynamic:dynamic_()} |
+ {errored, gleam@dynamic:dynamic_()}.
+
+-type ensure_all_started_error() :: {unknown_application,
+ gleam@erlang@atom:atom_()} |
+ {application_failed_to_start,
+ gleam@erlang@atom:atom_(),
+ gleam@dynamic:dynamic_()}.
+
+-type reference_() :: any().
+
+-spec format(any()) -> binary().
+format(Term) ->
+ unicode:characters_to_binary(io_lib:format(<<"~p"/utf8>>, [Term])).
+
+-spec term_to_binary(any()) -> bitstring().
+term_to_binary(A) ->
+ erlang:term_to_binary(A).
+
+-spec get_line(binary()) -> {ok, binary()} | {error, get_line_error()}.
+get_line(Prompt) ->
+ gleam_erlang_ffi:get_line(Prompt).
+
+-spec system_time(time_unit()) -> integer().
+system_time(A) ->
+ os:system_time(A).
+
+-spec erlang_timestamp() -> {integer(), integer(), integer()}.
+erlang_timestamp() ->
+ os:timestamp().
+
+-spec rescue(fun(() -> FHH)) -> {ok, FHH} | {error, crash()}.
+rescue(A) ->
+ gleam_erlang_ffi:rescue(A).
+
+-spec binary_to_term(bitstring()) -> {ok, gleam@dynamic:dynamic_()} |
+ {error, nil}.
+binary_to_term(Binary) ->
+ case gleam_erlang_ffi:rescue(
+ fun() -> erlang:binary_to_term(Binary, [safe]) end
+ ) of
+ {ok, Term} ->
+ {ok, Term};
+
+ {error, _} ->
+ {error, nil}
+ end.
+
+-spec unsafe_binary_to_term(bitstring()) -> {ok, gleam@dynamic:dynamic_()} |
+ {error, nil}.
+unsafe_binary_to_term(Binary) ->
+ case gleam_erlang_ffi:rescue(fun() -> erlang:binary_to_term(Binary, []) end) of
+ {ok, Term} ->
+ {ok, Term};
+
+ {error, _} ->
+ {error, nil}
+ end.
+
+-spec start_arguments() -> list(binary()).
+start_arguments() ->
+ _pipe = init:get_plain_arguments(),
+ gleam@list:map(_pipe, fun unicode:characters_to_binary/1).
+
+-spec ensure_all_started(gleam@erlang@atom:atom_()) -> {ok,
+ list(gleam@erlang@atom:atom_())} |
+ {error, ensure_all_started_error()}.
+ensure_all_started(Application) ->
+ gleam_erlang_ffi:ensure_all_started(Application).
+
+-spec make_reference() -> reference_().
+make_reference() ->
+ erlang:make_ref().
+
+-spec priv_directory(binary()) -> {ok, binary()} | {error, nil}.
+priv_directory(Name) ->
+ gleam_erlang_ffi:priv_directory(Name).