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.js14
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)));
+}