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

Commit45b5ece

Browse files
committed
Flatten the AST of ComplexSelector
1 parenta6d9b01 commit45b5ece

File tree

4 files changed

+52
-54
lines changed

4 files changed

+52
-54
lines changed

‎lib/syntax_tree/css/format.rb

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,10 @@ def visit_combinator(node)
9191
# Visit a Selectors::ComplexSelector node.
9292
defvisit_complex_selector(node)
9393
q.groupdo
94-
node.left.format(q)
95-
96-
ifnode.combinator
97-
q.text(" ")
98-
node.combinator.format(q)
94+
node.child_nodes.each_with_indexdo |child_node,j|
95+
q.text(" ")unlessj ==0
96+
child_node.format(q)
9997
end
100-
101-
q.text(" ")
102-
node.right.format(q)
10398
end
10499
end
105100

‎lib/syntax_tree/css/pretty_print.rb

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -432,14 +432,10 @@ def visit_combinator(node)
432432
# Visit a Selectors::ComplexSelector node.
433433
defvisit_complex_selector(node)
434434
token("complex-selector")do
435-
q.breakable
436-
q.pp(node.left)
437-
438-
q.breakable
439-
q.pp(node.combinator)
440-
441-
q.breakable
442-
q.pp(node.right)
435+
node.child_nodes.eachdo |child|
436+
q.breakable
437+
q.pp(child)
438+
end
443439
end
444440
end
445441

‎lib/syntax_tree/css/selectors.rb

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -94,26 +94,20 @@ def deconstruct_keys(keys)
9494
end
9595

9696
classComplexSelector <Node
97-
attr_reader:left,:combinator,:right
97+
attr_reader:child_nodes
9898

99-
definitialize(left:,combinator:,right:)
100-
@left=left
101-
@combinator=combinator
102-
@right=right
99+
definitialize(child_nodes:)
100+
@child_nodes=child_nodes
103101
end
104102

105103
defaccept(visitor)
106104
visitor.visit_complex_selector(self)
107105
end
108106

109-
defchild_nodes
110-
[left,combinator,right]
111-
end
112-
113107
aliasdeconstructchild_nodes
114108

115109
defdeconstruct_keys(keys)
116-
{left:left,combinator:combinator,right:right}
110+
{child_nodes:child_nodes}
117111
end
118112
end
119113

@@ -337,16 +331,23 @@ def relative_selector_list
337331

338332
# <complex-selector> = <compound-selector> [ <combinator>? <compound-selector> ]*
339333
defcomplex_selector
340-
consume_whitespace
334+
child_nodes=[compound_selector]
341335

342-
left=compound_selector
336+
loopdo
337+
if(c=maybe{combinator})
338+
child_nodes <<c
339+
end
340+
if(s=maybe{compound_selector})
341+
child_nodes <<s
342+
else
343+
break
344+
end
345+
end
343346

344-
if(c=maybe{combinator})
345-
ComplexSelector.new(left:left,combinator:c,right:complex_selector)
346-
elsif(right=maybe{complex_selector})
347-
ComplexSelector.new(left:left,combinator:nil,right:right)
347+
ifchild_nodes.length >1
348+
ComplexSelector.new(child_nodes:child_nodes)
348349
else
349-
left
350+
child_nodes.first
350351
end
351352
end
352353

@@ -362,6 +363,8 @@ def relative_selector
362363
# <compound-selector> = [ <type-selector>? <subclass-selector>*
363364
# [ <pseudo-element-selector> <pseudo-class-selector>* ]* ]!
364365
defcompound_selector
366+
consume_whitespace
367+
365368
type=maybe{type_selector}
366369
subclasses=[]
367370

‎test/selectors_test.rb

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,11 @@ class SelectorsTest < Minitest::Spec
7272
assert_patterndo
7373
actual=>[
7474
Selectors::ComplexSelector[
75-
left:Selectors::TypeSelector[value:{name:{value:"section"}}],
76-
combinator:{value:{value:">"}},
77-
right:Selectors::TypeSelector[value:{name:{value:"table"}}]
75+
child_nodes:[
76+
Selectors::TypeSelector[value:{name:{value:"section"}}],
77+
Selectors::Combinator[value:{value:">"}],
78+
Selectors::TypeSelector[value:{name:{value:"table"}}]
79+
]
7880
]
7981
]
8082
end
@@ -86,12 +88,12 @@ class SelectorsTest < Minitest::Spec
8688
assert_patterndo
8789
actual=>[
8890
Selectors::ComplexSelector[
89-
left:Selectors::TypeSelector[value:{name:{value:"section"}}],
90-
combinator:{value:{value:">"}},
91-
right:Selectors::ComplexSelector[
92-
left:Selectors::TypeSelector[value:{name:{value:"table"}}],
93-
combinator:{value:{value:">"}},
94-
right:Selectors::TypeSelector[value:{name:{value:"tr"}}]
91+
child_nodes:[
92+
Selectors::TypeSelector[value:{name:{value:"section"}}],
93+
Selectors::Combinator[value:{value:">"}],
94+
Selectors::TypeSelector[value:{name:{value:"table"}}],
95+
Selectors::Combinator[value:{value:">"}],
96+
Selectors::TypeSelector[value:{name:{value:"tr"}}],
9597
]
9698
]
9799
]
@@ -104,9 +106,11 @@ class SelectorsTest < Minitest::Spec
104106
assert_patterndo
105107
actual=>[
106108
Selectors::ComplexSelector[
107-
left:Selectors::TypeSelector[value:{name:{value:"section"}}],
108-
combinator:{value:{value:">"}},
109-
right:Selectors::TypeSelector[value:{name:{value:"table"}}],
109+
child_nodes:[
110+
Selectors::TypeSelector[value:{name:{value:"section"}}],
111+
Selectors::Combinator[value:{value:">"}],
112+
Selectors::TypeSelector[value:{name:{value:"table"}}],
113+
]
110114
]
111115
]
112116
end
@@ -118,9 +122,10 @@ class SelectorsTest < Minitest::Spec
118122
assert_patterndo
119123
actual=>[
120124
Selectors::ComplexSelector[
121-
left:Selectors::TypeSelector[value:{name:{value:"section"}}],
122-
combinator:nil,
123-
right:Selectors::TypeSelector[value:{name:{value:"table"}}],
125+
child_nodes:[
126+
Selectors::TypeSelector[value:{name:{value:"section"}}],
127+
Selectors::TypeSelector[value:{name:{value:"table"}}],
128+
]
124129
]
125130
]
126131
end
@@ -132,12 +137,11 @@ class SelectorsTest < Minitest::Spec
132137
assert_patterndo
133138
actual=>[
134139
Selectors::ComplexSelector[
135-
left:Selectors::TypeSelector[value:{name:{value:"section"}}],
136-
combinator:{value:{value:">"}},
137-
right:Selectors::ComplexSelector[
138-
left:Selectors::TypeSelector[value:{name:{value:"table"}}],
139-
combinator:nil,
140-
right:Selectors::TypeSelector[value:{name:{value:"tr"}}]
140+
child_nodes:[
141+
Selectors::TypeSelector[value:{name:{value:"section"}}],
142+
Selectors::Combinator[value:{value:">"}],
143+
Selectors::TypeSelector[value:{name:{value:"table"}}],
144+
Selectors::TypeSelector[value:{name:{value:"tr"}}]
141145
]
142146
]
143147
]

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp