aboutsummaryrefslogtreecommitdiff
path: root/gen/src
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2019-04-14 13:03:24 +0000
committerLouis Pilfold <louis@lpil.uk>2019-04-14 13:03:32 +0000
commit8cfa606f3834cf7d05f5011bc68295a9d84263dc (patch)
treefa7edc8ea53426b072f35d3d61e0ab821c8d5feb /gen/src
parentae5597c1b27982aabe74eb16d5b0c890802730d9 (diff)
downloadgleam_stdlib-8cfa606f3834cf7d05f5011bc68295a9d84263dc.tar.gz
gleam_stdlib-8cfa606f3834cf7d05f5011bc68295a9d84263dc.zip
stdlib: Split out tests
Diffstat (limited to 'gen/src')
-rw-r--r--gen/src/any.erl46
-rw-r--r--gen/src/atom.erl13
-rw-r--r--gen/src/bool.erl40
-rw-r--r--gen/src/expect.erl25
-rw-r--r--gen/src/http.erl6
-rw-r--r--gen/src/iodata.erl61
-rw-r--r--gen/src/list.erl173
-rw-r--r--gen/src/map_dict.erl49
-rw-r--r--gen/src/order.erl73
-rw-r--r--gen/src/result.erl67
-rw-r--r--gen/src/set.erl6
-rw-r--r--gen/src/str.erl37
-rw-r--r--gen/src/tuple.erl28
13 files changed, 624 insertions, 0 deletions
diff --git a/gen/src/any.erl b/gen/src/any.erl
new file mode 100644
index 0000000..62f1a77
--- /dev/null
+++ b/gen/src/any.erl
@@ -0,0 +1,46 @@
+-module(any).
+-compile(no_auto_import).
+
+-export([from/1, unsafeCoerce/1, string/1, int/1, float/1, atom/1, bool/1, thunk/1, list/2, tuple/1, field/2]).
+
+list_module() ->
+ list.
+
+from(A) ->
+ gleam__stdlib:identity(A).
+
+unsafeCoerce(A) ->
+ gleam__stdlib:identity(A).
+
+string(A) ->
+ gleam__stdlib:decode_string(A).
+
+int(A) ->
+ gleam__stdlib:decode_int(A).
+
+float(A) ->
+ gleam__stdlib:decode_float(A).
+
+atom(A) ->
+ gleam__stdlib:decode_atom(A).
+
+bool(A) ->
+ gleam__stdlib:decode_bool(A).
+
+thunk(A) ->
+ gleam__stdlib:decode_thunk(A).
+
+list_any(A) ->
+ gleam__stdlib:decode_list(A).
+
+list(Any, Decode) ->
+ result:then(list_any(Any),
+ fun(Capture1) ->
+ (list_module()):traverse(Capture1, Decode)
+ end).
+
+tuple(A) ->
+ gleam__stdlib:decode_tuple(A).
+
+field(A, B) ->
+ gleam__stdlib:decode_field(A, B).
diff --git a/gen/src/atom.erl b/gen/src/atom.erl
new file mode 100644
index 0000000..450245a
--- /dev/null
+++ b/gen/src/atom.erl
@@ -0,0 +1,13 @@
+-module(atom).
+-compile(no_auto_import).
+
+-export([from_string/1, create_from_string/1, to_string/1]).
+
+from_string(A) ->
+ gleam__stdlib:atom_from_string(A).
+
+create_from_string(A) ->
+ gleam__stdlib:atom_create_from_string(A).
+
+to_string(A) ->
+ gleam__stdlib:atom_to_string(A).
diff --git a/gen/src/bool.erl b/gen/src/bool.erl
new file mode 100644
index 0000000..e4e1108
--- /dev/null
+++ b/gen/src/bool.erl
@@ -0,0 +1,40 @@
+-module(bool).
+-compile(no_auto_import).
+
+-export([negate/1, max/2, min/2, to_int/1]).
+
+negate(Bool) ->
+ case Bool of
+ true ->
+ false;
+
+ false ->
+ true
+ end.
+
+max(A, B) ->
+ case A of
+ true ->
+ true;
+
+ false ->
+ B
+ end.
+
+min(A, B) ->
+ case A of
+ false ->
+ false;
+
+ true ->
+ B
+ end.
+
+to_int(Bool) ->
+ case Bool of
+ false ->
+ 0;
+
+ true ->
+ 1
+ end.
diff --git a/gen/src/expect.erl b/gen/src/expect.erl
new file mode 100644
index 0000000..602f3fb
--- /dev/null
+++ b/gen/src/expect.erl
@@ -0,0 +1,25 @@
+-module(expect).
+-compile(no_auto_import).
+
+-export([equal/2, not_equal/2, true/1, false/1, is_ok/1, is_error/1, fail/0]).
+
+equal(A, B) ->
+ gleam__stdlib:expect_equal(A, B).
+
+not_equal(A, B) ->
+ gleam__stdlib:expect_not_equal(A, B).
+
+true(A) ->
+ gleam__stdlib:expect_true(A).
+
+false(A) ->
+ gleam__stdlib:expect_false(A).
+
+is_ok(A) ->
+ gleam__stdlib:expect_is_ok(A).
+
+is_error(A) ->
+ gleam__stdlib:expect_is_error(A).
+
+fail() ->
+ true(false).
diff --git a/gen/src/http.erl b/gen/src/http.erl
new file mode 100644
index 0000000..6d2e42a
--- /dev/null
+++ b/gen/src/http.erl
@@ -0,0 +1,6 @@
+-module(http).
+-compile(no_auto_import).
+
+-export([]).
+
+
diff --git a/gen/src/iodata.erl b/gen/src/iodata.erl
new file mode 100644
index 0000000..540af1b
--- /dev/null
+++ b/gen/src/iodata.erl
@@ -0,0 +1,61 @@
+-module(iodata).
+-compile(no_auto_import).
+
+-export([prepend/2, append/2, prepend_iodata/2, append_iodata/2, from_strings/1, concat/1, new/1, to_string/1, byte_size/1, from_float/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, is_equal/2, is_empty/1]).
+
+prepend(A, B) ->
+ gleam__stdlib:iodata_prepend(A, B).
+
+append(A, B) ->
+ gleam__stdlib:iodata_append(A, B).
+
+prepend_iodata(A, B) ->
+ gleam__stdlib:iodata_prepend(A, B).
+
+append_iodata(A, B) ->
+ gleam__stdlib:iodata_append(A, B).
+
+from_strings(A) ->
+ gleam__stdlib:identity(A).
+
+concat(A) ->
+ gleam__stdlib:identity(A).
+
+new(A) ->
+ gleam__stdlib:identity(A).
+
+to_string(A) ->
+ erlang:iolist_to_binary(A).
+
+byte_size(A) ->
+ erlang:iolist_size(A).
+
+from_float(A) ->
+ io_lib_format:fwrite_g(A).
+
+lowercase(A) ->
+ string:lowercase(A).
+
+uppercase(A) ->
+ string:uppercase(A).
+
+reverse(A) ->
+ string:reverse(A).
+
+erl_split(A, B, C) ->
+ string:split(A, B, C).
+
+split(Iodata, On) ->
+ erl_split(Iodata, On, all).
+
+erl_replace(A, B, C, D) ->
+ string:replace(A, B, C, D).
+
+replace(Iodata, Pattern, Replacement) ->
+ erl_replace(Iodata, Pattern, Replacement, all).
+
+is_equal(A, B) ->
+ string:equal(A, B).
+
+is_empty(A) ->
+ string:is_empty(A).
diff --git a/gen/src/list.erl b/gen/src/list.erl
new file mode 100644
index 0000000..b606f22
--- /dev/null
+++ b/gen/src/list.erl
@@ -0,0 +1,173 @@
+-module(list).
+-compile(no_auto_import).
+
+-export([length/1, reverse/1, is_empty/1, contains/2, head/1, tail/1, filter/2, map/2, traverse/2, drop/2, take/2, new/0, append/2, flatten/1, fold/3, fold_right/3, find/2]).
+
+length(A) ->
+ erlang:length(A).
+
+reverse(A) ->
+ lists:reverse(A).
+
+is_empty(List) ->
+ List =:= [].
+
+contains(List, Elem) ->
+ case List of
+ [] ->
+ false;
+
+ [Head | Rest] ->
+ Head =:= Elem orelse contains(Rest, Elem)
+ end.
+
+head(List) ->
+ case List of
+ [] ->
+ {error, empty};
+
+ [X | _] ->
+ {ok, X}
+ end.
+
+tail(List) ->
+ case List of
+ [] ->
+ {error, empty};
+
+ [_ | Xs] ->
+ {ok, Xs}
+ end.
+
+do_filter(List, Fun, Acc) ->
+ case List of
+ [] ->
+ reverse(Acc);
+
+ [X | Xs] ->
+ NewAcc = case Fun(X) of
+ true ->
+ [X | Acc];
+
+ false ->
+ Acc
+ end,
+ do_filter(Xs, Fun, NewAcc)
+ end.
+
+filter(List, Fun) ->
+ do_filter(List, Fun, []).
+
+do_map(List, Fun, Acc) ->
+ case List of
+ [] ->
+ reverse(Acc);
+
+ [X | Xs] ->
+ do_map(Xs, Fun, [Fun(X) | Acc])
+ end.
+
+map(List, Fun) ->
+ do_map(List, Fun, []).
+
+do_traverse(List, Fun, Acc) ->
+ case List of
+ [] ->
+ {ok, reverse(Acc)};
+
+ [X | Xs] ->
+ case Fun(X) of
+ {ok, Y} ->
+ do_traverse(Xs, Fun, [Y | Acc]);
+
+ {error, Error} ->
+ {error, Error}
+ end
+ end.
+
+traverse(List, Fun) ->
+ do_traverse(List, Fun, []).
+
+drop(List, N) ->
+ case N =< 0 of
+ true ->
+ List;
+
+ false ->
+ case List of
+ [] ->
+ [];
+
+ [_ | Xs] ->
+ drop(Xs, N - 1)
+ end
+ end.
+
+do_take(List, N, Acc) ->
+ case N =< 0 of
+ true ->
+ reverse(Acc);
+
+ false ->
+ case List of
+ [] ->
+ reverse(Acc);
+
+ [X | Xs] ->
+ do_take(Xs, N - 1, [X | Acc])
+ end
+ end.
+
+take(List, N) ->
+ do_take(List, N, []).
+
+new() ->
+ [].
+
+append(A, B) ->
+ lists:append(A, B).
+
+do_flatten(Lists, Acc) ->
+ case Lists of
+ [] ->
+ Acc;
+
+ [L | Rest] ->
+ do_flatten(Rest, append(Acc, L))
+ end.
+
+flatten(Lists) ->
+ do_flatten(Lists, []).
+
+fold(List, Acc, Fun) ->
+ case List of
+ [] ->
+ Acc;
+
+ [X | Rest] ->
+ fold(Rest, Fun(X, Acc), Fun)
+ end.
+
+fold_right(List, Acc, Fun) ->
+ case List of
+ [] ->
+ Acc;
+
+ [X | Rest] ->
+ Fun(X, fold_right(Rest, Acc, Fun))
+ end.
+
+find(Haystack, F) ->
+ case Haystack of
+ [] ->
+ {error, not_found};
+
+ [X | Rest] ->
+ case F(X) of
+ {ok, X1} ->
+ {ok, X1};
+
+ _ ->
+ find(Rest, F)
+ end
+ end.
diff --git a/gen/src/map_dict.erl b/gen/src/map_dict.erl
new file mode 100644
index 0000000..56fb686
--- /dev/null
+++ b/gen/src/map_dict.erl
@@ -0,0 +1,49 @@
+-module(map_dict).
+-compile(no_auto_import).
+
+-export([size/1, to_list/1, from_list/1, has_key/2, new/0, fetch/2, put/3, map_values/2, keys/1, values/1, filter/2]).
+
+size(A) ->
+ maps:size(A).
+
+to_list(A) ->
+ maps:to_list(A).
+
+from_list(A) ->
+ maps:from_list(A).
+
+is_key(A, B) ->
+ maps:is_key(A, B).
+
+has_key(Map, Key) ->
+ is_key(Key, Map).
+
+new() ->
+ maps:new().
+
+fetch(A, B) ->
+ gleam__stdlib:map_fetch(A, B).
+
+erl_put(A, B, C) ->
+ maps:put(A, B, C).
+
+put(Map, Key, Value) ->
+ erl_put(Key, Value, Map).
+
+erl_map_values(A, B) ->
+ maps:map(A, B).
+
+map_values(Map, Fun) ->
+ erl_map_values(Fun, Map).
+
+keys(A) ->
+ maps:keys(A).
+
+values(A) ->
+ maps:values(A).
+
+erl_filter(A, B) ->
+ maps:filter(A, B).
+
+filter(Map, Fun) ->
+ erl_filter(Fun, Map).
diff --git a/gen/src/order.erl b/gen/src/order.erl
new file mode 100644
index 0000000..7921740
--- /dev/null
+++ b/gen/src/order.erl
@@ -0,0 +1,73 @@
+-module(order).
+-compile(no_auto_import).
+
+-export([reverse/1, to_int/1, compare/2, max/2, min/2]).
+
+reverse(Order) ->
+ case Order of
+ lt ->
+ gt;
+
+ eq ->
+ eq;
+
+ gt ->
+ lt
+ end.
+
+to_int(Order) ->
+ case Order of
+ lt ->
+ -1;
+
+ eq ->
+ 0;
+
+ gt ->
+ 1
+ end.
+
+compare(A, B) ->
+ case {A, B} of
+ {lt, lt} ->
+ eq;
+
+ {lt, _} ->
+ lt;
+
+ {eq, eq} ->
+ eq;
+
+ {gt, gt} ->
+ eq;
+
+ {eq, gt} ->
+ lt;
+
+ _ ->
+ gt
+ end.
+
+max(A, B) ->
+ case {A, B} of
+ {gt, _} ->
+ gt;
+
+ {eq, lt} ->
+ eq;
+
+ _ ->
+ B
+ end.
+
+min(A, B) ->
+ case {A, B} of
+ {lt, _} ->
+ lt;
+
+ {eq, gt} ->
+ eq;
+
+ _ ->
+ B
+ end.
diff --git a/gen/src/result.erl b/gen/src/result.erl
new file mode 100644
index 0000000..cd66908
--- /dev/null
+++ b/gen/src/result.erl
@@ -0,0 +1,67 @@
+-module(result).
+-compile(no_auto_import).
+
+-export([is_ok/1, is_error/1, map/2, map_error/2, flatten/1, then/2, unwrap/2]).
+
+is_ok(Result) ->
+ case Result of
+ {error, _} ->
+ false;
+
+ {ok, _} ->
+ true
+ end.
+
+is_error(Result) ->
+ case Result of
+ {ok, _} ->
+ false;
+
+ {error, _} ->
+ true
+ end.
+
+map(Result, Fun) ->
+ case Result of
+ {ok, X} ->
+ {ok, Fun(X)};
+
+ {error, E} ->
+ {error, E}
+ end.
+
+map_error(Result, Fun) ->
+ case Result of
+ {ok, _} ->
+ Result;
+
+ {error, Error} ->
+ {error, Fun(Error)}
+ end.
+
+flatten(Result) ->
+ case Result of
+ {ok, X} ->
+ X;
+
+ {error, Error} ->
+ {error, Error}
+ end.
+
+then(Result, Fun) ->
+ case Result of
+ {ok, X} ->
+ Fun(X);
+
+ {error, E} ->
+ {error, E}
+ end.
+
+unwrap(Result, Default) ->
+ case Result of
+ {ok, V} ->
+ V;
+
+ {error, _} ->
+ Default
+ end.
diff --git a/gen/src/set.erl b/gen/src/set.erl
new file mode 100644
index 0000000..ca52d4b
--- /dev/null
+++ b/gen/src/set.erl
@@ -0,0 +1,6 @@
+-module(set).
+-compile(no_auto_import).
+
+-export([]).
+
+
diff --git a/gen/src/str.erl b/gen/src/str.erl
new file mode 100644
index 0000000..b492c86
--- /dev/null
+++ b/gen/src/str.erl
@@ -0,0 +1,37 @@
+-module(str).
+-compile(no_auto_import).
+
+-export([length/1, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, from_int/1, parse_int/1, parse_float/1, base_from_int/2, from_float/1]).
+
+length(A) ->
+ string:length(A).
+
+lowercase(A) ->
+ string:lowercase(A).
+
+uppercase(A) ->
+ string:uppercase(A).
+
+reverse(String) ->
+ iodata:to_string(iodata:reverse(iodata:new(String))).
+
+split(String, On) ->
+ list:map(iodata:split(iodata:new(String), On), fun iodata:to_string/1).
+
+replace(String, Pattern, With) ->
+ iodata:to_string(iodata:replace(iodata:new(String), Pattern, With)).
+
+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/src/tuple.erl b/gen/src/tuple.erl
new file mode 100644
index 0000000..fe3ce03
--- /dev/null
+++ b/gen/src/tuple.erl
@@ -0,0 +1,28 @@
+-module(tuple).
+-compile(no_auto_import).
+
+-export([new/2, first/1, second/1, swap/1, fetch/2]).
+
+new(A, B) ->
+ {A, B}.
+
+first(Tup) ->
+ {A, _} = Tup,
+ A.
+
+second(Tup) ->
+ {_, A} = Tup,
+ A.
+
+swap(Tup) ->
+ {A, B} = Tup,
+ {B, A}.
+
+fetch(Haystack, Needle) ->
+ list:find(Haystack, fun(Tuple) -> case first(Tuple) =:= Needle of
+ true ->
+ {ok, second(Tuple)};
+
+ false ->
+ {error, []}
+ end end).