aboutsummaryrefslogtreecommitdiff
path: root/src/gleam_stdlib.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/gleam_stdlib.js')
-rw-r--r--src/gleam_stdlib.js12
1 files changed, 12 insertions, 0 deletions
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;
+ }
+}