diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/dynamic.gleam | 2 | ||||
-rw-r--r-- | src/gleam_stdlib.erl | 12 |
2 files changed, 6 insertions, 8 deletions
diff --git a/src/gleam/dynamic.gleam b/src/gleam/dynamic.gleam index 4512c8a..0660a67 100644 --- a/src/gleam/dynamic.gleam +++ b/src/gleam/dynamic.gleam @@ -49,5 +49,5 @@ pub fn list(from dynamic, containing decoder_type) { pub external fn field(from: Dynamic, named: a) -> Result(Dynamic, String) = "gleam_stdlib" "decode_field" -pub external fn element(from: Dynamic, position: Int) -> Result(Dynamic, Nil) +pub external fn element(from: Dynamic, position: Int) -> Result(Dynamic, String) = "gleam_stdlib" "decode_element" diff --git a/src/gleam_stdlib.erl b/src/gleam_stdlib.erl index abfdfbb..f963716 100644 --- a/src/gleam_stdlib.erl +++ b/src/gleam_stdlib.erl @@ -70,17 +70,15 @@ decode_field(Data, Key) -> decode_error_msg(io_lib:format("a map with key `~p`", [Key]), Data) end. -decode_element(Data, Position) -> +decode_element(Data, Position) when is_tuple(Data) -> case catch element(Position + 1, Data) of {'EXIT', _Reason} -> - {error, nil}; + {error, "Element position is out-of-bounds"}; Value -> - {ok, Value}; - - _ -> - {error, nil} - end. + {ok, Value} + end; +decode_element(Data, Position) -> decode_error_msg("a Tuple", Data). parse_int(String) -> case string:to_integer(binary:bin_to_list(String)) of |