Skip to content

Commit f986571

Browse files
committed
Remove unused
1 parent f0b6811 commit f986571

File tree

5 files changed

+194
-440
lines changed

5 files changed

+194
-440
lines changed

src/gleam/dynamic/decode.gleam

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -423,8 +423,8 @@ fn index(
423423
}
424424
}
425425

426-
@external(erlang, "gleam_stdlib_decode_ffi", "index")
427-
@external(javascript, "../../gleam_stdlib_decode_ffi.mjs", "index")
426+
@external(erlang, "gleam_stdlib", "index")
427+
@external(javascript, "../../gleam_stdlib.mjs", "index")
428428
fn bare_index(data: Dynamic, key: anything) -> Result(Option(Dynamic), String)
429429

430430
fn push_path(
@@ -623,7 +623,7 @@ fn decode_string(data: Dynamic) -> #(String, List(DecodeError)) {
623623
run_dynamic_function(data, "String", dynamic_string)
624624
}
625625

626-
@external(javascript, "../../gleam_stdlib_decode_ffi.mjs", "string")
626+
@external(javascript, "../../gleam_stdlib.mjs", "string")
627627
fn dynamic_string(from data: Dynamic) -> Result(String, String) {
628628
case dynamic_bit_array(data) {
629629
Ok(data) ->
@@ -672,8 +672,8 @@ fn decode_int(data: Dynamic) -> #(Int, List(DecodeError)) {
672672
run_dynamic_function(data, "Int", dynamic_int)
673673
}
674674

675-
@external(erlang, "gleam_stdlib_decode_ffi", "int")
676-
@external(javascript, "../../gleam_stdlib_decode_ffi.mjs", "int")
675+
@external(erlang, "gleam_stdlib", "int")
676+
@external(javascript, "../../gleam_stdlib.mjs", "int")
677677
fn dynamic_int(data: Dynamic) -> Result(Int, Int)
678678

679679
/// A decoder that decodes `Float` values.
@@ -691,8 +691,8 @@ fn decode_float(data: Dynamic) -> #(Float, List(DecodeError)) {
691691
run_dynamic_function(data, "Float", dynamic_float)
692692
}
693693

694-
@external(erlang, "gleam_stdlib_decode_ffi", "float")
695-
@external(javascript, "../../gleam_stdlib_decode_ffi.mjs", "float")
694+
@external(erlang, "gleam_stdlib", "float")
695+
@external(javascript, "../../gleam_stdlib.mjs", "float")
696696
fn dynamic_float(data: Dynamic) -> Result(Float, Float)
697697

698698
/// A decoder that decodes `Dynamic` values. This decoder never returns an error.
@@ -725,8 +725,8 @@ fn decode_bit_array(data: Dynamic) -> #(BitArray, List(DecodeError)) {
725725
run_dynamic_function(data, "BitArray", dynamic_bit_array)
726726
}
727727

728-
@external(erlang, "gleam_stdlib_decode_ffi", "bit_array")
729-
@external(javascript, "../../gleam_stdlib_decode_ffi.mjs", "bit_array")
728+
@external(erlang, "gleam_stdlib", "bit_array")
729+
@external(javascript, "../../gleam_stdlib.mjs", "bit_array")
730730
fn dynamic_bit_array(data: Dynamic) -> Result(BitArray, BitArray)
731731

732732
/// A decoder that decodes lists where all elements are decoded with a given
@@ -746,8 +746,8 @@ pub fn list(of inner: Decoder(a)) -> Decoder(List(a)) {
746746
})
747747
}
748748

749-
@external(erlang, "gleam_stdlib_decode_ffi", "list")
750-
@external(javascript, "../../gleam_stdlib_decode_ffi.mjs", "list")
749+
@external(erlang, "gleam_stdlib", "list")
750+
@external(javascript, "../../gleam_stdlib.mjs", "list")
751751
fn decode_list(
752752
data: Dynamic,
753753
item: fn(Dynamic) -> #(t, List(DecodeError)),
@@ -815,8 +815,8 @@ fn fold_dict(
815815
}
816816
}
817817

