diff options
author | shayan javani <shayan.javani@gmail.com> | 2022-10-07 10:04:12 +0330 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2022-12-21 22:37:07 +0000 |
commit | 5fdbeecc1a9790a253bb7c3fb09b6d6537c5cce9 (patch) | |
tree | 52aec88a09955db7ccd793b4120b8c0eab2ee782 /src | |
parent | 4e3830dbacc34500c7d27954ba6f043ca648df69 (diff) | |
download | gleam_stdlib-5fdbeecc1a9790a253bb7c3fb09b6d6537c5cce9.tar.gz gleam_stdlib-5fdbeecc1a9790a253bb7c3fb09b6d6537c5cce9.zip |
fixed javascript code for int_from_base_string
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam_stdlib.mjs | 50 |
1 files changed, 43 insertions, 7 deletions
diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index 2fafcd9..697662f 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -57,13 +57,49 @@ export function int_to_base_string(int, base) { return int.toString(base).toUpperCase(); } +const digits = [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "x", + "y", + "z", +]; + export function int_from_base_string(string, base) { - const result = parseInt(string, base) - if (isNaN(result)) { - return new Error(Nil) - } else { - return new Ok(result) + if (digits.slice(base).some((d) => string.toLowerCase().includes(d))) { + return new Error(Nil); } + return new Ok(parseInt(string, base)); } export function string_replace(string, target, substitute) { @@ -98,7 +134,7 @@ export function string_length(string) { } return i; } else { - return string.match(/./gus).length; + return string.match(/./gsu).length; } } @@ -120,7 +156,7 @@ export function pop_grapheme(string) { if (iterator) { first = iterator.next().value?.segment; } else { - first = string.match(/./us)?.[0]; + first = string.match(/./su)?.[0]; } if (first) { return new Ok([first, string.slice(first.length)]); |