aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2019-04-22 22:33:15 +0000
committerLouis Pilfold <louis@lpil.uk>2019-04-22 22:33:15 +0000
commit077aaf3468c640b84ff53fc92171292ddae55bf4 (patch)
treea152edcc2240f053681ca6ba315dfeb9ed8fa793
parentafdabad5cd2df77eb3f309aab9da3d34e36a0b49 (diff)
downloadgleam_stdlib-077aaf3468c640b84ff53fc92171292ddae55bf4.tar.gz
gleam_stdlib-077aaf3468c640b84ff53fc92171292ddae55bf4.zip
Int and float modules
-rw-r--r--CHANGELOG.md5
-rw-r--r--gen/src/float.erl10
-rw-r--r--gen/src/int.erl13
-rw-r--r--gen/src/str.erl17
-rw-r--r--gen/test/float_test.erl16
-rw-r--r--gen/test/int_test.erl21
-rw-r--r--gen/test/list_test.erl2
-rw-r--r--gen/test/str_test.erl31
-rw-r--r--src/float.gleam13
-rw-r--r--src/int.gleam8
-rw-r--r--src/str.gleam14
-rw-r--r--test/float_test.gleam38
-rw-r--r--test/int_test.gleam52
-rw-r--r--test/list_test.gleam3
-rw-r--r--test/str_test.gleam86
15 files changed, 180 insertions, 149 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 33257e8..b3b5924 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,7 +6,10 @@
`unique`, and `zip` functions.
- `map_dict:Map` renamed to `map_dict:MapDict`.
- `map_dict` module gains `drop`, and `take` functions.
-- `str` module gains `append` function.
+- `str` module gains `append` function and loses `from_int`, `parse_int`,
+ `from_float`, `parse_float`, and `base_from_int`.
+- `int` module created with `parse`, `to_string`, and `to_base_string`.
+- `float` module created with `parse`, and `to_string`.
## v0.1.1 - 2019-04-17
diff --git a/gen/src/float.erl b/gen/src/float.erl
new file mode 100644
index 0000000..e5f843b
--- /dev/null
+++ b/gen/src/float.erl
@@ -0,0 +1,10 @@
+-module(float).
+-compile(no_auto_import).
+
+-export([parse/1, to_string/1]).
+
+parse(A) ->
+ gleam__stdlib:parse_float(A).
+
+to_string(F) ->
+ iodata:to_string(iodata:from_float(F)).
diff --git a/gen/src/int.erl b/gen/src/int.erl
new file mode 100644
index 0000000..d3b5939
--- /dev/null
+++ b/gen/src/int.erl
@@ -0,0 +1,13 @@
+-module(int).
+-compile(no_auto_import).
+
+-export([parse/1, to_string/1, to_base_string/2]).
+
+parse(A) ->
+ gleam__stdlib:parse_int(A).
+
+to_string(A) ->
+ erlang:integer_to_binary(A).
+
+to_base_string(A, B) ->
+ erlang:integer_to_binary(A, B).
diff --git a/gen/src/str.erl b/gen/src/str.erl
index 4a35a35..153fd49 100644
--- a/gen/src/str.erl
+++ b/gen/src/str.erl
@@ -1,7 +1,7 @@
-module(str).
-compile(no_auto_import).
--export([length/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, append/2, from_int/1, parse_int/1, parse_float/1, base_from_int/2, from_float/1]).
+-export([length/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, append/2]).
length(A) ->
string:length(A).
@@ -23,18 +23,3 @@ replace(String, Pattern, With) ->
append(S1, S2) ->
iodata:to_string(iodata:append(iodata:new(S1), S2)).
-
-from_int(A) ->
- erlang:integer_to_binary(A).
-
-parse_int(A) ->
- gleam__stdlib:parse_int(A).
-
-parse_float(A) ->
- gleam__stdlib:parse_float(A).
-
-base_from_int(A, B) ->
- erlang:integer_to_binary(A, B).
-
-from_float(F) ->
- iodata:to_string(iodata:from_float(F)).
diff --git a/gen/test/float_test.erl b/gen/test/float_test.erl
new file mode 100644
index 0000000..642e5ed
--- /dev/null
+++ b/gen/test/float_test.erl
@@ -0,0 +1,16 @@
+-module(float_test).
+-compile(no_auto_import).
+
+-export([parse_test/0, to_string_test/0]).
+
+parse_test() ->
+ expect:equal(float:parse(<<"1.23">>), {ok, 1.23}),
+ expect:equal(float:parse(<<"5.0">>), {ok, 5.0}),
+ expect:equal(float:parse(<<"0.123456789">>), {ok, 0.123456789}),
+ expect:is_error(float:parse(<<"">>)),
+ expect:is_error(float:parse(<<"what">>)),
+ expect:is_error(float:parse(<<"1">>)).
+
+to_string_test() ->
+ expect:equal(float:to_string(123.0), <<"123.0">>),
+ expect:equal(float:to_string(-8.1), <<"-8.1">>).
diff --git a/gen/test/int_test.erl b/gen/test/int_test.erl
new file mode 100644
index 0000000..a50b5e6
--- /dev/null
+++ b/gen/test/int_test.erl
@@ -0,0 +1,21 @@
+-module(int_test).
+-compile(no_auto_import).
+
+-export([to_string/0, parse/0, to_base_string/0]).
+
+to_string() ->
+ expect:equal(int:to_string(123), <<"123">>),
+ expect:equal(int:to_string(-123), <<"-123">>),
+ expect:equal(int:to_string(123), <<"123">>).
+
+parse() ->
+ expect:equal(int:parse(<<"123">>), {ok, 123}),
+ expect:equal(int:parse(<<"-123">>), {ok, -123}),
+ expect:equal(int:parse(<<"0123">>), {ok, 123}),
+ expect:is_error(int:parse(<<"">>)),
+ expect:is_error(int:parse(<<"what">>)),
+ expect:is_error(int:parse(<<"1.23">>)).
+
+to_base_string() ->
+ expect:equal(int:to_base_string(100, 16), <<"64">>),
+ expect:equal(int:to_base_string(-100, 16), <<"-64">>).
diff --git a/gen/test/list_test.erl b/gen/test/list_test.erl
index 1944d25..3011c7e 100644
--- a/gen/test/list_test.erl
+++ b/gen/test/list_test.erl
@@ -136,6 +136,6 @@ sort_test() ->
index_map_test() ->
expect:equal(list:index_map([3, 4, 5], fun(I, X) -> {I, X} end),
[{0, 3}, {1, 4}, {2, 5}]),
- F = fun(I, X) -> str:append(X, str:from_int(I)) end,
+ F = fun(I, X) -> str:append(X, int:to_string(I)) end,
expect:equal(list:index_map([<<"a">>, <<"b">>, <<"c">>], F),
[<<"a0">>, <<"b1">>, <<"c2">>]).
diff --git a/gen/test/str_test.erl b/gen/test/str_test.erl
index b3a89b2..f6a16a3 100644
--- a/gen/test/str_test.erl
+++ b/gen/test/str_test.erl
@@ -1,7 +1,7 @@
-module(str_test).
-compile(no_auto_import).
--export([length_test/0, lowercase_test/0, uppercase_test/0, reverse_test/0, split_test/0, replace_test/0, append_test/0, from_int_test/0, parse_int_test/0, parse_float_test/0, base_from_int_test/0, from_float_test/0]).
+-export([length_test/0, lowercase_test/0, uppercase_test/0, reverse_test/0, split_test/0, replace_test/0, append_test/0]).
length_test() ->
expect:equal(str:length(<<"ß↑e̊">>), 3),
@@ -29,32 +29,3 @@ replace_test() ->
append_test() ->
expect:equal(str:append(<<"Test">>, <<" Me">>), <<"Test Me">>).
-
-from_int_test() ->
- expect:equal(str:from_int(123), <<"123">>),
- expect:equal(str:from_int(-123), <<"-123">>),
- expect:equal(str:from_int(123), <<"123">>).
-
-parse_int_test() ->
- expect:equal(str:parse_int(<<"123">>), {ok, 123}),
- expect:equal(str:parse_int(<<"-123">>), {ok, -123}),
- expect:equal(str:parse_int(<<"0123">>), {ok, 123}),
- expect:is_error(str:parse_int(<<"">>)),
- expect:is_error(str:parse_int(<<"what">>)),
- expect:is_error(str:parse_int(<<"1.23">>)).
-
-parse_float_test() ->
- expect:equal(str:parse_float(<<"1.23">>), {ok, 1.23}),
- expect:equal(str:parse_float(<<"5.0">>), {ok, 5.0}),
- expect:equal(str:parse_float(<<"0.123456789">>), {ok, 0.123456789}),
- expect:is_error(str:parse_float(<<"">>)),
- expect:is_error(str:parse_float(<<"what">>)),
- expect:is_error(str:parse_float(<<"1">>)).
-
-base_from_int_test() ->
- expect:equal(str:base_from_int(100, 16), <<"64">>),
- expect:equal(str:base_from_int(-100, 16), <<"-64">>).
-
-from_float_test() ->
- expect:equal(str:from_float(123.0), <<"123.0">>),
- expect:equal(str:from_float(-8.1), <<"-8.1">>).
diff --git a/src/float.gleam b/src/float.gleam
new file mode 100644
index 0000000..2d3ca3c
--- /dev/null
+++ b/src/float.gleam
@@ -0,0 +1,13 @@
+import iodata
+
+pub enum NotAFloat =
+ | NotAFloat
+
+pub external fn parse(String) -> Result(Float, NotAFloat) =
+ "gleam__stdlib" "parse_float";
+
+pub fn to_string(f) {
+ f
+ |> iodata:from_float
+ |> iodata:to_string
+}
diff --git a/src/int.gleam b/src/int.gleam
new file mode 100644
index 0000000..00571de
--- /dev/null
+++ b/src/int.gleam
@@ -0,0 +1,8 @@
+pub enum NotAnInt =
+ | NotAnInt
+
+pub external fn parse(String) -> Result(Int, NotAnInt) = "gleam__stdlib" "parse_int";
+
+pub external fn to_string(Int) -> String = "erlang" "integer_to_binary"
+
+pub external fn to_base_string(Int, Int) -> String = "erlang" "integer_to_binary"
diff --git a/src/str.gleam b/src/str.gleam
index 8a7708b..9a6c3f3 100644
--- a/src/str.gleam
+++ b/src/str.gleam
@@ -37,17 +37,3 @@ pub fn replace(string, pattern, with) {
pub fn append(s1, s2) {
iodata:new(s1) |> iodata:append(_, s2) |> iodata:to_string(_)
}
-
-pub external fn from_int(Int) -> String = "erlang" "integer_to_binary"
-
-pub external fn parse_int(String) -> Result(Int, ParseError) = "gleam__stdlib" "parse_int";
-
-pub external fn parse_float(String) -> Result(Float, ParseError) = "gleam__stdlib" "parse_float";
-
-pub external fn base_from_int(Int, Int) -> String = "erlang" "integer_to_binary"
-
-pub fn from_float(f) {
- f
- |> iodata:from_float
- |> iodata:to_string
-}
diff --git a/test/float_test.gleam b/test/float_test.gleam
new file mode 100644
index 0000000..161f6df
--- /dev/null
+++ b/test/float_test.gleam
@@ -0,0 +1,38 @@
+import expect
+import float
+
+pub fn parse_test() {
+ "1.23"
+ |> float:parse
+ |> expect:equal(_, Ok(1.23))
+
+ "5.0"
+ |> float:parse
+ |> expect:equal(_, Ok(5.0))
+
+ "0.123456789"
+ |> float:parse
+ |> expect:equal(_, Ok(0.123456789))
+
+ ""
+ |> float:parse
+ |> expect:is_error
+
+ "what"
+ |> float:parse
+ |> expect:is_error
+
+ "1"
+ |> float:parse
+ |> expect:is_error
+}
+
+pub fn to_string_test() {
+ 123.0
+ |> float:to_string
+ |> expect:equal(_, "123.0")
+
+ -8.1
+ |> float:to_string
+ |> expect:equal(_, "-8.1")
+}
diff --git a/test/int_test.gleam b/test/int_test.gleam
new file mode 100644
index 0000000..d5f0f58
--- /dev/null
+++ b/test/int_test.gleam
@@ -0,0 +1,52 @@
+import expect
+import int
+
+pub fn to_string() {
+ 123
+ |> int:to_string
+ |> expect:equal(_, "123")
+
+ -123
+ |> int:to_string
+ |> expect:equal(_, "-123")
+
+ 0123
+ |> int:to_string
+ |> expect:equal(_, "123")
+}
+
+pub fn parse() {
+ "123"
+ |> int:parse
+ |> expect:equal(_, Ok(123))
+
+ "-123"
+ |> int:parse
+ |> expect:equal(_, Ok(-123))
+
+ "0123"
+ |> int:parse
+ |> expect:equal(_, Ok(123))
+
+ ""
+ |> int:parse
+ |> expect:is_error
+
+ "what"
+ |> int:parse
+ |> expect:is_error
+
+ "1.23"
+ |> int:parse
+ |> expect:is_error
+}
+
+pub fn to_base_string() {
+ 100
+ |> int:to_base_string(_, 16)
+ |> expect:equal(_, "64")
+
+ -100
+ |> int:to_base_string(_, 16)
+ |> expect:equal(_, "-64")
+}
diff --git a/test/list_test.gleam b/test/list_test.gleam
index 493dfb7..ba5c4c5 100644
--- a/test/list_test.gleam
+++ b/test/list_test.gleam
@@ -1,5 +1,6 @@
import expect
import list
+import int
import str
pub fn length_test() {
@@ -255,7 +256,7 @@ pub fn index_map_test() {
|> expect:equal(_, [{0, 3}, {1, 4}, {2, 5}])
let f = fn(i, x) {
- str:append(x, str:from_int(i))
+ str:append(x, int:to_string(i))
}
list:index_map(["a", "b", "c"], f)
|> expect:equal(_, ["a0", "b1", "c2"])
diff --git a/test/str_test.gleam b/test/str_test.gleam
index 49e45e7..5d0d6ba 100644
--- a/test/str_test.gleam
+++ b/test/str_test.gleam
@@ -47,89 +47,3 @@ pub fn append_test() {
str:append("Test", " Me")
|> expect:equal(_, "Test Me")
}
-
-pub fn from_int_test() {
- 123
- |> str:from_int
- |> expect:equal(_, "123")
-
- -123
- |> str:from_int
- |> expect:equal(_, "-123")
-
- 0123
- |> str:from_int
- |> expect:equal(_, "123")
-}
-
-pub fn parse_int_test() {
- "123"
- |> str:parse_int
- |> expect:equal(_, Ok(123))
-
- "-123"
- |> str:parse_int
- |> expect:equal(_, Ok(-123))
-
- "0123"
- |> str:parse_int
- |> expect:equal(_, Ok(123))
-
- ""
- |> str:parse_int
- |> expect:is_error
-
- "what"
- |> str:parse_int
- |> expect:is_error
-
- "1.23"
- |> str:parse_int
- |> expect:is_error
-}
-
-pub fn parse_float_test() {
- "1.23"
- |> str:parse_float
- |> expect:equal(_, Ok(1.23))
-
- "5.0"
- |> str:parse_float
- |> expect:equal(_, Ok(5.0))
-
- "0.123456789"
- |> str:parse_float
- |> expect:equal(_, Ok(0.123456789))
-
- ""
- |> str:parse_float
- |> expect:is_error
-
- "what"
- |> str:parse_float
- |> expect:is_error
-
- "1"
- |> str:parse_float
- |> expect:is_error
-}
-
-pub fn base_from_int_test() {
- 100
- |> str:base_from_int(_, 16)
- |> expect:equal(_, "64")
-
- -100
- |> str:base_from_int(_, 16)
- |> expect:equal(_, "-64")
-}
-
-pub fn from_float_test() {
- 123.0
- |> str:from_float
- |> expect:equal(_, "123.0")
-
- -8.1
- |> str:from_float
- |> expect:equal(_, "-8.1")
-}