Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc152737

Browse files
committed
format: implement CSS selector formatting for more nodes
Implement formatting for IdSelector, HashToken, PseudoClassSelector,and PseudoElementSelector.Also, add formatting test coverage.
1 parente2096b3 commitc152737

File tree

2 files changed

+63
-6
lines changed

2 files changed

+63
-6
lines changed

‎lib/syntax_tree/css/format.rb

Lines changed: 25 additions & 3 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+
defvisit_hash_token(node)
52+
q.text(node.value)
53+
end
54+
5055
# Visit a StyleRule node.
5156
defvisit_style_rule(node)
5257
q.groupdo
@@ -77,12 +82,30 @@ def visit_type_selector(node)
7782
end
7883
end
7984

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

97+
# Visit a Selectors::PseudoClassSelector node.
98+
defvisit_pseudo_class_selector(node)
99+
q.text(":")
100+
node.value.format(q)
101+
end
102+
103+
# Visit a Selectors::PseudoElementSelector node.
104+
defvisit_pseudo_element_selector(node)
105+
q.text(":")
106+
node.value.format(q)
107+
end
108+
86109
# Visit a Selectors::Combinator node.
87110
defvisit_combinator(node)
88111
node.value.format(q)
@@ -101,9 +124,8 @@ def visit_complex_selector(node)
101124
# Visit a Selectors::CompoundSelector node.
102125
defvisit_compound_selector(node)
103126
q.groupdo
104-
node.type.format(q)ifnode.type
105-
node.subclasses.eachdo |subclass|
106-
subclass.format(q)
127+
node.child_nodes.eachdo |node_|
128+
node_.format(q)
107129
end
108130
# TODO: pseudo-elements
109131
end

‎test/selectors_test.rb

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,43 @@ class SelectorsTest < Minitest::Spec
212212
end
213213

214214
describe"formatting"do
215-
it"formats complex selectors"do
216-
assert_selector_format(".outer section.foo>table.bar tr",".outer section.foo > table.bar tr")
215+
describeSelectors::CompoundSelectordo
216+
it"with an id selector"do
217+
assert_selector_format(
218+
"div#foo",
219+
"div#foo",
220+
)
221+
end
222+
223+
it"with a pseudo-class selector"do
224+
assert_selector_format(
225+
"div:hover",
226+
"div:hover",
227+
)
228+
end
229+
230+
it"with class selectors"do
231+
assert_selector_format(
232+
"div.flex.text-xl",
233+
"div.flex.text-xl",
234+
)
235+
end
236+
237+
it"with pseudo-elements"do
238+
assert_selector_format(
239+
"div.flex:hover::first-line:last-child:active::first-letter",
240+
"div.flex:hover::first-line:last-child:active::first-letter",
241+
)
242+
end
243+
end
244+
245+
describeSelectors::ComplexSelectordo
246+
it"with whitespace"do
247+
assert_selector_format(
248+
".outer section.foo>table.bar tr",
249+
".outer section.foo > table.bar tr",
250+
)
251+
end
217252
end
218253

219254
private
@@ -223,7 +258,7 @@ def assert_selector_format(selectors, expected)
223258

224259
io=StringIO.new
225260
selectors.eachdo |selector|
226-
selector.format(::PrettyPrint.new(io))
261+
selector.format(::PP.new(io))
227262
assert_equal(expected,io.string)
228263
end
229264
end

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp