diff options
author | Peter Saxton <peterhsaxton@gmail.com> | 2023-08-12 16:25:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-12 15:25:16 +0100 |
commit | d5ba78077556b4d2554d31f8a190192a9a7100f4 (patch) | |
tree | 0b11fc82cadb6d31b5859506ef642995c8b057c8 /src | |
parent | 6cbbfcb60bde93682c3cb7289b92f3f9d0a3891c (diff) | |
download | javascript-d5ba78077556b4d2554d31f8a190192a9a7100f4.tar.gz javascript-d5ba78077556b4d2554d31f8a190192a9a7100f4.zip |
add ffi bindings for maps (#5)
Diffstat (limited to 'src')
-rw-r--r-- | src/ffi.mjs | 19 | ||||
-rw-r--r-- | src/gleam/javascript/map.gleam | 13 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/ffi.mjs b/src/ffi.mjs index 4d76d2d..6f667c0 100644 --- a/src/ffi.mjs +++ b/src/ffi.mjs @@ -134,3 +134,22 @@ export function all_promises(...promises) { return Promise.all(promises); } } + +export function map_new() { + return new Map(); +} + +export function map_set(map, key, value) { + return map.set(key, value); +} + +export function map_get(map, key) { + if (map.has(key)) { + return new Ok(map.get(key)); + } + return new Error(undefined); +} + +export function map_size(map) { + return map.size; +} diff --git a/src/gleam/javascript/map.gleam b/src/gleam/javascript/map.gleam new file mode 100644 index 0000000..a2fa282 --- /dev/null +++ b/src/gleam/javascript/map.gleam @@ -0,0 +1,13 @@ +pub type Map(key, value) + +@external(javascript, "../../ffi.mjs", "map_new") +pub fn new() -> Map(key, value) + +@external(javascript, "../../ffi.mjs", "map_set") +pub fn set(a: Map(key, value), b: key, c: value) -> Map(key, value) + +@external(javascript, "../../ffi.mjs", "map_get") +pub fn get(a: Map(key, value), b: key) -> Result(value, Nil) + +@external(javascript, "../../ffi.mjs", "map_size") +pub fn size(a: Map(key, value)) -> Int |