Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 5d8fe83

Browse files
committed
format: implement more CSS selector formatting
for IdSelector, HashToken, and PseudoClassSelector, and add test coverage.
1 parent a8e63a8 commit 5d8fe83

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

lib/syntax_tree/css/format.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ def visit_ident_token(node)
4747
q.text(node.value)
4848
end
4949

50+
# Visit a HashToken node.
51+
def visit_hash_token(node)
52+
q.text(node.value)
53+
end
54+
5055
# Visit a StyleRule node.
5156
def visit_style_rule(node)
5257
q.group do
@@ -77,12 +82,24 @@ def visit_type_selector(node)
7782
end
7883
end
7984

85+
# Visit a Selectors::IdSelector node.
86+
def visit_id_selector(node)
87+
q.text("#")
88+
node.value.format(q)
89+
end
90+
8091
# Visit a Selectors::ClassSelector node.
8192
def visit_class_selector(node)
8293
q.text(".")
8394
node.value.format(q)
8495
end
8596

97+
# Visit a Selectors::PseudoClassSelector node.
98+
def visit_pseudo_class_selector(node)
99+
q.text(":")
100+
node.value.format(q)
101+
end
102+
86103
# Visit a Selectors::Combinator node.
87104
def visit_combinator(node)
88105
node.value.format(q)

test/selectors_test.rb

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,32 @@ class SelectorsTest < Minitest::Spec
194194
end
195195

196196
describe "formatting" do
197-
it "formats complex selectors" do
198-
assert_selector_format(".outer section.foo>table.bar tr", ".outer section.foo > table.bar tr")
197+
it "formats compound selector with an id selector" do
198+
assert_selector_format(
199+
"div#foo",
200+
"div#foo",
201+
)
202+
end
203+
204+
it "formats compound selector with an pseudo-class selector" do
205+
assert_selector_format(
206+
"div:hover",
207+
"div:hover",
208+
)
209+
end
210+
211+
it "formats compound selectors" do
212+
assert_selector_format(
213+
"div.flex.text-xl",
214+
"div.flex.text-xl",
215+
)
216+
end
217+
218+
it "formats complex selectors with whitespace" do
219+
assert_selector_format(
220+
".outer section.foo>table.bar tr",
221+
".outer section.foo > table.bar tr",
222+
)
199223
end
200224

201225
private
@@ -205,7 +229,7 @@ def assert_selector_format(selectors, expected)
205229

206230
io = StringIO.new
207231
selectors.each do |selector|
208-
selector.format(::PrettyPrint.new(io))
232+
selector.format(::PP.new(io))
209233
assert_equal(expected, io.string)
210234
end
211235
end

0 commit comments

Comments
 (0)