From a6b75f614c97f7cf2bede89b5769bfcd13c31571 Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Fri, 10 Sep 2021 20:32:50 +0100 Subject: Optional --- src/gleam_stdlib.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/gleam_stdlib.js') diff --git a/src/gleam_stdlib.js b/src/gleam_stdlib.js index 4c52daf..37f071a 100644 --- a/src/gleam_stdlib.js +++ b/src/gleam_stdlib.js @@ -540,3 +540,15 @@ export function decode_result(data) { export function decode_map(data) { return data instanceof Map ? new Ok(data) : decoder_error("Map", data); } + +export function decode_option(data, decoder) { + if (data === null || data === undefined || data instanceof None) + return new Ok(new None()); + if (data instanceof Some) data = data[0]; + let result = decoder(data); + if (result.isOk()) { + return new Ok(new Some(result[0])); + } else { + return result; + } +} -- cgit v1.2.3