818-
@external(erlang, "gleam_stdlib_decode_ffi", "dict")
819-
@external(javascript, "../../gleam_stdlib_decode_ffi.mjs", "dict")
818+
@external(erlang, "gleam_stdlib", "dict")
819+
@external(javascript, "../../gleam_stdlib.mjs", "dict")
820820
fn decode_dict(data: Dynamic) -> Result(Dict(Dynamic, Dynamic), Nil)
821821

822822
/// A decoder that decodes nullable values of a type decoded by with a given
@@ -1044,6 +1044,6 @@ pub fn recursive(inner: fn() -> Decoder(a)) -> Decoder(a) {
10441044
@external(javascript, "../../gleam_stdlib.mjs", "identity")
10451045
fn cast(a: anything) -> Dynamic
10461046

1047-
@external(erlang, "gleam_stdlib_decode_ffi", "is_null")
1048-
@external(javascript, "../../gleam_stdlib_decode_ffi.mjs", "is_null")
1047+
@external(erlang, "gleam_stdlib", "is_null")
1048+
@external(javascript, "../../gleam_stdlib.mjs", "is_null")
10491049
fn is_null(a: Dynamic) -> Bool

src/gleam_stdlib.erl

Lines changed: 75 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
11
-module(gleam_stdlib).
22

33
-export([
4-
map_get/2, iodata_append/2, identity/1, decode_int/1, decode_bool/1,
5-
decode_float/1, decode_list/1, decode_option/2, decode_field/2, parse_int/1,
6-
parse_float/1, less_than/2, string_pop_grapheme/1, string_pop_codeunit/1,
4+
map_get/2, iodata_append/2, identity/1, parse_int/1, parse_float/1,
5+
less_than/2, string_pop_grapheme/1, string_pop_codeunit/1,
76
string_starts_with/2, wrap_list/1, string_ends_with/2, string_pad/4,
8-
decode_map/1, uri_parse/1, decode_result/1, bit_array_slice/3,
9-
decode_bit_array/1, percent_encode/1, percent_decode/1, base_decode64/1,
10-
parse_query/1, bit_array_concat/1, bit_array_base64_encode/2,
11-
size_of_tuple/1, decode_tuple/1, decode_tuple2/1, decode_tuple3/1,
12-
decode_tuple4/1, decode_tuple5/1, decode_tuple6/1, tuple_get/2,
13-
classify_dynamic/1, print/1, println/1, print_error/1, println_error/1,
14-
inspect/1, float_to_string/1, int_from_base_string/2,
7+
uri_parse/1, bit_array_slice/3, percent_encode/1, percent_decode/1,
8+
base_decode64/1, parse_query/1, bit_array_concat/1,
9+
bit_array_base64_encode/2, size_of_tuple/1,
10+
tuple_get/2, classify_dynamic/1, print/1, println/1, print_error/1,
11+
println_error/1, inspect/1, float_to_string/1, int_from_base_string/2,
1512
utf_codepoint_list_to_string/1, contains_string/2, crop_string/2,
1613
base16_encode/1, base16_decode/1, string_replace/3, slice/3,
17-
bit_array_to_int_and_size/1, bit_array_pad_to_bytes/1
14+
bit_array_to_int_and_size/1, bit_array_pad_to_bytes/1, index/2, list/5,
15+
dict/1, int/1, float/1, bit_array/1, is_null/1
1816
]).
1917

2018
%% Taken from OTP's uri_string module
@@ -46,11 +44,6 @@ iodata_append(Iodata, String) -> [Iodata, String].
4644

4745
identity(X) -> X.
4846

49-
decode_error_msg(Expected, Data) when is_binary(Expected) ->
50-
decode_error(Expected, classify_dynamic(Data)).
51-
decode_error(Expected, Got) when is_binary(Expected) andalso is_binary(Got) ->
52-
{error, [{decode_error, Expected, Got, []}]}.
53-
5447
classify_dynamic(nil) -> <<"Nil">>;
5548
classify_dynamic(X) when is_boolean(X) -> <<"Bool">>;
5649
classify_dynamic(X) when is_atom(X) -> <<"Atom">>;
@@ -70,88 +63,12 @@ classify_dynamic(X) when
7063
is_function(X, 12) -> <<"Function">>;
7164
classify_dynamic(_) -> <<"Some other type">>.
7265

73-
decode_map(Data) when is_map(Data) -> {ok, Data};
74-
decode_map(Data) -> decode_error_msg(<<"Dict">>, Data).
75-
76-
decode_bit_array(Data) when is_bitstring(Data) -> {ok, Data};
77-
decode_bit_array(Data) -> decode_error_msg(<<"BitArray">>, Data).
78-
79-
decode_int(Data) when is_integer(Data) -> {ok, Data};
80-
decode_int(Data) -> decode_error_msg(<<"Int">>, Data).
81-
82-
decode_float(Data) when is_float(Data) -> {ok, Data};
83-
decode_float(Data) -> decode_error_msg(<<"Float">>, Data).
84-
85-
decode_bool(Data) when is_boolean(Data) -> {ok, Data};
86-
decode_bool(Data) -> decode_error_msg(<<"Bool">>, Data).
87-
88-
decode_list(Data) when is_list(Data) -> {ok, Data};
89-
decode_list(Data) -> decode_error_msg(<<"List">>, Data).
90-
91-
decode_field(Data, Key) when is_map(Data) ->
92-
case Data of
93-
#{Key := Value} -> {ok, {some, Value}};
94-
_ ->
95-
{ok, none}
96-
end;
97-
decode_field(Data, _) ->
98-
decode_error_msg(<<"Dict">>, Data).
99-
10066
size_of_tuple(Data) -> tuple_size(Data).
10167

10268
tuple_get(_tup, Index) when Index < 0 -> {error, nil};
10369
tuple_get(Data, Index) when Index >= tuple_size(Data) -> {error, nil};
10470
tuple_get(Data, Index) -> {ok, element(Index + 1, Data)}.
10571

106-
decode_tuple(Data) when is_tuple(Data) -> {ok, Data};
107-
decode_tuple(Data) -> decode_error_msg(<<"Tuple">>, Data).
108-
109-
decode_tuple2({_,_} = A) -> {ok, A};
110-
decode_tuple2([A,B]) -> {ok, {A,B}};
111-
decode_tuple2(Data) -> decode_error_msg(<<"Tuple of 2 elements">>, Data).
112-
113-
decode_tuple3({_,_,_} = A) -> {ok, A};
114-
decode_tuple3([A,B,C]) -> {ok, {A,B,C}};
115-
decode_tuple3(Data) -> decode_error_msg(<<"Tuple of 3 elements">>, Data).
116-
117-
decode_tuple4({_,_,_,_} = A) -> {ok, A};
118-
decode_tuple4([A,B,C,D]) -> {ok, {A,B,C,D}};
119-
decode_tuple4(Data) -> decode_error_msg(<<"Tuple of 4 elements">>, Data).
120-
121-
decode_tuple5({_,_,_,_,_} = A) -> {ok, A};
122-
decode_tuple5([A,B,C,D,E]) -> {ok, {A,B,C,D,E}};
123-
decode_tuple5(Data) -> decode_error_msg(<<"Tuple of 5 elements">>, Data).
124-
125-
decode_tuple6({_,_,_,_,_,_} = A) -> {ok, A};
126-
decode_tuple6([A,B,C,D,E,F]) -> {ok, {A,B,C,D,E,F}};
127-
decode_tuple6(Data) -> decode_error_msg(<<"Tuple of 6 elements">>, Data).
128-
129-
decode_option(Term, F) ->
130-
Decode = fun(Inner) ->
131-
case F(Inner) of
132-
{ok, Decoded} -> {ok, {some, Decoded}};
133-
Error -> Error
134-
end
135-
end,
136-
case Term of
137-
undefined -> {ok, none};
138-
error -> {ok, none};
139-
null -> {ok, none};
140-
none -> {ok, none};
141-
nil -> {ok, none};
142-
{some, Inner} -> Decode(Inner);
143-
_ -> Decode(Term)
144-
end.
145-
146-
decode_result(Term) ->
147-
case Term of
148-
{ok, Inner} -> {ok, {ok, Inner}};
149-
ok -> {ok, {ok, nil}};
150-
{error, Inner} -> {ok, {error, Inner}};
151-
error -> {ok, {error, nil}};
152-
_ -> decode_error_msg(<<"Result">>, Term)
153-
end.
154-
15572
int_from_base_string(String, Base) ->
15673
case catch binary_to_integer(String, Base) of
15774
Int when is_integer(Int) -> {ok, Int};
@@ -534,3 +451,69 @@ slice(String, Index, Length) ->
534451
X when is_binary(X) -> X;
535452
X when is_list(X) -> unicode:characters_to_binary(X)
536453
end.
454+
455+
456+
index([X | _], 0) ->
457+
{ok, {some, X}};
458+
index([_, X | _], 1) ->
459+
{ok, {some, X}};
460+
index([_, _, X | _], 2) ->
461+
{ok, {some, X}};
462+
index([_, _, _, X | _], 3) ->
463+
{ok, {some, X}};
464+
index([_, _, _, _, X | _], 4) ->
465+
{ok, {some, X}};
466+
index([_, _, _, _, _, X | _], 5) ->
467+
{ok, {some, X}};
468+
index([_, _, _, _, _, _, X | _], 6) ->
469+
{ok, {some, X}};
470+
index([_, _, _, _, _, _, _, X | _], 7) ->
471+
{ok, {some, X}};
472+
index(Tuple, Index) when is_tuple(Tuple) andalso is_integer(Index) ->
473+
{ok, try
474+
{some, element(Index + 1, Tuple)}
475+
catch _:_ ->
476+
none
477+
end};
478+
index(Map, Key) when is_map(Map) ->
479+
{ok, try
480+
{some, maps:get(Key, Map)}
481+
catch _:_ ->
482+
none
483+
end};
484+
index(_, Index) when is_integer(Index) ->
485+
{error, <<"Indexable">>};
486+
index(_, _) ->
487+
{error, <<"Dict">>}.
488+
489+
list(T, A, B, C, D) when is_tuple(T) ->
490+
list(tuple_to_list(T), A, B, C, D);
491+
list([], _, _, _, Acc) ->
492+
{lists:reverse(Acc), []};
493+
list([X | Xs], Decode, PushPath, Index, Acc) ->
494+
{Out, Errors} = Decode(X),
495+
case Errors of
496+
[] -> list(Xs, Decode, PushPath, Index + 1, [Out | Acc]);
497+
_ -> PushPath({[], Errors}, integer_to_binary(Index))
498+
end;
499+
list(Unexpected, _, _, _, []) ->
500+
Found = gleam@dynamic:classify(Unexpected),
501+
Error = {decode_error, <<"List"/utf8>>, Found, []},
502+
{[], [Error]};
503+
list(_, _, _, _, Acc) ->
504+
{lists:reverse(Acc), []}.
505+
506+
dict(#{} = Data) -> {ok, Data};
507+
dict(_) -> {error, nil}.
508+
509+
int(I) when is_integer(I) -> {ok, I};
510+
int(_) -> {error, 0}.
511+
512+
float(F) when is_float(F) -> {ok, F};
513+
float(_) -> {error, 0.0}.
514+
515+
bit_array(B) when is_bitstring(B) -> {ok, B};
516+
bit_array(_) -> {error, <<>>}.
517+
518+
is_null(X) ->
519+
X =:= undefined orelse X =:= null orelse X =:= nil.

0 commit comments

Comments
 (0)