Skip to content

Commit caffdfd

Browse files
committed
Use bang functions
1 parent ef44a6a commit caffdfd

File tree

2 files changed

+16
-42
lines changed

2 files changed

+16
-42
lines changed

lib/elixir/lib/json.ex

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -195,11 +195,11 @@ defmodule JSON do
195195
196196
## Examples
197197
198-
iex> JSON.encode([123, "string", %{key: "value"}])
198+
iex> JSON.encode!([123, "string", %{key: "value"}])
199199
"[123,\"string\",{\"key\":\"value\"}]"
200200
201201
"""
202-
def encode(term, encoder \\ &encode_value/2) do
202+
def encode!(term, encoder \\ &encode_value/2) do
203203
IO.iodata_to_binary(encoder.(term, encoder))
204204
end
205205

@@ -214,39 +214,13 @@ defmodule JSON do
214214
215215
## Examples
216216
217-
iex> data = JSON.encode_to_iodata([123, "string", %{key: "value"}])
217+
iex> data = JSON.encode_to_iodata!([123, "string", %{key: "value"}])
218218
iex> IO.iodata_to_binary(data)
219219
"[123,\"string\",{\"key\":\"value\"}]"
220220
221221
"""
222-
def encode_to_iodata(term, encoder \\ &encode_value/2) do
223-
encoder.(term, encoder)
224-
end
225-
226-
@doc """
227-
A shortcut for `encode/2` used for compatibility purposes.
228-
229-
If you are targetting the `JSON` module directly, do not use
230-
this function, use `JSON.encode/2` instead. This function will
231-
be deprecated in Elixir v1.22
232-
"""
233-
@doc deprecated: "Use JSON.encode/2 instead"
234-
# TODO: Deprecate on Elixir v1.22
235-
def encode!(term, encoder \\ &encode_value/2) do
236-
encode(term, encoder)
237-
end
238-
239-
@doc """
240-
A shortcut for `encode_to_iodata/2` used for compatibility purposes.
241-
242-
If you are targetting the `JSON` module directly, do not use
243-
this function, use `JSON.encode_to_iodata/2` instead. This function will
244-
be deprecated in Elixir v1.22
245-
"""
246-
@doc deprecated: "Use JSON.encode_to_iodata/2 instead"
247-
# TODO: Deprecate on Elixir v1.22
248222
def encode_to_iodata!(term, encoder \\ &encode_value/2) do
249-
encode_to_iodata(term, encoder)
223+
encoder.(term, encoder)
250224
end
251225

252226
@doc """

lib/elixir/test/elixir/json_test.exs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,34 +17,34 @@ defmodule JSONTest do
1717

1818
describe "encode" do
1919
test "atoms" do
20-
assert JSON.encode([nil, false, true, :another]) == "[null,false,true,\"another\"]"
20+
assert JSON.encode!([nil, false, true, :another]) == "[null,false,true,\"another\"]"
2121
end
2222

2323
test "binaries" do
24-
assert JSON.encode("hello\0world\t✂️") == "\"hello\\u0000world\\t✂️\""
24+
assert JSON.encode!("hello\0world\t✂️") == "\"hello\\u0000world\\t✂️\""
2525
end
2626

2727
test "integers" do
28-
assert JSON.encode(123_456) == "123456"
28+
assert JSON.encode!(123_456) == "123456"
2929
end
3030

3131
test "floats" do
32-
assert JSON.encode(123.456) == "123.456"
32+
assert JSON.encode!(123.456) == "123.456"
3333
end
3434

3535
test "maps" do
36-
assert JSON.encode(%{1 => 2, 3.0 => 4.0, key: :bar}) ==
36+
assert JSON.encode!(%{1 => 2, 3.0 => 4.0, key: :bar}) ==
3737
"{\"1\":2,\"3.0\":4.0,\"key\":\"bar\"}"
3838
end
3939

4040
test "lists" do
41-
assert JSON.encode([1, 1.0, "one", %{1 => 2, 3.0 => 4.0, key: :bar}]) ==
41+
assert JSON.encode!([1, 1.0, "one", %{1 => 2, 3.0 => 4.0, key: :bar}]) ==
4242
"[1,1.0,\"one\",{\"1\":2,\"3.0\":4.0,\"key\":\"bar\"}]"
4343
end
4444

4545
test "structs" do
46-
assert JSON.encode(%Token{value: :example}) == "[\"example\"]"
47-
assert JSON.encode(%Token{value: "hello\0world"}) == "[\"hello\\u0000world\"]"
46+
assert JSON.encode!(%Token{value: :example}) == "[\"example\"]"
47+
assert JSON.encode!(%Token{value: "hello\0world"}) == "[\"hello\\u0000world\"]"
4848
end
4949
end
5050

@@ -88,7 +88,7 @@ defmodule JSONTest do
8888
end
8989

9090
test "encode_to_iodata" do
91-
list = JSON.encode_to_iodata([1, 1.0, "one", %{1 => 2, 3.0 => 4.0, key: :bar}])
91+
list = JSON.encode_to_iodata!([1, 1.0, "one", %{1 => 2, 3.0 => 4.0, key: :bar}])
9292
assert is_list(list)
9393
assert IO.iodata_to_binary(list) == "[1,1.0,\"one\",{\"1\":2,\"3.0\":4.0,\"key\":\"bar\"}]"
9494
end
@@ -109,7 +109,7 @@ defmodule JSONTest do
109109

110110
test "with only" do
111111
assert ["{\"a\":", _, ",\"b\":", _, ",\"d\":", _, 125] =
112-
json = JSON.encode_to_iodata(%WithOnly{a: :a, b: "b", c: make_ref(), d: [?d]})
112+
json = JSON.encode_to_iodata!(%WithOnly{a: :a, b: "b", c: make_ref(), d: [?d]})
113113

114114
assert IO.iodata_to_binary(json) == "{\"a\":\"a\",\"b\":\"b\",\"d\":[100]}"
115115
end
@@ -121,7 +121,7 @@ defmodule JSONTest do
121121

122122
test "with except" do
123123
assert ["{\"a\":", _, ",\"b\":", _, ",\"d\":", _, 125] =
124-
json = JSON.encode_to_iodata(%WithExcept{a: :a, b: "b", c: make_ref(), d: [?d]})
124+
json = JSON.encode_to_iodata!(%WithExcept{a: :a, b: "b", c: make_ref(), d: [?d]})
125125

126126
assert IO.iodata_to_binary(json) == "{\"a\":\"a\",\"b\":\"b\",\"d\":[100]}"
127127
end
@@ -132,7 +132,7 @@ defmodule JSONTest do
132132
end
133133

134134
test "with empty" do
135-
assert JSON.encode_to_iodata(%WithEmpty{}) == "{}"
135+
assert JSON.encode_to_iodata!(%WithEmpty{}) == "{}"
136136
end
137137
end
138138
end

0 commit comments

Comments
 (0)