diff options
author | Louis Pilfold <louis@lpil.uk> | 2021-08-24 16:44:51 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2021-08-24 16:44:51 +0100 |
commit | b77ef4af3489bee111a3099252b3707b61b55527 (patch) | |
tree | 52a31fa0b88c8e3826a56e4267bb802ade61ecf1 | |
parent | 54695cd5f23a6409d467074987df0fc7d5a3055e (diff) | |
download | gleam_stdlib-b77ef4af3489bee111a3099252b3707b61b55527.tar.gz gleam_stdlib-b77ef4af3489bee111a3099252b3707b61b55527.zip |
Update for new prelude
-rw-r--r-- | bin/run-tests.js | 4 | ||||
-rw-r--r-- | src/gleam_stdlib.js | 46 |
2 files changed, 19 insertions, 31 deletions
diff --git a/bin/run-tests.js b/bin/run-tests.js index a142944..bd5475f 100644 --- a/bin/run-tests.js +++ b/bin/run-tests.js @@ -11,7 +11,6 @@ async function main() { for await (let entry of await opendir(dir)) { if (!entry.name.endsWith("_test.js")) continue; let path = "../" + dir + entry.name; - // process.stdout.write("\ngleam/" + entry.name.slice(0, -3) + ":\n "); let module = await import(path); for (let fnName of Object.keys(module)) { @@ -21,7 +20,8 @@ async function main() { process.stdout.write(`\u001b[${32}m.\u001b[${0}m`); passes++; } catch (error) { - process.stdout.write(`\n❌ ${fnName}: ${error}\n`); + let moduleName = "\ngleam/" + entry.name.slice(0, -3); + process.stdout.write(`\n❌ ${moduleName}.${fnName}: ${error}\n`); failures++; } } diff --git a/src/gleam_stdlib.js b/src/gleam_stdlib.js index 51de04a..d228d3a 100644 --- a/src/gleam_stdlib.js +++ b/src/gleam_stdlib.js @@ -1,19 +1,9 @@ +import { Ok, Error, List } from "./gleam.js"; + const Nil = undefined; function to_list(array) { - let list = []; - for (let item of array.reverse()) { - list = [item, list]; - } - return list; -} - -function gleam_ok(x) { - return { type: "Ok", 0: x }; -} - -function gleam_error(x) { - return { type: "Error", 0: x }; + return List.fromArray(array); } export function identity(x) { @@ -22,17 +12,17 @@ export function identity(x) { export function parse_int(value) { if (/^[-+]?(\d+)$/.test(value)) { - return gleam_ok(parseInt(value)); + return new Ok(parseInt(value)); } else { - return gleam_error(Nil); + return new Error(Nil); } } export function parse_float(value) { if (/^[-+]?(\d+)\.(\d+)$/.test(value)) { - return gleam_ok(parseFloat(value)); + return new Ok(parseFloat(value)); } else { - return gleam_error(Nil); + return new Error(Nil); } } @@ -89,9 +79,9 @@ export function pop_grapheme(string) { first = string.match(/./u)?.[0]; } if (first) { - return gleam_ok([first, string.slice(first.length)]); + return new Ok([first, string.slice(first.length)]); } else { - return gleam_error(Nil); + return new Error(Nil); } } @@ -120,7 +110,7 @@ export function split(xs, pattern) { } export function join(xs) { - return xs.flat(Infinity).join(""); + return xs.toArray().join(""); } export function byte_size(data) { @@ -160,9 +150,9 @@ export function split_once(haystack, needle) { if (index >= 0) { let before = haystack.slice(0, index); let after = haystack.slice(index + needle.length); - return gleam_ok([before, after]); + return new Ok([before, after]); } else { - return gleam_error(Nil); + return new Error(Nil); } } @@ -226,16 +216,14 @@ export function stringify(data) { } export function crash(message) { - throw new Error(message); + throw new globalThis.Error(message); } export function bit_string_to_string(bit_string) { try { - return gleam_ok( - new TextDecoder("utf-8", { fatal: true }).decode(bit_string) - ); + return new Ok(new TextDecoder("utf-8", { fatal: true }).decode(bit_string)); } catch (_error) { - return gleam_error(undefined); + return new Error(undefined); } } @@ -270,6 +258,6 @@ export function power(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))); + if (start < 0 || end > bits.byteLength) return new Error(Nil); + return new Ok(new Uint8Array(bits.buffer, start, Math.abs(length))); } |