Packages
oaspec
0.19.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@openapi@parser_error.erl
-module(oaspec@openapi@parser_error).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaspec/openapi/parser_error.gleam").
-export([missing_field_from_extraction/4, missing_field_from_selector/4]).
-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(
" Shared helpers for parser modules that need to turn a `yay`-level\n"
" extraction / selector failure into a `Diagnostic`. Split out of\n"
" `parser.gleam` so both top-level flow parsing and schema parsing can\n"
" depend on the same error shape without duplicating the hint-assembly\n"
" logic.\n"
).
-file("src/oaspec/openapi/parser_error.gleam", 15).
?DOC(
" Build a `missing_field` diagnostic from a `yay.ExtractionError`, folding\n"
" the extractor-internal detail into the diagnostic's hint so nothing is\n"
" silently dropped.\n"
).
-spec missing_field_from_extraction(
yay:extraction_error(),
binary(),
binary(),
oaspec@openapi@diagnostic:source_loc()
) -> oaspec@openapi@diagnostic:diagnostic().
missing_field_from_extraction(Err, Path, Field, Loc) ->
Base = oaspec@openapi@diagnostic:missing_field(Path, Field, Loc),
{diagnostic,
erlang:element(2, Base),
erlang:element(3, Base),
erlang:element(4, Base),
erlang:element(5, Base),
erlang:element(6, Base),
erlang:element(7, Base),
erlang:element(8, Base),
{some,
<<<<"Check your OpenAPI spec structure. ("/utf8,
(yay:extraction_error_to_string(Err))/binary>>/binary,
")"/utf8>>}}.
-file("src/oaspec/openapi/parser_error.gleam", 36).
?DOC(
" Build a `missing_field` diagnostic from a `yay.SelectorError`. The\n"
" selector error is collapsed to its constructor name since the detail\n"
" isn't meaningful to users, but we still thread it through rather than\n"
" discarding it outright.\n"
).
-spec missing_field_from_selector(
yay:selector_error(),
binary(),
binary(),
oaspec@openapi@diagnostic:source_loc()
) -> oaspec@openapi@diagnostic:diagnostic().
missing_field_from_selector(Err, Path, Field, Loc) ->
Detail = case Err of
{node_not_found, At} ->
<<"selector resolved up to segment "/utf8,
(erlang:integer_to_binary(At))/binary>>;
selector_parse_error ->
<<"selector parse error"/utf8>>
end,
Base = oaspec@openapi@diagnostic:missing_field(Path, Field, Loc),
{diagnostic,
erlang:element(2, Base),
erlang:element(3, Base),
erlang:element(4, Base),
erlang:element(5, Base),
erlang:element(6, Base),
erlang:element(7, Base),
erlang:element(8, Base),
{some,
<<<<"Check your OpenAPI spec structure. ("/utf8, Detail/binary>>/binary,
")"/utf8>>}}.