diff options
author | RJ Dellecese <rjdellecese@gmail.com> | 2019-12-18 22:47:10 -0500 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2019-12-19 10:35:55 +0000 |
commit | 21d2771d72feb740e5408928e0d81f6e0fff513a (patch) | |
tree | a5547ff9089acca75551e0c89082fab58ecc44dc /src | |
parent | 4754b04599695064f33ac685ae0f015cf3b36e24 (diff) | |
download | gleam_stdlib-21d2771d72feb740e5408928e0d81f6e0fff513a.tar.gz gleam_stdlib-21d2771d72feb740e5408928e0d81f6e0fff513a.zip |
Change Result Error type to String
and add some useful error messages.
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 |