diff options
author | Louis Pilfold <louis@lpil.uk> | 2021-08-08 22:14:56 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2021-08-08 22:14:56 +0100 |
commit | 29398e1848b0615afda30fb1da4ec8d81eccc1c5 (patch) | |
tree | 5762a473ca246cee13adb1632b7d5850a91fd78c /src/gleam_stdlib.js | |
parent | c5a001977a3b76f257a3a7ea4605f6ff61f1a590 (diff) | |
download | gleam_stdlib-29398e1848b0615afda30fb1da4ec8d81eccc1c5.tar.gz gleam_stdlib-29398e1848b0615afda30fb1da4ec8d81eccc1c5.zip |
Bit string slice
Diffstat (limited to 'src/gleam_stdlib.js')
-rw-r--r-- | src/gleam_stdlib.js | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/gleam_stdlib.js b/src/gleam_stdlib.js index b63a4ea..51de04a 100644 --- a/src/gleam_stdlib.js +++ b/src/gleam_stdlib.js @@ -213,8 +213,11 @@ export function log(term) { } export function stringify(data) { - let replacer = (_key, value) => - typeof value === "bigint" ? value.toString() + "n" : value; + let replacer = (_key, value) => { + if (typeof value === "bigint") return value.toString() + "n"; + if (typeof value === "undefined") return null; + return value; + }; try { return JSON.stringify(data, replacer); } catch (_error) { @@ -263,3 +266,10 @@ export function truncate(float) { export function power(base, exponent) { return Math.pow(base, exponent); } + +export function bit_string_slice(bits, position, length) { + let start = Math.min(position, position + length); + let end = Math.max(position, position + length); + if (start < 0 || end > bits.byteLength) return gleam_error(Nil); + return gleam_ok(new Uint8Array(bits.buffer, start, Math.abs(length))); +} |