Skip to content

Commit 0b41230

Browse files
committed
Allow binding to via the kwarg in tokens
1 parent a929f20 commit 0b41230

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

lib/phlex/helpers.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ module Phlex::Helpers
1818
# tokens(
1919
# active?: { then: "active", else: "inactive" }
2020
# )
21-
def tokens(*tokens, **conditional_tokens)
21+
def tokens(*tokens, class: nil, **conditional_tokens)
2222
conditional_tokens.each do |condition, token|
2323
truthy = case condition
2424
when Symbol then send(condition)
@@ -38,6 +38,13 @@ def tokens(*tokens, **conditional_tokens)
3838
end
3939
end
4040

41+
case binding.local_variable_get(:class)
42+
when Class
43+
raise ArgumentError, "Implicit class binding is not supported. Use the class: keyword argument."
44+
else
45+
tokens.append binding.local_variable_get(:class)
46+
end
47+
4148
tokens = tokens.select(&:itself).join(" ")
4249
tokens.strip!
4350
tokens.gsub!(/\s+/, " ")

test/phlex/view/tokens.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,41 @@
33
describe Phlex::HTML do
44
extend ViewHelper
55

6+
with "implicit class binding" do
7+
with "class: keyword argument" do
8+
view do
9+
def view_template
10+
red(class: "buzz")
11+
end
12+
13+
def red(class:)
14+
div(class: tokens("fizz", class:))
15+
end
16+
end
17+
18+
it "implicitly binds class: keyword argument" do
19+
expect(output).to be == %(<div class="fizz buzz"></div>)
20+
end
21+
end
22+
23+
with "endless argumens (...)" do
24+
view do
25+
def view_template
26+
red(class: "buzz")
27+
end
28+
29+
def red(...)
30+
div(class: tokens("fizz", class:))
31+
end
32+
end
33+
34+
it "raises error" do
35+
expect{ output }.to raise_exception ArgumentError,
36+
message: be == "Implicit class binding is not supported. Use the class: keyword argument."
37+
end
38+
end
39+
end
40+
641
with "conditional classes" do
742
with "symbol conditionals" do
843
view do

0 commit comments

Comments
 (0)