From 63d17f8a64634badf1855b55fd97cd75ecb03e09 Mon Sep 17 00:00:00 2001 From: Giacomo Cavalieri Date: Tue, 25 Apr 2023 19:53:26 +0200 Subject: Change `decode_field`'s return type --- src/gleam_stdlib.mjs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/gleam_stdlib.mjs') diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index 52fbc89..a658add 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -663,14 +663,13 @@ export function decode_option(data, decoder) { } export function decode_field(value, name) { - let missing_field_error = () => decoder_error_no_classify("field", "nothing"); let not_a_map_error = () => decoder_error("Map", value); if (value instanceof PMap || value instanceof WeakMap || value instanceof Map) { let entry = map_get(value, name); - return new Ok(entry.isOk() ? entry : missing_field_error()); + return new Ok(entry.isOk() ? new Some(entry[0]) : new None()); } else if (Object.getPrototypeOf(value) == Object.prototype) { - return try_get_field(value, name, () => new Ok(missing_field_error())); + return try_get_field(value, name, () => new Ok(new None())); } else { return try_get_field(value, name, not_a_map_error); } @@ -678,7 +677,7 @@ export function decode_field(value, name) { function try_get_field(value, field, or_else) { try { - return field in value ? new Ok(new Ok(value[field])) : or_else(); + return field in value ? new Ok(new Some(value[field])) : or_else(); } catch { return or_else(); } -- cgit v1.2.3