Skip to content

Commit 0eb56c2

Browse files
authored
Merge pull request #285 from imahmedismail/imahmedismail/some-code-optimisations
[in-review] Code optimisations via adding the credo
2 parents 2ca2eee + 07f24b3 commit 0eb56c2

Some content is hidden

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

45 files changed

+124
-64
lines changed

.github/workflows/elixir.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,5 @@ jobs:
3333
run: mix deps.get
3434
- name: Run tests
3535
run: mix test
36+
- name: Run static analytics
37+
run: mix credo suggest --all --strict

lib/blanks.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Blanks do
2+
@moduledoc false
23
def replace(ast, replacements) do
34
replacements = List.wrap(replacements)
45

lib/display.ex

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
defmodule Display do
2+
@moduledoc false
23
use GenServer
34

45
alias IO.ANSI
5-
alias Display.{ProgressBar, Intro, Failure, Notifications}
6+
alias Display.{Failure, Intro, Notifications, ProgressBar}
67

78
def start_link do
89
GenServer.start_link(__MODULE__, %{clear_screen: true}, name: __MODULE__)
@@ -20,7 +21,7 @@ defmodule Display do
2021
{:noreply, %{state | clear_screen: false}}
2122
end
2223

23-
def handle_cast(:clear_screen, state = %{clear_screen: true}) do
24+
def handle_cast(:clear_screen, %{clear_screen: true} = state) do
2425
IO.puts(ANSI.clear())
2526
IO.puts(ANSI.home())
2627

lib/display/colours.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Display.Paint do
2+
@moduledoc false
23
def red(str), do: painter().red(str)
34
def cyan(str), do: painter().cyan(str)
45
def green(str), do: painter().green(str)
@@ -13,6 +14,7 @@ defmodule Display.Paint do
1314
end
1415

1516
defmodule Display.Colours do
17+
@moduledoc false
1618
alias IO.ANSI
1719

1820
def red(str), do: colourize(ANSI.red(), str)
@@ -26,6 +28,7 @@ defmodule Display.Colours do
2628
end
2729

2830
defmodule Display.Uncoloured do
31+
@moduledoc false
2932
def red(str), do: str
3033
def cyan(str), do: str
3134
def green(str), do: str

lib/display/failure.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Display.Failure do
2+
@moduledoc false
23
alias Display.Paint
34

45
@no_value :ex_unit_no_meaningful_value

lib/display/intro.ex

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
defmodule Display.Intro do
2+
@moduledoc false
23
alias Display.Paint
34

45
def intro(module, modules) do
5-
if not (module in modules) do
6-
show_intro(module.intro)
7-
else
6+
if module in modules do
87
""
8+
else
9+
show_intro(module.intro)
910
end
1011
end
1112

lib/display/notification.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Display.Notifications do
2+
@moduledoc false
23
alias Display.Paint
34

45
def congratulate do
@@ -13,8 +14,7 @@ defmodule Display.Notifications do
1314
defp module_names(modules) do
1415
modules
1516
|> Enum.map(&Atom.to_string/1)
16-
|> Enum.map(&name/1)
17-
|> Enum.join(", ")
17+
|> Enum.map_join(", ", &name/1)
1818
|> Paint.red()
1919
end
2020

lib/display/progress_bar.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Display.ProgressBar do
2+
@moduledoc false
23
@progress_bar_length 30
34

45
def progress_bar(%{current: current, total: total}) do

lib/elixir_koans.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule ElixirKoans do
2+
@moduledoc false
23
use Application
34

45
def start(_type, _args) do

