From fe9aa89e6d595599a8c33b50cb206cb71b4d8a19 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Sat, 11 Sep 2021 15:00:27 +0100 Subject: JS decode field for maps --- src/gleam_stdlib.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/gleam_stdlib.js') diff --git a/src/gleam_stdlib.js b/src/gleam_stdlib.js index b7173c2..158a571 100644 --- a/src/gleam_stdlib.js +++ b/src/gleam_stdlib.js @@ -556,7 +556,14 @@ export function decode_option(data, decoder) { } export function decode_field(value, name) { - return name in value - ? new Ok(value[name]) - : decoder_error(`Value with field ${inspect(name)}`, value); + let error = () => decoder_error(`Value with field ${inspect(name)}`, value); + if (value instanceof Map) { + let entry = value.get(name); + return entry.isOk() ? entry : error(); + } + try { + return name in value ? new Ok(value[name]) : error(); + } catch { + return error(); + } } -- cgit v1.2.3