From 55144a098040bf43871df4cf7b217e47f697c12b Mon Sep 17 00:00:00 2001 From: sobolevn Date: Mon, 19 Aug 2024 23:49:53 +0300 Subject: Fix js --- src/gleam_stdlib.mjs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/gleam_stdlib.mjs') diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index a89c829..9fe6caa 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -16,6 +16,7 @@ import { } from "./gleam/regex.mjs"; import { DecodeError } from "./gleam/dynamic.mjs"; import { Some, None } from "./gleam/option.mjs"; +import { Eq, Gt, Lt } from "./gleam/order.mjs"; import Dict from "./dict.mjs"; const Nil = undefined; @@ -916,3 +917,25 @@ export function base16_decode(string) { export function bit_array_inspect(bits, acc) { return `${acc}${[...bits.buffer].join(", ")}`; } + +export function bit_array_compare(first, second) { + for (let i = 0; i < first.length; i++) { + if (i >= second.length) { + return new Gt(); // first has more items + } + const f = first.buffer[i]; + const s = second.buffer[i]; + if (f > s) { + return new Gt(); + } + if (f < s) { + return new Lt() + } + } + // This means that either first did not have any items + // or all items in first were equal to second. + if (first.length === second.length) { + return new Eq(); + } + return new Lt(); // second has more items +} -- cgit v1.2.3