Packages
oaspec
0.23.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@location_index.erl
-module(oaspec@openapi@location_index).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/oaspec/openapi/location_index.gleam").
-export([empty/0, lookup/2, lookup_field/3, build/1]).
-export_type([location_index/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.
-opaque location_index() :: {location_index,
gleam@dict:dict(binary(), oaspec@openapi@diagnostic:source_loc())}.
-file("src/oaspec/openapi/location_index.gleam", 29).
?DOC(" An empty index (no location information available).\n").
-spec empty() -> location_index().
empty() ->
{location_index, maps:new()}.
-file("src/oaspec/openapi/location_index.gleam", 35).
?DOC(
" Look up the source location for a given path.\n"
" Returns `NoSourceLoc` if the path is not in the index.\n"
).
-spec lookup(location_index(), binary()) -> oaspec@openapi@diagnostic:source_loc().
lookup(Index, Path) ->
_pipe = gleam_stdlib:map_get(erlang:element(2, Index), Path),
gleam@result:unwrap(_pipe, no_source_loc).
-file("src/oaspec/openapi/location_index.gleam", 42).
?DOC(
" Look up the source location for a field within a parent path.\n"
" Tries `parent.field` first, then falls back to `parent`, then `NoSourceLoc`.\n"
).
-spec lookup_field(location_index(), binary(), binary()) -> oaspec@openapi@diagnostic:source_loc().
lookup_field(Index, Parent, Field) ->
Field_path = case Parent of
<<""/utf8>> ->
Field;
_ ->
<<<<Parent/binary, "."/utf8>>/binary, Field/binary>>
end,
_pipe = gleam_stdlib:map_get(erlang:element(2, Index), Field_path),
_pipe@1 = gleam@result:lazy_or(
_pipe,
fun() -> gleam_stdlib:map_get(erlang:element(2, Index), Parent) end
),
gleam@result:unwrap(_pipe@1, no_source_loc).
-file("src/oaspec/openapi/location_index.gleam", 15).
?DOC(
" Build a location index from raw YAML/JSON content.\n"
" On failure (e.g. invalid YAML), returns an empty index.\n"
).
-spec build(binary()) -> location_index().
build(Content) ->
_pipe = yaml_loc_ffi:build_location_index(Content),
_pipe@1 = gleam@result:map(
_pipe,
fun(Pairs) ->
Entries = gleam@list:fold(
Pairs,
maps:new(),
fun(Acc, Pair) ->
{Path, {Line, Col}} = Pair,
gleam@dict:insert(Acc, Path, {source_loc, Line, Col})
end
),
{location_index, Entries}
end
),
gleam@result:unwrap(_pipe@1, empty()).