Packages
oaspec
0.56.0
0.68.0
0.67.0
0.66.0
0.65.0
0.64.0
0.63.0
0.62.0
0.61.0
0.60.0
0.59.0
0.58.1
0.58.0
0.57.0
0.56.0
0.55.0
0.54.0
0.53.0
0.52.0
0.51.0
0.50.0
0.49.0
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.0
0.42.0
0.41.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.0
0.7.0
0.6.3
0.6.1
0.6.0
0.5.0
0.4.0
0.3.0
0.1.3
Generate Gleam code from OpenAPI 3.x specifications
Current section
Files
Jump to
Current section
Files
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_bool/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", 52).
?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", 61).
?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", 70).
?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", 79).
?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", 90).
?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", 98).
?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", 107).
?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.