Skip to content

Commit b07df7c

Browse files
committed
add .formatter.exs + format
1 parent 08c90ce commit b07df7c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+334
-266
lines changed

.formatter.exs

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[
2+
inputs: ["{config,lib,test}/**/*.{ex,exs}"]
3+
]

lib/blanks.ex

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
defmodule Blanks do
22
def replace(ast, replacements) do
33
replacements = List.wrap(replacements)
4+
45
ast
56
|> Macro.prewalk(replacements, &pre/2)
67
|> elem(0)
@@ -10,6 +11,7 @@ defmodule Blanks do
1011
{args, replacements} = Macro.prewalk(args, replacements, &pre_pin/2)
1112
{put_elem(node, 2, args), replacements}
1213
end
14+
1315
defp pre({:___, _, _}, [first | remainder]), do: {first, remainder}
1416
defp pre(node, acc), do: {node, acc}
1517

@@ -21,6 +23,7 @@ defmodule Blanks do
2123
^unquote(var)
2224
end
2325
end
26+
2427
defp pin(var), do: var
2528

2629
def count(ast) do
@@ -29,16 +32,18 @@ defmodule Blanks do
2932
|> elem(1)
3033
end
3134

32-
defp count({:___, _, _} = node, acc), do: {node, acc+1}
35+
defp count({:___, _, _} = node, acc), do: {node, acc + 1}
3336
defp count(node, acc), do: {node, acc}
3437

3538
def replace_line({:__block__, meta, lines}, replacement_fn) do
36-
replaced_lines = Enum.map(lines, fn(line) ->
37-
replace_line(line, replacement_fn)
38-
end)
39+
replaced_lines =
40+
Enum.map(lines, fn line ->
41+
replace_line(line, replacement_fn)
42+
end)
3943

4044
{:__block__, meta, replaced_lines}
4145
end
46+
4247
def replace_line(line, replacement_fn) do
4348
if count(line) > 0 do
4449
replacement_fn.(line)

lib/display.ex

+11-10
Original file line numberDiff line numberDiff line change
@@ -17,33 +17,34 @@ defmodule Display do
1717
end
1818

1919
def handle_cast(:clear_screen, state = %{clear_screen: true}) do
20-
IO.puts(ANSI.clear)
21-
IO.puts(ANSI.home)
20+
IO.puts(ANSI.clear())
21+
IO.puts(ANSI.home())
2222

2323
{:noreply, state}
2424
end
25+
2526
def handle_cast(:clear_screen, state) do
2627
{:noreply, state}
2728
end
2829

2930
def invalid_koan(koan, modules) do
3031
Notifications.invalid_koan(koan, modules)
31-
|> IO.puts
32+
|> IO.puts()
3233
end
3334

3435
def show_failure(failure, module, name) do
3536
format(failure, module, name)
36-
|> IO.puts
37+
|> IO.puts()
3738
end
3839

3940
def show_compile_error(error) do
4041
Failure.show_compile_error(error)
41-
|> IO.puts
42+
|> IO.puts()
4243
end
4344

4445
def congratulate do
45-
Notifications.congratulate
46-
|> IO.puts
46+
Notifications.congratulate()
47+
|> IO.puts()
4748
end
4849

4950
def clear_screen do
@@ -52,16 +53,16 @@ defmodule Display do
5253

5354
defp format(failure, module, name) do
5455
"""
55-
#{Intro.intro(module, Tracker.visited)}
56+
#{Intro.intro(module, Tracker.visited())}
5657
Now meditate upon #{format_module(module)}
57-
#{ProgressBar.progress_bar(Tracker.summarize)}
58+
#{ProgressBar.progress_bar(Tracker.summarize())}
5859
----------------------------------------
5960
#{name}
6061
#{Failure.format_failure(failure)}
6162
"""
6263
end
6364

6465
defp format_module(module) do
65-
Module.split(module) |> List.last
66+
Module.split(module) |> List.last()
6667
end
6768
end

lib/display/colours.ex

+6-6
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ defmodule Display.Paint do
55
def yellow(str), do: painter().yellow(str)
66

77
defp painter do
8-
case Mix.env do
8+
case Mix.env() do
99
:test -> Display.Uncoloured
1010
_ -> Display.Colours
1111
end
@@ -15,13 +15,13 @@ end
1515
defmodule Display.Colours do
1616
alias IO.ANSI
1717

18-
def red(str), do: colourize(ANSI.red, str)
19-
def cyan(str), do: colourize(ANSI.cyan, str)
20-
def green(str), do: colourize(ANSI.green, str)
21-
def yellow(str), do: colourize(ANSI.yellow, str)
18+
def red(str), do: colourize(ANSI.red(), str)
19+
def cyan(str), do: colourize(ANSI.cyan(), str)
20+
def green(str), do: colourize(ANSI.green(), str)
21+
def yellow(str), do: colourize(ANSI.yellow(), str)
2222

