@@ -31,18 +31,18 @@ defmodule Meeseeks.Selector.CSS.Parser do
31
31
{ element , [ ] }
32
32
end
33
33
34
- defp parse_element ( [ ',' | toks ] , element ) do
34
+ defp parse_element ( [ ~c " , " | toks ] , element ) do
35
35
element = % { element | selectors: Enum . reverse ( element . selectors ) }
36
36
{ element , toks }
37
37
end
38
38
39
- defp parse_element ( [ { :ident , namespace } , '|' | toks ] , element ) do
39
+ defp parse_element ( [ { :ident , namespace } , ~c " | " | toks ] , element ) do
40
40
selector = % Namespace { value: List . to_string ( namespace ) }
41
41
element = % { element | selectors: [ selector | element . selectors ] }
42
42
parse_element ( toks , element )
43
43
end
44
44
45
- defp parse_element ( [ '*' , '|' | toks ] , element ) do
45
+ defp parse_element ( [ ~c " * " , ~c " | " | toks ] , element ) do
46
46
selector = % Namespace { value: "*" }
47
47
element = % { element | selectors: [ selector | element . selectors ] }
48
48
parse_element ( toks , element )
@@ -54,7 +54,7 @@ defmodule Meeseeks.Selector.CSS.Parser do
54
54
parse_element ( toks , element )
55
55
end
56
56
57
- defp parse_element ( [ '*' | toks ] , element ) do
57
+ defp parse_element ( [ ~c " * " | toks ] , element ) do
58
58
selector = % Tag { value: "*" }
59
59
element = % { element | selectors: [ selector | element . selectors ] }
60
60
parse_element ( toks , element )
@@ -72,45 +72,45 @@ defmodule Meeseeks.Selector.CSS.Parser do
72
72
parse_element ( toks , element )
73
73
end
74
74
75
- defp parse_element ( [ '[' | toks ] , element ) do
75
+ defp parse_element ( [ ~c " [ " | toks ] , element ) do
76
76
{ selector , toks } = parse_attribute ( toks )
77
77
element = % { element | selectors: [ selector | element . selectors ] }
78
78
parse_element ( toks , element )
79
79
end
80
80
81
- defp parse_element ( [ ':' | toks ] , element ) do
81
+ defp parse_element ( [ ~c " : " | toks ] , element ) do
82
82
{ selector , toks } = parse_pseudo_class ( toks )
83
83
element = % { element | selectors: [ selector | element . selectors ] }
84
84
Selector . validate! ( selector )
85
85
parse_element ( toks , element )
86
86
end
87
87
88
- defp parse_element ( [ '>' | toks ] , element ) do
88
+ defp parse_element ( [ ~c " > " | toks ] , element ) do
89
89
{ combinator_selector , toks } = parse_element ( toks )
90
90
combinator = % Combinator.ChildElements { selector: combinator_selector }
91
91
element = % { element | combinator: combinator }
92
- parse_element ( [ ',' | toks ] , element )
92
+ parse_element ( [ ~c " , " | toks ] , element )
93
93
end
94
94
95
95
defp parse_element ( [ :space | toks ] , element ) do
96
96
{ combinator_selector , toks } = parse_element ( toks )
97
97
combinator = % Combinator.DescendantElements { selector: combinator_selector }
98
98
element = % { element | combinator: combinator }
99
- parse_element ( [ ',' | toks ] , element )
99
+ parse_element ( [ ~c " , " | toks ] , element )
100
100
end
101
101
102
- defp parse_element ( [ '+' | toks ] , element ) do
102
+ defp parse_element ( [ ~c " + " | toks ] , element ) do
103
103
{ combinator_selector , toks } = parse_element ( toks )
104
104
combinator = % Combinator.NextSiblingElement { selector: combinator_selector }
105
105
element = % { element | combinator: combinator }
106
- parse_element ( [ ',' | toks ] , element )
106
+ parse_element ( [ ~c " , " | toks ] , element )
107
107
end
108
108
109
- defp parse_element ( [ '~' | toks ] , element ) do
109
+ defp parse_element ( [ ~c " ~ " | toks ] , element ) do
110
110
{ combinator_selector , toks } = parse_element ( toks )
111
111
combinator = % Combinator.NextSiblingElements { selector: combinator_selector }
112
112
element = % { element | combinator: combinator }
113
- parse_element ( [ ',' | toks ] , element )
113
+ parse_element ( [ ~c " , " | toks ] , element )
114
114
end
115
115
116
116
defp parse_element ( toks , element ) do
@@ -132,24 +132,24 @@ defmodule Meeseeks.Selector.CSS.Parser do
132
132
:value_suffix
133
133
]
134
134
135
- defp parse_attribute ( [ '^' , { :ident , attr } , ']' | toks ] ) do
135
+ defp parse_attribute ( [ ~c " ^ " , { :ident , attr } , ~c " ] " | toks ] ) do
136
136
selector = % Attribute.AttributePrefix { attribute: List . to_string ( attr ) }
137
137
{ selector , toks }
138
138
end
139
139
140
- defp parse_attribute ( [ { :ident , attr } , type , { :ident , val } , ']' | toks ] )
140
+ defp parse_attribute ( [ { :ident , attr } , type , { :ident , val } , ~c " ] " | toks ] )
141
141
when type in @ attribute_value_selector_types do
142
142
selector = attribute_value_selector ( type , List . to_string ( attr ) , List . to_string ( val ) )
143
143
{ selector , toks }
144
144
end
145
145
146
- defp parse_attribute ( [ { :ident , attr } , type , { :string , val } , ']' | toks ] )
146
+ defp parse_attribute ( [ { :ident , attr } , type , { :string , val } , ~c " ] " | toks ] )
147
147
when type in @ attribute_value_selector_types do
148
148
selector = attribute_value_selector ( type , List . to_string ( attr ) , List . to_string ( val ) )
149
149
{ selector , toks }
150
150
end
151
151
152
- defp parse_attribute ( [ { :ident , attr } , ']' | toks ] ) do
152
+ defp parse_attribute ( [ { :ident , attr } , ~c " ] " | toks ] ) do
153
153
selector = % Attribute.Attribute { attribute: List . to_string ( attr ) }
154
154
{ selector , toks }
155
155
end
@@ -185,15 +185,15 @@ defmodule Meeseeks.Selector.CSS.Parser do
185
185
{ selector , toks }
186
186
end
187
187
188
- defp parse_pseudo_class_args ( ' not' , toks ) do
188
+ defp parse_pseudo_class_args ( ~c " not" , toks ) do
189
189
parse_not_args ( toks , 0 , [ ] )
190
190
end
191
191
192
192
defp parse_pseudo_class_args ( type , toks ) do
193
193
parse_pseudo_class_args ( type , toks , [ ] )
194
194
end
195
195
196
- defp parse_pseudo_class_args ( _type , [ ')' | toks ] , args ) do
196
+ defp parse_pseudo_class_args ( _type , [ ~c " ) " | toks ] , args ) do
197
197
{ Enum . reverse ( args ) , toks }
198
198
end
199
199
@@ -243,15 +243,15 @@ defmodule Meeseeks.Selector.CSS.Parser do
243
243
|> String . to_integer ( )
244
244
end
245
245
246
- defp parse_not_args ( [ ')' | toks ] , 0 , acc ) do
246
+ defp parse_not_args ( [ ~c " ) " | toks ] , 0 , acc ) do
247
247
tokens = Enum . reverse ( acc )
248
248
selectors = parse_elements ( tokens )
249
249
250
250
{ [ selectors ] , toks }
251
251
end
252
252
253
- defp parse_not_args ( [ ')' | toks ] , depth , acc ) do
254
- parse_not_args ( toks , depth - 1 , [ ')' | acc ] )
253
+ defp parse_not_args ( [ ~c " ) " | toks ] , depth , acc ) do
254
+ parse_not_args ( toks , depth - 1 , [ ~c " ) " | acc ] )
255
255
end
256
256
257
257
defp parse_not_args ( [ { :function , _type } = tok | toks ] , depth , acc ) do
@@ -264,31 +264,31 @@ defmodule Meeseeks.Selector.CSS.Parser do
264
264
265
265
defp pseudo_class_selector ( type , args ) do
266
266
case type do
267
- ' first-child' ->
267
+ ~c " first-child" ->
268
268
% PseudoClass.FirstChild { args: args }
269
269
270
- ' first-of-type' ->
270
+ ~c " first-of-type" ->
271
271
% PseudoClass.FirstOfType { args: args }
272
272
273
- ' last-child' ->
273
+ ~c " last-child" ->
274
274
% PseudoClass.LastChild { args: args }
275
275
276
- ' last-of-type' ->
276
+ ~c " last-of-type" ->
277
277
% PseudoClass.LastOfType { args: args }
278
278
279
- ' not' ->
279
+ ~c " not" ->
280
280
% PseudoClass.Not { args: args }
281
281
282
- ' nth-child' ->
282
+ ~c " nth-child" ->
283
283
% PseudoClass.NthChild { args: args }
284
284
285
- ' nth-last-child' ->
285
+ ~c " nth-last-child" ->
286
286
% PseudoClass.NthLastChild { args: args }
287
287
288
- ' nth-last-of-type' ->
288
+ ~c " nth-last-of-type" ->
289
289
% PseudoClass.NthLastOfType { args: args }
290
290
291
- ' nth-of-type' ->
291
+ ~c " nth-of-type" ->
292
292
% PseudoClass.NthOfType { args: args }
293
293
294
294
_ ->
0 commit comments