EndPointBlank. Masking. JsonPath
(end_point_blank_elixir v0.3.1)
Copy Markdown
A constrained, well-defined JSONPath subset shared across intake and the client libraries. It parses a path string into tokens and transforms a value by replacing every fully-matched location with the result of a callback, rebuilding parent containers immutably.
Supported tokens:
$— root..name/['name']/["name"]—{:child, name}(object key, case-sensitive).[n]—{:index, n}(0-based array index)..*/[*]—:wildcard(every object value / array element)...name—{:descendant, name}(every value under keynameat any depth).
Anything outside this subset (filters, slices, unions, garbled input) makes
parse/1 return :error; callers treat that as "matches nothing". Functions
here never raise.
Summary
Functions
Parses a JSONPath string into a token list. Returns {:ok, tokens} or
:error for unsupported/garbled input. Never raises.
Walks value following tokens, replacing each fully-matched location with
fun.(old_value) and rebuilding parents immutably. Unmatched locations are
left unchanged. Never raises.
Types
@type token() :: {:child, String.t()} | {:index, non_neg_integer()} | :wildcard | {:descendant, String.t()}
@type tokens() :: [token()]
Functions
Parses a JSONPath string into a token list. Returns {:ok, tokens} or
:error for unsupported/garbled input. Never raises.
Walks value following tokens, replacing each fully-matched location with
fun.(old_value) and rebuilding parents immutably. Unmatched locations are
left unchanged. Never raises.