Packages

A type-safe configuration loader for Gleam that supports JSON, YAML, and TOML with automatic format detection, environment variable resolution, and profile-based configuration.

Current section

Files

Jump to
yodel src yodel@internal@parser.erl
Raw

src/yodel@internal@parser.erl

-module(yodel@internal@parser).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/yodel/internal/parser.gleam").
-export([supported_extensions/0, parse/2]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-file("src/yodel/internal/parser.gleam", 11).
?DOC(false).
-spec supported_extensions() -> list(binary()).
supported_extensions() ->
lists:append(
[yodel@internal@parsers@yaml:supported_extensions(),
yodel@internal@parsers@toml:supported_extensions()]
).
-file("src/yodel/internal/parser.gleam", 34).
?DOC(false).
-spec parse_json(binary()) -> {ok, yodel@internal@properties:properties()} |
{error, yodel@errors:config_error()}.
parse_json(Content) ->
yodel@internal@parsers@yaml:parse(Content).
-file("src/yodel/internal/parser.gleam", 39).
?DOC(false).
-spec parse_toml(binary()) -> {ok, yodel@internal@properties:properties()} |
{error, yodel@errors:config_error()}.
parse_toml(Content) ->
yodel@internal@parsers@toml:parse(Content).
-file("src/yodel/internal/parser.gleam", 43).
?DOC(false).
-spec parse_yaml(binary()) -> {ok, yodel@internal@properties:properties()} |
{error, yodel@errors:config_error()}.
parse_yaml(Content) ->
yodel@internal@parsers@yaml:parse(Content).
-file("src/yodel/internal/parser.gleam", 22).
?DOC(false).
-spec parse(binary(), yodel@options:format()) -> {ok,
yodel@internal@properties:properties()} |
{error, yodel@errors:config_error()}.
parse(Content, Format) ->
case Format of
json ->
_pipe = Content,
parse_json(_pipe);
toml ->
_pipe@1 = Content,
parse_toml(_pipe@1);
yaml ->
_pipe@2 = Content,
parse_yaml(_pipe@2);
auto ->
{error, {parse_error, unknown_format}}
end.