Skip to content

Commit 70e7718

Browse files
committed
refactor format_number into Numbers module
1 parent 4b2f1c7 commit 70e7718

File tree

6 files changed

+45
-50
lines changed

6 files changed

+45
-50
lines changed

lib/galaxies_web/components/layouts/app.html.heex

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<ul class="relative z-10 flex items-center gap-4 px-4 sm:px-6 lg:px-8 justify-end">
22
<%= if @current_player do %>
33
<li class="text-[0.8125rem] leading-6 text-white">
4-
Player: <strong>{ @current_player.username }</strong>
4+
Player: <strong>{@current_player.username}</strong>
55
</li>
66
<li>
77
<.link
@@ -202,7 +202,7 @@
202202
<main class="px-4 py-10 sm:px-6 lg:px-8 text-white">
203203
<div class="mx-auto max-w-6xl">
204204
<.flash_group flash={@flash} />
205-
{ @inner_content }
205+
{@inner_content}
206206
</div>
207207
</main>
208208
</div>

lib/galaxies_web/live/facilities_live.ex

+5-16
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule GalaxiesWeb.FacilitiesLive do
2+
alias GalaxiesWeb.Numbers
23
alias GalaxiesWeb.CommonComponents
34
use GalaxiesWeb, :live_view
45

@@ -122,29 +123,17 @@ defmodule GalaxiesWeb.FacilitiesLive do
122123
~H"""
123124
Requirements:
124125
<%= if @metal > 0 do %>
125-
Metal: <strong>{format_number(@metal)}</strong>
126+
Metal: <strong>{Numbers.format_number(@metal)}</strong>
126127
<% end %>
127128
<%= if @crystal > 0 do %>
128-
Crystal: <strong>{format_number(@crystal)}</strong>
129+
Crystal: <strong>{Numbers.format_number(@crystal)}</strong>
129130
<% end %>
130131
<%= if @deuterium > 0 do %>
131-
Deuterium: <strong>{format_number(@deuterium)}</strong>
132+
Deuterium: <strong>{Numbers.format_number(@deuterium)}</strong>
132133
<% end %>
133134
<%= if @energy > 0 do %>
134-
Energy: <strong>{format_number(@energy)}</strong>
135+
Energy: <strong>{Numbers.format_number(@energy)}</strong>
135136
<% end %>
136137
"""
137138
end
138-
139-
defp format_number(number) when number < 1000, do: "#{number}"
140-
141-
defp format_number(number) do
142-
number
143-
|> Kernel.to_string()
144-
|> String.reverse()
145-
|> String.split("", trim: true)
146-
|> Enum.chunk_every(3)
147-
|> Enum.join(".")
148-
|> String.reverse()
149-
end
150139
end

lib/galaxies_web/live/research_live.ex

+5-16
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule GalaxiesWeb.ResearchLive do
2+
alias GalaxiesWeb.Numbers
23
use GalaxiesWeb, :live_view
34

45
alias Galaxies.Accounts
@@ -126,29 +127,17 @@ defmodule GalaxiesWeb.ResearchLive do
126127
~H"""
127128
Requirements:
128129
<%= if @metal > 0 do %>
129-
Metal: <strong>{format_number(@metal)}</strong>
130+
Metal: <strong>{Numbers.format_number(@metal)}</strong>
130131
<% end %>
131132
<%= if @crystal > 0 do %>
132-
Crystal: <strong>{format_number(@crystal)}</strong>
133+
Crystal: <strong>{Numbers.format_number(@crystal)}</strong>
133134
<% end %>
134135
<%= if @deuterium > 0 do %>
135-
Deuterium: <strong>{format_number(@deuterium)}</strong>
136+
Deuterium: <strong>{Numbers.format_number(@deuterium)}</strong>
136137
<% end %>
137138
<%= if @energy > 0 do %>
138-
Energy: <strong>{format_number(@energy)}</strong>
139+
Energy: <strong>{Numbers.format_number(@energy)}</strong>
139140
<% end %>
140141
"""
141142
end
142-
143-
defp format_number(number) when number < 1000, do: "#{number}"
144-
145-
defp format_number(number) do
146-
number
147-
|> Kernel.to_string()
148-
|> String.reverse()
149-
|> String.split("", trim: true)
150-
|> Enum.chunk_every(3)
151-
|> Enum.join(".")
152-
|> String.reverse()
153-
end
154143
end

lib/galaxies_web/live/resources_live.ex

+5-16
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
defmodule GalaxiesWeb.ResourcesLive do
2+
alias GalaxiesWeb.Numbers
23
alias GalaxiesWeb.CommonComponents
34
use GalaxiesWeb, :live_view
45

@@ -122,29 +123,17 @@ defmodule GalaxiesWeb.ResourcesLive do
122123
~H"""
123124
Requirements:
124125
<%= if @metal > 0 do %>
125-
Metal: <strong>{format_number(@metal)}</strong>
126+
Metal: <strong>{Numbers.format_number(@metal)}</strong>
126127
<% end %>
127128
<%= if @crystal > 0 do %>
128-
Crystal: <strong>{format_number(@crystal)}</strong>
129+
Crystal: <strong>{Numbers.format_number(@crystal)}</strong>
129130
<% end %>
130131
<%= if @deuterium > 0 do %>
131-
Deuterium: <strong>{format_number(@deuterium)}</strong>
132+
Deuterium: <strong>{Numbers.format_number(@deuterium)}</strong>
132133
<% end %>
133134
<%= if @energy > 0 do %>
134-
Energy: <strong>{format_number(@energy)}</strong>
135+
Energy: <strong>{Numbers.format_number(@energy)}</strong>
135136
<% end %>
136137
"""
137138
end
138-
139-
defp format_number(number) when number < 1000, do: "#{number}"
140-
141-
defp format_number(number) do
142-
number
143-
|> Kernel.to_string()
144-
|> String.reverse()
145-
|> String.split("", trim: true)
146-
|> Enum.chunk_every(3)
147-
|> Enum.join(".")
148-
|> String.reverse()
149-
end
150139
end

lib/galaxies_web/numbers.ex

+15
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,19 @@ defmodule GalaxiesWeb.Numbers do
3131
"#{seconds}s"
3232
end
3333
end
34+
35+
@doc """
36+
Formats a number by separating thousands with a dot.
37+
"""
38+
def format_number(number) when number < 1000, do: to_string(number)
39+
40+
def format_number(number) do
41+
number
42+
|> Kernel.to_string()
43+
|> String.reverse()
44+
|> String.split("", trim: true)
45+
|> Enum.chunk_every(3)
46+
|> Enum.join(".")
47+
|> String.reverse()
48+
end
3449
end

test/galaxies_web/numbers_test.exs

+13
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,17 @@ defmodule GalaxiesWeb.NumbersTest do
3131
assert GalaxiesWeb.Numbers.format_countdown(172_799) == "1d 23h 59m 59s"
3232
end
3333
end
34+
35+
describe "format_number/1" do
36+
test "when number is less than 1000" do
37+
assert GalaxiesWeb.Numbers.format_number(0) == "0"
38+
assert GalaxiesWeb.Numbers.format_number(999) == "999"
39+
end
40+
41+
test "when number is greater than 1000" do
42+
assert GalaxiesWeb.Numbers.format_number(1_000) == "1.000"
43+
assert GalaxiesWeb.Numbers.format_number(1_000_000) == "1.000.000"
44+
assert GalaxiesWeb.Numbers.format_number(1_000_000_000) == "1.000.000.000"
45+
end
46+
end
3447
end

0 commit comments

Comments
 (0)