lib/execute.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Execute do
2+
@moduledoc false
23
def run_module(module, callback \\ fn _result, _module, _koan -> nil end) do
34
Enum.reduce_while(module.all_koans, :passed, fn koan, _ ->
45
module

lib/koans.ex

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Koans do
2+
@moduledoc false
23
defp valid_name(name) do
34
Regex.match?(~r/([A-Z]|\.\.\.).+/, name)
45
end
@@ -18,12 +19,10 @@ defmodule Koans do
1819
generate_test_method(unquote(compiled_name), unquote(number_of_args), unquote(body))
1920

2021
def unquote(compiled_name)() do
21-
try do
22-
unquote(compiled_body)
23-
:ok
24-
rescue
25-
e -> {:error, __STACKTRACE__, e}
26-
end
22+
unquote(compiled_body)
23+
:ok
24+
rescue
25+
e -> {:error, __STACKTRACE__, e}
2726
end
2827
end
2928
end
@@ -35,12 +34,10 @@ defmodule Koans do
3534

3635
quote do
3736
def unquote(name)(answer) do
38-
try do
39-
unquote(single_var)
40-
:ok
41-
rescue
42-
e -> {:error, __STACKTRACE__, e}
43-
end
37+
unquote(single_var)
38+
:ok
39+
rescue
40+
e -> {:error, __STACKTRACE__, e}
4441
end
4542
end
4643
end
@@ -53,12 +50,10 @@ defmodule Koans do
5350

5451
quote do
5552
def unquote(name)({:multiple, unquote(answer_vars)}) do
56-
try do
57-
unquote(multi_var)
58-
:ok
59-
rescue
60-
e -> {:error, __STACKTRACE__, e}
61-
end
53+
unquote(multi_var)
54+
:ok
55+
rescue
56+
e -> {:error, __STACKTRACE__, e}
6257
end
6358
end
6459
end

lib/koans/01_equalities.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Equalities do
2+
@moduledoc false
23
use Koans
34

45
@intro """

lib/koans/02_strings.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Strings do
2+
@moduledoc false
23
use Koans
34

45
@intro "Strings"

lib/koans/03_numbers.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Numbers do
2+
@moduledoc false
23
require Integer
34
use Koans
45

@@ -49,7 +50,7 @@ defmodule Numbers do
4950
end
5051

5152
koan "Let's grab the individual digits in a list" do
52-
individual_digits = Integer.digits(58127)
53+
individual_digits = Integer.digits(58_127)
5354
assert individual_digits == ___
5455
end
5556

lib/koans/04_atoms.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Atoms do
2+
@moduledoc false
23
use Koans
34

45
@intro "Atoms"

lib/koans/05_tuples.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Tuples do
2+
@moduledoc false
23
use Koans
34

45
@intro "Tuples"

lib/koans/06_lists.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Lists do
2+
@moduledoc false
23
use Koans
34

45
@intro "Lists"

lib/koans/07_keyword_lists.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule KeywordLists do
2+
@moduledoc false
23
use Koans
34

45
@intro "KeywordLists"

lib/koans/08_maps.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Maps do
2+
@moduledoc false
23
use Koans
34

45
@intro "Maps"

lib/koans/09_map_sets.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule MapSets do
2+
@moduledoc false
23
use Koans
34

45
@intro "My name is Set, MapSet."

lib/koans/10_structs.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
defmodule Structs do
2+
@moduledoc false
23
use Koans
34

45
@intro "Structs"
56

67
defmodule Person do
8+
@moduledoc false
79
defstruct [:name, :age]
810
end
911

@@ -35,10 +37,12 @@ defmodule Structs do
3537
end
3638

3739
defmodule Plane do
40+
@moduledoc false
3841
defstruct passengers: 0, maker: :boeing
3942
end
4043

4144
defmodule Airline do
45+
@moduledoc false
4246
defstruct plane: %Plane{}, name: "Southwest"
4347
end
4448

lib/koans/11_sigils.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Sigils do
2+
@moduledoc false
23
use Koans
34

45
@intro "Sigils"

lib/koans/12_pattern_matching.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule PatternMatching do
2+
@moduledoc false
23
use Koans
34

45
@intro "PatternMatching"
@@ -94,6 +95,7 @@ defmodule PatternMatching do
9495
end
9596

9697
defmodule Animal do
98+
@moduledoc false
9799
defstruct [:kind, :name]
98100
end
99101

@@ -103,6 +105,7 @@ defmodule PatternMatching do
103105
end
104106

105107
defmodule Plane do
108+
@moduledoc false
106109
defstruct passengers: 0, maker: :boeing
107110
end
108111

lib/koans/13_functions.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Functions do
2+
@moduledoc false
23
use Koans
34

45
@intro "Functions"
@@ -104,8 +105,7 @@ defmodule Functions do
104105
result =
105106
"full-name"
106107
|> String.split("-")
107-
|> Enum.map(&String.capitalize/1)
108-
|> Enum.join(" ")
108+
|> Enum.map_join(" ", &String.capitalize/1)
109109

110110
assert result == ___
111111
end

lib/koans/14_enums.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Enums do
2+
@moduledoc false
23
use Koans
34

45
@intro "Enums"

lib/koans/15_processes.ex

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Processes do
2+
@moduledoc false
23
use Koans
34

45
@intro "Processes"
@@ -88,8 +89,12 @@ defmodule Processes do
8889

8990
send(pid, {:hello, self()})
9091

91-
timeout = 100 # ms
92-
failure_message = "Sorry, I didn't get the right message. Look at the message that is sent back very closely, and try again"
92+
# ms
93+
timeout = 100
94+
95+
failure_message =
96+
"Sorry, I didn't get the right message. Look at the message that is sent back very closely, and try again"
97+
9398
assert_receive ___, timeout, failure_message
9499
end
95100

lib/koans/16_tasks.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Tasks do
2+
@moduledoc false
23
use Koans
34

45
@intro "Tasks"

lib/koans/17_agents.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Agents do
2+
@moduledoc false
23
use Koans
34

45
@intro "Agents"

lib/koans/18_genservers.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
defmodule GenServers do
2+
@moduledoc false
23
use Koans
34

45
@intro "GenServers"
56

67
defmodule Laptop do
8+
@moduledoc false
79
use GenServer
810

911
#####

lib/koans/19_protocols.ex

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule Protocols do
2+
@moduledoc false
23
use Koans
34

45
@intro "Want to follow the rules? Adhere to the protocol!"
@@ -12,13 +13,25 @@ defmodule Protocols do
1213
end
1314

1415
defmodule Painter do
16+
@moduledoc false
1517
@derive Artist
1618
defstruct name: ""
1719
end
1820

19-
defmodule(Musician, do: defstruct(name: "", instrument: ""))
20-
defmodule(Dancer, do: defstruct(name: "", dance_style: ""))
21-
defmodule(Physicist, do: defstruct(name: ""))
21+
defmodule Musician do
22+
@moduledoc false
23+
defstruct(name: "", instrument: "")
24+
end
25+
26+
defmodule Dancer do
27+
@moduledoc false
28+
defstruct(name: "", dance_style: "")
29+
end
30+
31+
defmodule Physicist do
32+
@moduledoc false
33+
defstruct(name: "")
34+
end
2235

2336
defimpl Artist, for: Musician do
2437
def perform(musician) do

0 commit comments

Comments
 (0)