aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2021-08-24 16:44:51 +0100
committerLouis Pilfold <louis@lpil.uk>2021-08-24 16:44:51 +0100
commitb77ef4af3489bee111a3099252b3707b61b55527 (patch)
tree52a31fa0b88c8e3826a56e4267bb802ade61ecf1
parent54695cd5f23a6409d467074987df0fc7d5a3055e (diff)
downloadgleam_stdlib-b77ef4af3489bee111a3099252b3707b61b55527.tar.gz
gleam_stdlib-b77ef4af3489bee111a3099252b3707b61b55527.zip
Update for new prelude
-rw-r--r--bin/run-tests.js4
-rw-r--r--src/gleam_stdlib.js46
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)));
}