Skip to content

Commit bc6f65d

Browse files
committed
normalize use of json across elixir versions
1 parent da57924 commit bc6f65d

File tree

3 files changed

+15
-17
lines changed

3 files changed

+15
-17
lines changed

lib/zig.ex

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -700,12 +700,20 @@ defmodule Zig do
700700

701701
case Code.ensure_loaded(:json) do
702702
{:module, :json} ->
703-
def json_decode!(string), do: :json.decode(string)
704-
def json_encode!(term), do: :json.encode(term)
703+
def json_decode!(string), do: JSON.decode!(string)
704+
def json_encode!(term, opts \\ []) do
705+
if Keyword.get(opts, :pretty, false) do
706+
term
707+
|> JSON.encode!()
708+
|> :json.format(%{indent: " ", line_separator: "\n", after_colon: " "})
709+
else
710+
JSON.encode!(term)
711+
end
712+
end
705713

706714
_ ->
707715
def json_decode!(string), do: Jason.decode!(string)
708-
def json_encode!(term), do: Jason.encode!(term)
716+
def json_encode!(term, opts \\ []), do: Jason.encode!(term, opts)
709717
end
710718
end
711719

lib/zig/sema.ex

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,6 @@ defmodule Zig.Sema do
2323
callbacks: [Function.t()]
2424
}
2525

26-
case Code.ensure_loaded(:json) do
27-
{:module, :json} ->
28-
defp json_decode!(string), do: :json.decode(string)
29-
defp json_encode!(json, _), do: :json.encode(json)
30-
31-
_ ->
32-
defp json_decode!(string), do: Jason.decode!(string)
33-
defp json_encode!(json, opts), do: Jason.encode!(json, opts)
34-
end
35-
3626
# PHASE 1: SEMA EXECUTION
3727

3828
@spec run_sema!(Module.t()) :: Module.t()
@@ -44,11 +34,11 @@ defmodule Zig.Sema do
4434

4535
json_map =
4636
if module.precompiled do
47-
json_decode!(json)
37+
Zig.json_decode!(json)
4838
else
4939
module
5040
|> Zig.Command.run_sema!()
51-
|> json_decode!()
41+
|> Zig.json_decode!()
5242
|> maybe_dump(module)
5343
|> reject_ignored(module)
5444
|> reject_allocators(module)
@@ -177,7 +167,7 @@ defmodule Zig.Sema do
177167

178168
defp maybe_dump(sema_json, module) do
179169
if module.dump_sema do
180-
sema_json_pretty = json_encode!(sema_json, pretty: true)
170+
sema_json_pretty = Zig.json_encode!(sema_json, pretty: true)
181171
IO.puts([IO.ANSI.yellow(), sema_json_pretty, IO.ANSI.reset()])
182172
end
183173

test/embedded_sema_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ defmodule ZiglerTest.EmbeddedSemaTest do
2929
File.cp!(file, tmp_file)
3030

3131
{_, sema_text} = Sema._obtain_precompiled_sema_json(%{precompiled: tmp_file})
32-
assert %{"functions" => [%{"name" => "add_one"}]} = JSON.decode!(sema_text)
32+
assert %{"functions" => [%{"name" => "add_one"}]} = Zig.json_decode!(sema_text)
3333
end
3434
end

0 commit comments

Comments
 (0)