Current section

Files

Jump to
outcome src outcome.erl
Raw

src/outcome.erl

-module(outcome).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([error_with_defect/1, error_with_failure/1, into_defect/1, into_failure/1, map_into_defect/2, map_into_failure/2, replace_with_defect/2, replace_with_failure/2, map_error/2, map_defect/2, map_failure/2, tap/2, tap_error/2, tap_defect/2, tap_failure/2, context/2, unwrap_failure/2, extract_error/1, pretty_print/2, print_line/2]).
-export_type([severity/0, problem/1]).
-type severity() :: defect | failure.
-type problem(FWT) :: {problem, FWT, severity(), list(binary())}.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 43).
-spec new_problem(FXE, severity()) -> problem(FXE).
new_problem(Error, Severity) ->
{problem, Error, Severity, []}.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 35).
-spec new_defect(FXA) -> problem(FXA).
new_defect(Error) ->
new_problem(Error, defect).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 39).
-spec new_failure(FXC) -> problem(FXC).
new_failure(Error) ->
new_problem(Error, failure).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 58).
-spec error_with_defect(FXG) -> {ok, any()} | {error, problem(FXG)}.
error_with_defect(Defect) ->
{error, new_defect(Defect)}.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 73).
-spec error_with_failure(FXK) -> {ok, any()} | {error, problem(FXK)}.
error_with_failure(Failure) ->
{error, new_failure(Failure)}.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 87).
-spec into_defect({ok, FXO} | {error, FXP}) -> {ok, FXO} | {error, problem(FXP)}.
into_defect(Result) ->
gleam@result:map_error(Result, fun new_defect/1).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 101).
-spec into_failure({ok, FXU} | {error, FXV}) -> {ok, FXU} |
{error, problem(FXV)}.
into_failure(Result) ->
gleam@result:map_error(Result, fun new_failure/1).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 107).
-spec map_into_defect({ok, FYA} | {error, FYB}, fun((FYB) -> FYE)) -> {ok, FYA} |
{error, problem(FYE)}.
map_into_defect(Result, Mapper) ->
_pipe = Result,
_pipe@1 = gleam@result:map_error(_pipe, Mapper),
into_defect(_pipe@1).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 118).
-spec map_into_failure({ok, FYH} | {error, FYI}, fun((FYI) -> FYL)) -> {ok, FYH} |
{error, problem(FYL)}.
map_into_failure(Result, Mapper) ->
_pipe = Result,
_pipe@1 = gleam@result:map_error(_pipe, Mapper),
into_failure(_pipe@1).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 135).
-spec replace_with_defect({ok, FYO} | {error, any()}, FYS) -> {ok, FYO} |
{error, problem(FYS)}.
replace_with_defect(Result, E) ->
gleam@result:replace_error(Result, new_defect(E)).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 147).
-spec replace_with_failure({ok, FYV} | {error, any()}, FYZ) -> {ok, FYV} |
{error, problem(FYZ)}.
replace_with_failure(Result, E) ->
gleam@result:replace_error(Result, new_failure(E)).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 155).
-spec map_error_in_problem(problem(FZC), fun((FZC) -> FZC)) -> problem(FZC).
map_error_in_problem(Problem, Mapper) ->
_record = Problem,
{problem,
Mapper(erlang:element(2, Problem)),
erlang:element(3, _record),
erlang:element(4, _record)}.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 162).
-spec map_defect_in_problem(problem(FZF), fun((FZF) -> FZF)) -> problem(FZF).
map_defect_in_problem(Problem, Mapper) ->
case erlang:element(3, Problem) of
defect ->
_record = Problem,
{problem,
Mapper(erlang:element(2, Problem)),
erlang:element(3, _record),
erlang:element(4, _record)};
_ ->
Problem
end.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 172).
-spec map_failure_in_problem(problem(FZI), fun((FZI) -> FZI)) -> problem(FZI).
map_failure_in_problem(Problem, Mapper) ->
case erlang:element(3, Problem) of
failure ->
_record = Problem,
{problem,
Mapper(erlang:element(2, Problem)),
erlang:element(3, _record),
erlang:element(4, _record)};
_ ->
Problem
end.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 183).
-spec map_error({ok, FZL} | {error, problem(FZM)}, fun((FZM) -> FZM)) -> {ok,
FZL} |
{error, problem(FZM)}.
map_error(Outcome, Mapper) ->
gleam@result:map_error(
Outcome,
fun(_capture) -> map_error_in_problem(_capture, Mapper) end
).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 190).
-spec map_defect({ok, FZR} | {error, problem(FZS)}, fun((FZS) -> FZS)) -> {ok,
FZR} |
{error, problem(FZS)}.
map_defect(Outcome, Mapper) ->
gleam@result:map_error(
Outcome,
fun(_capture) -> map_defect_in_problem(_capture, Mapper) end
).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 194).
-spec map_failure({ok, FZW} | {error, problem(FZX)}, fun((FZX) -> FZX)) -> {ok,
FZW} |
{error, problem(FZX)}.
map_failure(Outcome, Mapper) ->
gleam@result:map_error(
Outcome,
fun(_capture) -> map_failure_in_problem(_capture, Mapper) end
).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 202).
-spec tap_error_in_problem(problem(GAB), fun((GAB) -> any())) -> problem(GAB).
tap_error_in_problem(Problem, Fun) ->
Fun(erlang:element(2, Problem)),
Problem.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 210).
-spec tap_defect_in_problem(problem(GAF), fun((GAF) -> any())) -> problem(GAF).
tap_defect_in_problem(Problem, Fun) ->
case erlang:element(3, Problem) of
defect ->
Fun(erlang:element(2, Problem)),
Problem;
_ ->
Problem
end.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 223).
-spec tap_failure_in_problem(problem(GAJ), fun((GAJ) -> any())) -> problem(GAJ).
tap_failure_in_problem(Problem, Fun) ->
case erlang:element(3, Problem) of
failure ->
Fun(erlang:element(2, Problem)),
Problem;
_ ->
Problem
end.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 237).
-spec tap({ok, GAN} | {error, problem(GAO)}, fun((problem(GAO)) -> any())) -> {ok,
GAN} |
{error, problem(GAO)}.
tap(Outcome, Fun) ->
gleam@result:map_error(
Outcome,
fun(Problem) ->
Fun(Problem),
Problem
end
).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 247).
-spec tap_error({ok, GAV} | {error, problem(GAW)}, fun((GAW) -> any())) -> {ok,
GAV} |
{error, problem(GAW)}.
tap_error(Outcome, Fun) ->
gleam@result:map_error(
Outcome,
fun(_capture) -> tap_error_in_problem(_capture, Fun) end
).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 254).
-spec tap_defect({ok, GBC} | {error, problem(GBD)}, fun((GBD) -> any())) -> {ok,
GBC} |
{error, problem(GBD)}.
tap_defect(Outcome, Fun) ->
gleam@result:map_error(
Outcome,
fun(_capture) -> tap_defect_in_problem(_capture, Fun) end
).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 261).
-spec tap_failure({ok, GBJ} | {error, problem(GBK)}, fun((GBK) -> any())) -> {ok,
GBJ} |
{error, problem(GBK)}.
tap_failure(Outcome, Fun) ->
gleam@result:map_error(
Outcome,
fun(_capture) -> tap_failure_in_problem(_capture, Fun) end
).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 290).
-spec push_to_stack(list(binary()), binary()) -> list(binary()).
push_to_stack(Stack, Entry) ->
[Entry | Stack].
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 294).
-spec add_context_to_problem(problem(GBX), binary()) -> problem(GBX).
add_context_to_problem(Problem, Value) ->
_record = Problem,
{problem,
erlang:element(2, _record),
erlang:element(3, _record),
push_to_stack(erlang:element(4, Problem), Value)}.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 283).
-spec context({ok, GBQ} | {error, problem(GBR)}, binary()) -> {ok, GBQ} |
{error, problem(GBR)}.
context(Outcome, Context) ->
gleam@result:map_error(
Outcome,
fun(_capture) -> add_context_to_problem(_capture, Context) end
).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 311).
-spec unwrap_failure(problem(GCA), GCA) -> GCA.
unwrap_failure(Problem, Default_value) ->
case erlang:element(3, Problem) of
defect ->
Default_value;
failure ->
erlang:element(2, Problem)
end.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 323).
-spec problem_to_error(problem(GCI)) -> GCI.
problem_to_error(Problem) ->
erlang:element(2, Problem).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 319).
-spec extract_error({ok, GCC} | {error, problem(GCD)}) -> {ok, GCC} |
{error, GCD}.
extract_error(Outcome) ->
_pipe = Outcome,
gleam@result:map_error(_pipe, fun problem_to_error/1).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 401).
-spec long_suffix(severity()) -> binary().
long_suffix(Severity) ->
case Severity of
defect ->
<<"Defect: "/utf8>>;
failure ->
<<"Failure: "/utf8>>
end.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 397).
-spec prettry_print_problem_error(severity(), binary()) -> binary().
prettry_print_problem_error(Severity, Error) ->
<<(long_suffix(Severity))/binary, Error/binary>>.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 408).
-spec pretty_print_stack_entry(binary()) -> binary().
pretty_print_stack_entry(Value) ->
Value.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 327).
-spec stack_to_lines(list(binary())) -> list(binary()).
stack_to_lines(Stack) ->
_pipe = Stack,
gleam@list:map(_pipe, fun pretty_print_stack_entry/1).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 374).
-spec pretty_print_with_joins(
problem(GCP),
binary(),
binary(),
fun((GCP) -> binary())
) -> binary().
pretty_print_with_joins(Problem, Join_current, Join_stack, To_s) ->
Current = prettry_print_problem_error(
erlang:element(3, Problem),
To_s(erlang:element(2, Problem))
),
Stack = <<Join_current/binary,
(begin
_pipe = erlang:element(4, Problem),
_pipe@1 = stack_to_lines(_pipe),
gleam@string:join(_pipe@1, Join_stack)
end)/binary>>,
Stack@1 = case erlang:element(4, Problem) of
[] ->
<<""/utf8>>;
_ ->
Stack
end,
<<Current/binary, Stack@1/binary>>.
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 352).
-spec pretty_print(problem(GCL), fun((GCL) -> binary())) -> binary().
pretty_print(Problem, To_s) ->
pretty_print_with_joins(
Problem,
<<"\n\nstack:\n "/utf8>>,
<<"\n "/utf8>>,
To_s
).
-file("/Users/sebastian/Source/sporto/gleam-outcome/src/outcome.gleam", 370).
-spec print_line(problem(GCN), fun((GCN) -> binary())) -> binary().
print_line(Problem, To_s) ->
pretty_print_with_joins(Problem, <<" << "/utf8>>, <<" < "/utf8>>, To_s).