diff options
author | shayan javani <shayan.javani@gmail.com> | 2022-10-03 20:45:43 +0330 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2022-12-21 22:36:05 +0000 |
commit | 86fefe0e1773aee43ad04727a2edbe6cb6dcf0f6 (patch) | |
tree | 1f4969749eae431860fcd80ef81594a1cb1a1b8f /src | |
parent | 33d4a09bcd719f6e18f85451987897827a7c73ec (diff) | |
download | gleam_stdlib-86fefe0e1773aee43ad04727a2edbe6cb6dcf0f6.tar.gz gleam_stdlib-86fefe0e1773aee43ad04727a2edbe6cb6dcf0f6.zip |
added from_base_string to int module
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/int.gleam | 17 | ||||
-rw-r--r-- | src/gleam_stdlib.mjs | 9 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/gleam/int.gleam b/src/gleam/int.gleam index d806fe1..785e8c0 100644 --- a/src/gleam/int.gleam +++ b/src/gleam/int.gleam @@ -183,6 +183,23 @@ if javascript { "../gleam_stdlib.mjs" "int_to_base_string" } +pub fn from_base_string(string: String, base: Int) -> Result(Int, Nil) { + case base >= 2 && base <= 36 { + True -> do_from_base_string(string, base) + False -> Error(Nil) + } +} + +if erlang { + external fn do_from_base_string(String, Int) -> Result(Int, Nil) = + "erlang" "binary_to_integer" +} + +if javascript { + external fn do_from_base_string(Int, Int) -> Result(Int, Nil) = + "../gleam_stdlib.mjs" "int_from_base_string" +} + /// Prints a given int to a string using base2. /// /// ## Examples diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index cde1052..2fafcd9 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -57,6 +57,15 @@ export function int_to_base_string(int, base) { return int.toString(base).toUpperCase(); } +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) + } +} + export function string_replace(string, target, substitute) { if (typeof string.replaceAll !== "undefined") { return string.replaceAll(target, substitute); |