Current section

Files

Jump to
oaspec src oaspec@internal@openapi@parser_value.erl
Raw

src/oaspec@internal@openapi@parser_value.erl

-module(oaspec@internal@openapi@parser_value).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaspec/internal/openapi/parser_value.gleam").
-export([extract_optional/2, optional_string/2, optional_int/2, optional_float/2, bool_default/3, string_default/3, extract_map/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/oaspec/internal/openapi/parser_value.gleam", 17).
?DOC(false).
-spec from_node(yay:node_()) -> oaspec@internal@openapi@value:json_value().
from_node(Node) ->
case Node of
node_nil ->
json_null;
{node_str, S} ->
{json_string, S};
{node_bool, B} ->
{json_bool, B};
{node_int, I} ->
{json_int, I};
{node_float, F} ->
{json_float, F};
{node_seq, Items} ->
{json_array, gleam@list:map(Items, fun from_node/1)};
{node_map, Entries} ->
{json_object,
begin
_pipe = gleam@list:filter_map(
Entries,
fun(Entry) ->
{K, V} = Entry,
case K of
{node_str, Key} ->
{ok, {Key, from_node(V)}};
_ ->
{error, nil}
end
end
),
maps:from_list(_pipe)
end}
end.
-file("src/oaspec/internal/openapi/parser_value.gleam", 41).
?DOC(false).
-spec extract_optional(yay:node_(), binary()) -> gleam@option:option(oaspec@internal@openapi@value:json_value()).
extract_optional(Node, Key) ->
case yay:select_sugar(Node, Key) of
{ok, node_nil} ->
none;
{ok, Child} ->
{some, from_node(Child)};
{error, _} ->
none
end.
-file("src/oaspec/internal/openapi/parser_value.gleam", 54).
?DOC(false).
-spec optional_bool(yay:node_(), binary()) -> gleam@option:option(boolean()).
optional_bool(Node, Key) ->
case yay:extract_optional_bool(Node, Key) of
{ok, Value} ->
Value;
{error, _} ->
none
end.
-file("src/oaspec/internal/openapi/parser_value.gleam", 63).
?DOC(false).
-spec optional_string(yay:node_(), binary()) -> gleam@option:option(binary()).
optional_string(Node, Key) ->
case yay:extract_optional_string(Node, Key) of
{ok, Value} ->
Value;
{error, _} ->
none
end.
-file("src/oaspec/internal/openapi/parser_value.gleam", 72).
?DOC(false).
-spec optional_int(yay:node_(), binary()) -> gleam@option:option(integer()).
optional_int(Node, Key) ->
case yay:extract_optional_int(Node, Key) of
{ok, Value} ->
Value;
{error, _} ->
none
end.
-file("src/oaspec/internal/openapi/parser_value.gleam", 81).
?DOC(false).
-spec optional_float(yay:node_(), binary()) -> gleam@option:option(float()).
optional_float(Node, Key) ->
case yay:extract_optional_float(Node, Key) of
{ok, Value} ->
Value;
{error, _} ->
none
end.
-file("src/oaspec/internal/openapi/parser_value.gleam", 92).
?DOC(false).
-spec bool_default(yay:node_(), binary(), boolean()) -> boolean().
bool_default(Node, Key, Default) ->
case optional_bool(Node, Key) of
{some, Value} ->
Value;
none ->
Default
end.
-file("src/oaspec/internal/openapi/parser_value.gleam", 100).
?DOC(false).
-spec string_default(yay:node_(), binary(), binary()) -> binary().
string_default(Node, Key, Default) ->
case optional_string(Node, Key) of
{some, Value} ->
Value;
none ->
Default
end.
-file("src/oaspec/internal/openapi/parser_value.gleam", 109).
?DOC(false).
-spec extract_map(yay:node_(), binary()) -> gleam@dict:dict(binary(), oaspec@internal@openapi@value:json_value()).
extract_map(Node, Key) ->
case yay:select_sugar(Node, Key) of
{ok, {node_map, Entries}} ->
_pipe = gleam@list:filter_map(
Entries,
fun(Entry) ->
{K, V} = Entry,
case K of
{node_str, Name} ->
{ok, {Name, from_node(V)}};
_ ->
{error, nil}
end
end
),
maps:from_list(_pipe);
_ ->
maps:new()
end.