JSON Pointer とフィールドパスを変換・照合する純粋関数を提供します。
JSON Schema の検証エラーは JSON Pointer、アプリケーション側は文字列キーと list 添字から なるパスを使うため、このモジュールで変換規則を一元化します。
Summary
Functions
JSON Pointer を未解決のセグメント列へ変換します。
JSON Pointer のセグメントを RFC 6901 の形式へエスケープします。
定義パターンがパスの先頭に一致するとき、解決後のパスを返します。
JSON Pointer を文字列キーと list 添字のパスへ変換します。
JSON Pointer のパスを、list の添字を整数へ変換したパスにします。
Types
@type pattern() :: [pattern_segment()]
@type pattern_segment() :: String.t() | :index
@type pointer_path() :: [segment()]
@type resolved_path() :: [resolved_segment()]
@type resolved_segment() :: String.t() | non_neg_integer()
@type segment() :: String.t()
Functions
@spec decode(String.t()) :: {:ok, pointer_path()} | :error
JSON Pointer を未解決のセグメント列へ変換します。
iex> ExParamsSchema.Schema.JsonPointer.decode("#/a~1b~0c/0")
{:ok, ["a/b~c", "0"]}
JSON Pointer のセグメントを RFC 6901 の形式へエスケープします。
@spec match(pattern(), pointer_path()) :: {:ok, resolved_path()} | :error
定義パターンがパスの先頭に一致するとき、解決後のパスを返します。
:index は 0 以上の整数のセグメントにのみ一致します。
@spec parse(String.t()) :: resolved_path()
JSON Pointer を文字列キーと list 添字のパスへ変換します。
iex> ExParamsSchema.Schema.JsonPointer.parse("#/entries/0/value")
["entries", 0, "value"]# はルートを表します。不正な Pointer は空のパスとして扱います。
@spec resolve_segments(pointer_path()) :: resolved_path()
JSON Pointer のパスを、list の添字を整数へ変換したパスにします。