-module(mon). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([parse/2]). -export_type([parse_error/1, error_kind/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. -type parse_error(EWX) :: {parse_error, EWX, error_kind()}. -type error_kind() :: tag | take_while_mn | map_res. -file("src/mon.gleam", 18). ?DOC(" Like `result.try`, but works exclusively on `IResult`s.\n"). -spec parse( {ok, {EXH, EXI}} | {error, parse_error(EXH)}, fun(({EXH, EXI}) -> {ok, {EXH, EXL}} | {error, parse_error(EXH)}) ) -> {ok, {EXH, EXL}} | {error, parse_error(EXH)}. parse(Result, Fun) -> case Result of {ok, X} -> Fun(X); {error, E} -> {error, E} end.