From 4adf7b01faa5fe9dce1ffdc02942d63bd5d3bf74 Mon Sep 17 00:00:00 2001 From: shayan javani Date: Mon, 31 Oct 2022 14:16:44 +0330 Subject: renamed from_base_string to base_parse, added documentation for base_parse --- src/gleam/int.gleam | 56 +++++++++++++++++++++++++++++++++-------------- test/gleam/int_test.gleam | 44 ++++++++++++++++++------------------- 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() -- cgit v1.2.3