aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshayan javani <shayan.javani@gmail.com>2022-10-31 14:16:44 +0330
committerLouis Pilfold <louis@lpil.uk>2022-12-21 22:37:08 +0000
commit4adf7b01faa5fe9dce1ffdc02942d63bd5d3bf74 (patch)
tree9e36a3dc8747bb52cd60a88a973f5bf5ce8d284e
parent478ca2b32238471dc67983da5c7e1f15bf73175f (diff)
downloadgleam_stdlib-4adf7b01faa5fe9dce1ffdc02942d63bd5d3bf74.tar.gz
gleam_stdlib-4adf7b01faa5fe9dce1ffdc02942d63bd5d3bf74.zip
renamed from_base_string to base_parse, added documentation for base_parse
-rw-r--r--src/gleam/int.gleam56
-rw-r--r--test/gleam/int_test.gleam44
2 files changed, 61 insertions, 39 deletions
diff --git a/src/gleam/int.gleam b/src/gleam/int.gleam
index 65e82f7..eafbade 100644
--- a/src/gleam/int.gleam
+++ b/src/gleam/int.gleam
@@ -106,6 +106,45 @@ if javascript {
"../gleam_stdlib.mjs" "parse_int"
}
+/// Parses a given string as an int in a given base if possible.
+/// Supports only bases 2 to 36, for values outside of which this function returns an `Error(Nil)`.
+///
+/// ## Examples
+///
+/// ```gleam
+/// > base_parse("10", 2)
+/// Ok(2)
+///
+/// > base_parse("30", 16)
+/// Ok(48)
+///
+/// > base_parse("1C", 36)
+/// Ok(48)
+///
+/// > base_parse("48", 1)
+/// Error(Nil)
+///
+/// > base_parse("48", 37)
+/// Error(Nil)
+/// ```
+///
+pub fn base_parse(string: String, base: Int) -> Result(Int, Nil) {
+ case base >= 2 && base <= 36 {
+ True -> do_base_parse(string, base)
+ False -> Error(Nil)
+ }
+}
+
+if erlang {
+ external fn do_base_parse(String, Int) -> Result(Int, Nil) =
+ "gleam_stdlib" "int_from_base_string"
+}
+
+if javascript {
+ external fn do_base_parse(String, Int) -> Result(Int, Nil) =
+ "../gleam_stdlib.mjs" "int_from_base_string"
+}
+
/// Prints a given int to a string.
///
/// ## Examples
@@ -183,23 +222,6 @@ 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) =
- "gleam_stdlib" "int_from_base_string"
-}
-
-if javascript {
- external fn do_from_base_string(String, Int) -> Result(Int, Nil) =
- "../gleam_stdlib.mjs" "int_from_base_string"
-}
-
/// Prints a given int to a string using base2.
///
/// ## Examples
diff --git a/test/gleam/int_test.gleam b/test/gleam/int_test.gleam
index 594720c..582cec5 100644
--- a/test/gleam/int_test.gleam
+++ b/test/gleam/int_test.gleam
@@ -69,6 +69,28 @@ pub fn parse_test() {
|> should.equal(Error(Nil))
}
+pub fn base_parse_test() {
+ "100"
+ |> int.base_parse(16)
+ |> should.equal(Ok(256))
+
+ "-100"
+ |> int.base_parse(16)
+ |> should.equal(Ok(-256))
+
+ "100"
+ |> int.base_parse(1)
+ |> should.equal(Error(Nil))
+
+ "100"
+ |> int.base_parse(37)
+ |> should.equal(Error(Nil))
+
+ "AG"
+ |> int.base_parse(16)
+ |> should.equal(Error(Nil))
+}
+
pub fn to_base_string_test() {
100
|> int.to_base_string(16)
@@ -87,28 +109,6 @@ pub fn to_base_string_test() {
|> should.equal(Error(int.InvalidBase))
}
-pub fn from_base_string_test() {
- "100"
- |> int.from_base_string(16)
- |> should.equal(Ok(256))
-
- "-100"
- |> int.from_base_string(16)
- |> should.equal(Ok(-256))
-
- "100"
- |> int.from_base_string(1)
- |> should.equal(Error(Nil))
-
- "100"
- |> int.from_base_string(37)
- |> should.equal(Error(Nil))
-
- "AG"
- |> int.from_base_string(16)
- |> should.equal(Error(Nil))
-}
-
pub fn to_base2_test() {
100
|> int.to_base2()