Packages

A small Gleam package that provides input functions (stdin reading) missing from gleam/io.

Current section

Files

Jump to
in src in.erl
Raw

src/in.erl

-module(in).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/in.gleam").
-export([read/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.
-file("src/in.gleam", 9).
-spec get_line() -> binary().
get_line() ->
_pipe = io:get_line(<<""/utf8>>),
_pipe@1 = gleam@dynamic@decode:run(
_pipe,
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
gleam@result:unwrap(_pipe@1, <<"EOF"/utf8>>).
-file("src/in.gleam", 15).
-spec get_line_acc(gleam@string_tree:string_tree()) -> gleam@string_tree:string_tree().
get_line_acc(Acc) ->
Line = get_line(),
case Line of
<<"EOF"/utf8>> ->
Acc;
_ ->
get_line_acc(gleam@string_tree:append(Acc, Line))
end.
-file("src/in.gleam", 24).
?DOC(" Reads until EOF from stdin.\n").
-spec read() -> binary().
read() ->
_pipe = gleam@string_tree:new(),
_pipe@1 = get_line_acc(_pipe),
unicode:characters_to_binary(_pipe@1).