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

Commit c711ae3

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

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
@@ -197,8 +197,32 @@ class SelectorsTest < Minitest::Spec
197197
end
198198

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

204228
private
@@ -208,7 +232,7 @@ def assert_selector_format(selectors, expected)
208232

209233
io = StringIO.new
210234
selectors.each do |selector|
211-
selector.format(::PrettyPrint.new(io))
235+
selector.format(::PP.new(io))
212236
assert_equal(expected, io.string)
213237
end
214238
end

0 commit comments

Comments
 (0)