diff options
author | Louis Pilfold <louis@lpil.uk> | 2022-01-01 23:33:58 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2022-01-01 23:33:58 +0000 |
commit | 98277883177ae6531bc68bb799d103e516c2006b (patch) | |
tree | 5b2e3b1a1b7f54c3af77e995bac17f4b697e546c /src | |
parent | 9d40cdf444e0c73c192561658855f259cab6b507 (diff) | |
download | gleam_stdlib-98277883177ae6531bc68bb799d103e516c2006b.tar.gz gleam_stdlib-98277883177ae6531bc68bb799d103e516c2006b.zip |
Set path in element and field functions
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/dynamic.gleam | 2 | ||||
-rw-r--r-- | src/gleam_stdlib.erl | 2 | ||||
-rw-r--r-- | src/gleam_stdlib.mjs | 2 |
3 files changed, 4 insertions, 2 deletions
diff --git a/src/gleam/dynamic.gleam b/src/gleam/dynamic.gleam index 9a626dc..04a01ae 100644 --- a/src/gleam/dynamic.gleam +++ b/src/gleam/dynamic.gleam @@ -404,6 +404,7 @@ pub fn field( ) -> Result(t, DecodeErrors) { try value = decode_field(value, name) inner_type(value) + |> map_errors(push_path(_, name)) } if erlang { @@ -450,6 +451,7 @@ pub fn element( } } inner_type(data) + |> map_errors(push_path(_, index)) } fn exact_decode_tuple_error(size: Int, data: Dynamic) -> Result(a, DecodeErrors) { diff --git a/src/gleam_stdlib.erl b/src/gleam_stdlib.erl index d88b964..3228b18 100644 --- a/src/gleam_stdlib.erl +++ b/src/gleam_stdlib.erl @@ -94,7 +94,7 @@ decode_list(Data) -> decode_error_msg(<<"List">>, Data). decode_field(Data, Key) -> case Data of #{Key := Value} -> {ok, Value}; - _ -> decode_error_msg(io_lib:format("Value with field `~p`", [Key]), Data) + _ -> decode_error_msg("object", Data) end. size_of_tuple(Data) -> tuple_size(Data). diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index 4d8f65e..8340cd6 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -558,7 +558,7 @@ export function decode_option(data, decoder) { } export function decode_field(value, name) { - let error = () => decoder_error(`Value with field ${inspect(name)}`, value); + let error = () => decoder_error("object", value); if (value instanceof Map) { let entry = value.get(name); return entry.isOk() ? entry : error(); |