Packages

Parser combinators for Gleam, inspired by Rust's nom.

Retired package:

Current section

Files

Jump to
mon src mon.erl
Raw

src/mon.erl

-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.