2323
defp colourize(color, message) do
24-
Enum.join([color, message, ANSI.reset], "")
24+
Enum.join([color, message, ANSI.reset()], "")
2525
end
2626
end
2727

lib/display/failure.ex

+13-5
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,25 @@ defmodule Display.Failure do
33

44
@no_value :ex_unit_no_meaningful_value
55

6-
def format_failure(%{error: %ExUnit.AssertionError{expr: @no_value, message: message}, file: file, line: line}) do
6+
def format_failure(%{
7+
error: %ExUnit.AssertionError{expr: @no_value, message: message},
8+
file: file,
9+
line: line
10+
}) do
711
"""
812
#{Paint.cyan("Assertion failed in #{file}:#{line}")}
913
#{Paint.red(message)}
1014
"""
1115
end
16+
1217
def format_failure(%{error: %ExUnit.AssertionError{expr: expr} = error, file: file, line: line}) do
1318
"""
1419
#{Paint.cyan("Assertion failed in #{file}:#{line}")}
1520
#{Paint.red(Macro.to_string(expr))}
1621
"""
1722
|> format_inequality(error)
1823
end
24+
1925
def format_failure(%{error: error, file: file, line: line}) do
2026
"""
2127
#{Paint.cyan("Error in #{file}:#{line}")}
@@ -26,22 +32,24 @@ defmodule Display.Failure do
2632
defp format_inequality(message, %{left: @no_value, right: @no_value}) do
2733
message
2834
end
35+
2936
defp format_inequality(message, %{left: @no_value, right: match_value}) do
3037
"""
3138
#{message}
32-
value does not match: #{match_value |> inspect |> Paint.yellow}
39+
value does not match: #{match_value |> inspect |> Paint.yellow()}
3340
"""
3441
end
42+
3543
defp format_inequality(message, %{left: left, right: right}) do
3644
"""
3745
#{message}
38-
left: #{left |> inspect |> Paint.yellow}
39-
right: #{right |> inspect |> Paint.yellow}
46+
left: #{left |> inspect |> Paint.yellow()}
47+
right: #{right |> inspect |> Paint.yellow()}
4048
"""
4149
end
4250

4351
defp format_error(error) do
44-
trace = System.stacktrace |> Enum.take(2)
52+
trace = System.stacktrace() |> Enum.take(2)
4553
Paint.red(Exception.format(:error, error, trace))
4654
end
4755

lib/display/intro.ex

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ defmodule Display.Intro do
22
alias Display.Paint
33

44
def intro(module, modules) do
5-
if not module in modules do
5+
if not (module in modules) do
66
show_intro(module.intro)
77
else
88
""
99
end
1010
end
1111

1212
def show_intro(message) do
13-
message <> "\n"
14-
|> Paint.green
13+
(message <> "\n")
14+
|> Paint.green()
1515
end
1616
end

lib/display/notification.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ defmodule Display.Notifications do
1515
|> Enum.map(&Atom.to_string/1)
1616
|> Enum.map(&name/1)
1717
|> Enum.join(", ")
18-
|> Paint.red
18+
|> Paint.red()
1919
end
2020

2121
defp name("Elixir." <> module), do: module

lib/display/progress_bar.ex

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
defmodule Display.ProgressBar do
2-
32
@progress_bar_length 30
43

54
def progress_bar(%{current: current, total: total}) do
@@ -9,11 +8,12 @@ defmodule Display.ProgressBar do
98
end
109

1110
defp calculate_progress(current, total) do
12-
round( (current/total) * @progress_bar_length)
11+
round(current / total * @progress_bar_length)
1312
end
1413

1514
defp build_arrow(0), do: ""
15+
1616
defp build_arrow(length) do
17-
String.duplicate("=", length-1) <> ">"
17+
String.duplicate("=", length - 1) <> ">"
1818
end
1919
end

lib/execute.ex

+11-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
defmodule Execute do
2-
def run_module(module, callback \\ fn(_result, _module, _koan) -> nil end) do
3-
Enum.reduce_while(module.all_koans, :passed, fn(koan, _) ->
2+
def run_module(module, callback \\ fn _result, _module, _koan -> nil end) do
3+
Enum.reduce_while(module.all_koans, :passed, fn koan, _ ->
44
module
55
|> run_koan(koan)
66
|> hook(module, koan, callback)
@@ -24,31 +24,33 @@ defmodule Execute do
2424

2525
def listen_for_result(module, name) do
2626
receive do
27-
:ok -> :passed
27+
:ok -> :passed
2828
%{error: _} = failure -> {:failed, failure, module, name}
2929
_ -> listen_for_result(module, name)
3030
end
3131
end
3232

3333
defp exec(module, name, args, parent) do
3434
result = apply(module, name, args)
35-
send parent, expand(result, module)
35+
send(parent, expand(result, module))
3636
Process.exit(self(), :kill)
3737
end
3838

3939
defp expand(:ok, _), do: :ok
40+
4041
defp expand(error, module) do
41-
{file, line} = System.stacktrace
42-
|> Enum.drop_while(&!in_koan?(&1, module))
43-
|> List.first
42+
{file, line} =
43+
System.stacktrace()
44+
|> Enum.drop_while(&(!in_koan?(&1, module)))
45+
|> List.first()
4446
|> extract_file_and_line
4547

46-
%{error: error, file: file, line: line}
48+
%{error: error, file: file, line: line}
4749
end
4850

4951
defp in_koan?({module, _, _, _}, koan), do: module == koan
5052

5153
defp extract_file_and_line({_, _, _, [file: file, line: line]}) do
52-
{file, line}
54+
{file, line}
5355
end
5456
end

lib/koans.ex

+10-4
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ defmodule Koans do
2929
end
3030

3131
defmacro generate_test_method(_name, 0, _body), do: false
32+
3233
defmacro generate_test_method(name, 1, body) do
3334
single_var = Blanks.replace(body, Macro.var(:answer, __MODULE__))
35+
3436
quote do
3537
def unquote(name)(answer) do
3638
try do
@@ -42,8 +44,11 @@ defmodule Koans do
4244
end
4345
end
4446
end
47+
4548
defmacro generate_test_method(name, number_of_args, body) do
46-
answer_vars = for id <- 1..number_of_args, do: Macro.var(String.to_atom("answer#{id}"), __MODULE__)
49+
answer_vars =
50+
for id <- 1..number_of_args, do: Macro.var(String.to_atom("answer#{id}"), __MODULE__)
51+
4752
multi_var = Blanks.replace(body, answer_vars)
4853

4954
quote do
@@ -60,12 +65,12 @@ defmodule Koans do
6065

6166
defp blank_line_replacement({:assert, _meta, [expr]}) do
6267
code = Macro.escape(expr)
63-
quote do: raise ExUnit.AssertionError, expr: unquote(code)
68+
quote do: raise(ExUnit.AssertionError, expr: unquote(code))
6469
end
6570

6671
defp blank_line_replacement(line) do
6772
code = Macro.escape(line)
68-
quote do: raise ExUnit.AssertionError, expr: unquote(code)
73+
quote do: raise(ExUnit.AssertionError, expr: unquote(code))
6974
end
7075

7176
defmacro __using__(_opts) do
@@ -83,6 +88,7 @@ defmodule Koans do
8388

8489
defmacro __before_compile__(env) do
8590
koans = koans(env)
91+
8692
quote do
8793
def all_koans do
8894
unquote(koans)
@@ -95,6 +101,6 @@ defmodule Koans do
95101
defp koans(env) do
96102
env.module
97103
|> Module.get_attribute(:koans)
98-
|> Enum.reverse
104+
|> Enum.reverse()
99105
end
100106
end

lib/koans/01_equalities.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
defmodule Equalities do
22
use Koans
33

4-
@intro """
4+
@intro """
55
Welcome to the Elixir koans.
66
Let these be your first humble steps towards learning a new language.
77

lib/koans/04_atoms.ex

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ defmodule Atoms do
1111
koan "It is surprising to find out that booleans are atoms" do
1212
assert is_atom(true) == ___
1313
assert is_boolean(false) == ___
14-
assert :true == ___
15-
assert :false == ___
14+
assert true == ___
15+
assert false == ___
1616
end
1717

1818
koan "Like booleans, the nil value is also an atom" do
1919
assert is_atom(nil) == ___
20-
assert :nil == ___
20+
assert nil == ___
2121
end
2222
end

lib/koans/08_maps.ex

+2-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ defmodule Maps do
66
@person %{
77
first_name: "Jon",
88
last_name: "Snow",
9-
age: 27,
9+
age: 27
1010
}
1111

1212
koan "Maps represent structured data, like a person" do
13-
assert @person == %{first_name: ___,
14-
last_name: "Snow",
15-
age: 27 }
13+
assert @person == %{first_name: ___, last_name: "Snow", age: 27}
1614
end
1715

1816
koan "Fetching a value returns a tuple with ok when it exists" do

0 commit comments

Comments
 (0)