Packages
caffeine_lang
4.3.7
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
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
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang@error_renderer.erl
-module(caffeine_lang@error_renderer).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/error_renderer.gleam").
-export([render_plain/1, render_all_plain/1]).
-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/caffeine_lang/error_renderer.gleam", 68).
?DOC(" Renders a source snippet for the given content and location.\n").
-spec render_snippet(binary(), caffeine_lang@errors:source_location()) -> binary().
render_snippet(Content, Loc) ->
Snippet = caffeine_lang@source_snippet:extract_snippet(
Content,
erlang:element(2, Loc),
erlang:element(3, Loc),
erlang:element(4, Loc)
),
erlang:element(2, Snippet).
-file("src/caffeine_lang/error_renderer.gleam", 13).
?DOC(" Renders a RichError to a plain-text string.\n").
-spec render_plain(caffeine_lang@rich_error:rich_error()) -> binary().
render_plain(Error) ->
Code_str = caffeine_lang@rich_error:error_code_to_string(
erlang:element(3, Error)
),
Msg = caffeine_lang@rich_error:error_message(erlang:element(2, Error)),
Header = <<<<<<"error["/utf8, Code_str/binary>>/binary, "]: "/utf8>>/binary,
Msg/binary>>,
Location_line = case {erlang:element(4, Error), erlang:element(6, Error)} of
{{some, Path}, {some, Loc}} ->
{some,
<<<<<<<<<<" --> "/utf8, Path/binary>>/binary, ":"/utf8>>/binary,
(erlang:integer_to_binary(erlang:element(2, Loc)))/binary>>/binary,
":"/utf8>>/binary,
(erlang:integer_to_binary(erlang:element(3, Loc)))/binary>>};
{{some, Path@1}, none} ->
{some, <<" --> "/utf8, Path@1/binary>>};
{_, _} ->
none
end,
Snippet = case {erlang:element(5, Error), erlang:element(6, Error)} of
{{some, Content}, {some, Loc@1}} ->
{some, render_snippet(Content, Loc@1)};
{_, _} ->
none
end,
Suggestion_line = case erlang:element(7, Error) of
{some, Suggestion} ->
{some,
<<<<" = help: Did you mean '"/utf8, Suggestion/binary>>/binary,
"'?"/utf8>>};
none ->
none
end,
_pipe = [{some, Header}, Location_line, Snippet, Suggestion_line],
_pipe@1 = gleam@list:filter_map(_pipe, fun(Opt) -> case Opt of
{some, Val} ->
{ok, Val};
none ->
{error, nil}
end end),
gleam@string:join(_pipe@1, <<"\n"/utf8>>).
-file("src/caffeine_lang/error_renderer.gleam", 61).
?DOC(" Renders a list of RichErrors to a plain-text string.\n").
-spec render_all_plain(list(caffeine_lang@rich_error:rich_error())) -> binary().
render_all_plain(Errors) ->
_pipe = Errors,
_pipe@1 = gleam@list:map(_pipe, fun render_plain/1),
gleam@string:join(_pipe@1, <<"\n\n"/utf8>>).