Skip to content

Commit 2524df9

Browse files
committed
Remove duplicate behaviour
1 parent 1f7e241 commit 2524df9

File tree

2 files changed

+26
-15
lines changed

2 files changed

+26
-15
lines changed

lib/ex_css_modules/ex_css_modules.ex

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ defmodule ExCSSModules do
4343
def class(definition, classes) do
4444
definition
4545
|> class_name(classes)
46-
|> class_attribute
46+
|> class_attribute()
4747
end
4848

4949
@doc """
@@ -58,11 +58,9 @@ defmodule ExCSSModules do
5858
nil
5959
"""
6060
def class(definition, classes, value) do
61-
if value do
62-
definition
63-
|> class_name(classes)
64-
|> class_attribute
65-
end
61+
definition
62+
|> class_name(classes, value)
63+
|> class_attribute()
6664
end
6765

6866
@doc """
@@ -108,12 +106,20 @@ defmodule ExCSSModules do
108106
109107
iex> class_name(%{"hello" => "world", "foo" => "bar"}, [{"hello", true}, {"foo", false}])
110108
"world"
109+
110+
iex> class_name(%{"hello" => "world", "foo" => "bar"}, [{"hello", false}])
111+
nil
111112
"""
112113
def class_name(definition, keys) when is_list(keys) do
113-
keys
114-
|> Enum.map(&class_name(definition, &1))
115-
|> Enum.reject(&is_nil/1)
116-
|> Enum.join(" ")
114+
list = keys
115+
|> Enum.map(&class_name(definition, &1))
116+
|> Enum.reject(&is_nil/1)
117+
118+
if Enum.any?(list) do
119+
Enum.join(list, " ")
120+
else
121+
nil
122+
end
117123
end
118124

119125
@doc """
@@ -158,5 +164,6 @@ defmodule ExCSSModules do
158164
end
159165
end
160166

167+
defp class_attribute(nil), do: nil
161168
defp class_attribute(class), do: HTML.raw(~s(class="#{class}"))
162169
end

test/ex_css_modules/ex_css_modules_test.exs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,8 @@ defmodule ExCSSModulesTest do
2727
) == {:safe, ~s(class="world")}
2828
end
2929

30-
test "returns an empty class attribute for a non existing classname" do
31-
assert ExCSSModules.class(
32-
%{"hello" => "world"},
33-
"foo"
34-
) == {:safe, ~s(class="")}
30+
test "returns nil for a non existing classname" do
31+
assert ExCSSModules.class(%{"hello" => "world"}, "foo") == nil
3532
end
3633
end
3734

@@ -93,6 +90,13 @@ defmodule ExCSSModulesTest do
9390
) == "world"
9491
end
9592

93+
test "returns nil ...." do
94+
assert ExCSSModules.class_name(
95+
%{"hello" => "world", "foo" => "bar"},
96+
[{"hello", false}]
97+
) == nil
98+
end
99+
96100
test "defaults to nil" do
97101
assert ExCSSModules.class_name(%{}, "hello") == nil
98102
end

0 commit comments

Comments
 (0)