aboutsummaryrefslogtreecommitdiff
path: root/aoc2023/build/packages/adglent/src/priv@errors.erl
blob: 978c675d74d50d8fc59067dba0c2a2bcc367bdd3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
-module(priv@errors).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]).

-export([map_messages/3, map_error/2, print_result/1, print_error/1, assert_ok/1]).

-spec map_messages({ok, any()} | {error, any()}, binary(), binary()) -> {ok,
        binary()} |
    {error, binary()}.
map_messages(Result, Success_message, Error_message) ->
    _pipe = Result,
    _pipe@1 = gleam@result:map_error(
        _pipe,
        fun(Error) ->
            <<<<<<"Error - "/utf8, Error_message/binary>>/binary, ": "/utf8>>/binary,
                (gleam@string:inspect(Error))/binary>>
        end
    ),
    gleam@result:replace(_pipe@1, Success_message).

-spec map_error({ok, NIB} | {error, any()}, binary()) -> {ok, NIB} |
    {error, binary()}.
map_error(Result, Error_message) ->
    _pipe = Result,
    gleam@result:map_error(
        _pipe,
        fun(Error) ->
            <<<<Error_message/binary, ": "/utf8>>/binary,
                (gleam@string:inspect(Error))/binary>>
        end
    ).

-spec print_result({ok, binary()} | {error, binary()}) -> {ok, binary()} |
    {error, binary()}.
print_result(Result) ->
    _pipe = Result,
    _pipe@1 = gleam@result:unwrap_both(_pipe),
    gleam@io:println(_pipe@1),
    Result.

-spec print_error({ok, NIK} | {error, binary()}) -> {ok, NIK} |
    {error, binary()}.
print_error(Result) ->
    _pipe = Result,
    gleam@result:map_error(
        _pipe,
        fun(Err) ->
            gleam@io:println(Err),
            Err
        end
    ).

-spec assert_ok({ok, NIO} | {error, binary()}) -> NIO.
assert_ok(Result) ->
    _assert_subject = begin
        _pipe = Result,
        gleam@result:map_error(
            _pipe,
            fun(Err) ->
                erlang:halt(1),
                Err
            end
        )
    end,
    {ok, Value} = case _assert_subject of
        {ok, _} -> _assert_subject;
        _assert_fail ->
            erlang:error(#{gleam_error => let_assert,
                        message => <<"Assertion pattern match failed"/utf8>>,
                        value => _assert_fail,
                        module => <<"priv/errors"/utf8>>,
                        function => <<"assert_ok"/utf8>>,
                        line => 43})
    end,
    Value.