-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 = <>, Stack@1 = case erlang:element(4, Problem) of [] -> <<""/utf8>>; _ -> Stack end, <>. -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).