@@ -92,16 +92,16 @@ def __repr__(self):
92
92
return '%s[%r%s]' % (
93
93
self .__class__ .__name__ , self .parsed_tree , pseudo_element )
94
94
95
- def css (self ):
95
+ def canonical (self ):
96
96
"""Return a CSS representation for this selector (a string)
97
97
"""
98
98
if isinstance (self .pseudo_element , FunctionalPseudoElement ):
99
- pseudo_element = '::%s' % self .pseudo_element .css ()
99
+ pseudo_element = '::%s' % self .pseudo_element .canonical ()
100
100
elif self .pseudo_element :
101
101
pseudo_element = '::%s' % self .pseudo_element
102
102
else :
103
103
pseudo_element = ''
104
- res = '%s%s' % (self .parsed_tree .css (), pseudo_element )
104
+ res = '%s%s' % (self .parsed_tree .canonical (), pseudo_element )
105
105
if len (res ) > 1 :
106
106
res = res .lstrip ('*' )
107
107
return res
@@ -130,8 +130,8 @@ def __repr__(self):
130
130
return '%s[%r.%s]' % (
131
131
self .__class__ .__name__ , self .selector , self .class_name )
132
132
133
- def css (self ):
134
- return '%s.%s' % (self .selector .css (), self .class_name )
133
+ def canonical (self ):
134
+ return '%s.%s' % (self .selector .canonical (), self .class_name )
135
135
136
136
def specificity (self ):
137
137
a , b , c = self .selector .specificity ()
@@ -168,7 +168,7 @@ def __repr__(self):
168
168
def argument_types (self ):
169
169
return [token .type for token in self .arguments ]
170
170
171
- def css (self ):
171
+ def canonical (self ):
172
172
args = '' .join (token .css () for token in self .arguments )
173
173
return '%s(%s)' % (self .name , args )
174
174
@@ -195,9 +195,9 @@ def __repr__(self):
195
195
def argument_types (self ):
196
196
return [token .type for token in self .arguments ]
197
197
198
- def css (self ):
198
+ def canonical (self ):
199
199
args = '' .join (token .css () for token in self .arguments )
200
- return '%s:%s(%s)' % (self .selector .css (), self .name , args )
200
+ return '%s:%s(%s)' % (self .selector .canonical (), self .name , args )
201
201
202
202
def specificity (self ):
203
203
a , b , c = self .selector .specificity ()
@@ -217,8 +217,8 @@ def __repr__(self):
217
217
return '%s[%r:%s]' % (
218
218
self .__class__ .__name__ , self .selector , self .ident )
219
219
220
- def css (self ):
221
- return '%s:%s' % (self .selector .css (), self .ident )
220
+ def canonical (self ):
221
+ return '%s:%s' % (self .selector .canonical (), self .ident )
222
222
223
223
def specificity (self ):
224
224
a , b , c = self .selector .specificity ()
@@ -238,9 +238,11 @@ def __repr__(self):
238
238
return '%s[%r:not(%r)]' % (
239
239
self .__class__ .__name__ , self .selector , self .subselector )
240
240
241
- def css (self ):
242
- return '%s:not(%s)' % (self .selector .css (),
243
- self .subselector .css ())
241
+ def canonical (self ):
242
+ subsel = self .subselector .canonical ()
243
+ if len (subsel ) > 1 :
244
+ subsel = subsel .lstrip ('*' )
245
+ return '%s:not(%s)' % (self .selector .canonical (), subsel )
244
246
245
247
def specificity (self ):
246
248
a1 , b1 , c1 = self .selector .specificity ()
@@ -272,7 +274,7 @@ def __repr__(self):
272
274
self .__class__ .__name__ , self .selector , attrib ,
273
275
self .operator , self .value .value )
274
276
275
- def css (self ):
277
+ def canonical (self ):
276
278
if self .namespace :
277
279
attrib = '%s|%s' % (self .namespace , self .attrib )
278
280
else :
@@ -283,7 +285,7 @@ def css(self):
283
285
else :
284
286
op = '%s%s%s' % (attrib , self .operator , self .value .css ())
285
287
286
- return '%s[%s]' % (self .selector .css (), op )
288
+ return '%s[%s]' % (self .selector .canonical (), op )
287
289
288
290
def specificity (self ):
289
291
a , b , c = self .selector .specificity ()
@@ -303,9 +305,9 @@ def __init__(self, namespace=None, element=None):
303
305
self .element = element
304
306
305
307
def __repr__ (self ):
306
- return '%s[%s]' % (self .__class__ .__name__ , self .css ())
308
+ return '%s[%s]' % (self .__class__ .__name__ , self .canonical ())
307
309
308
- def css (self ):
310
+ def canonical (self ):
309
311
element = self .element or '*'
310
312
if self .namespace :
311
313
element = '%s|%s' % (self .namespace , element )
@@ -330,8 +332,8 @@ def __repr__(self):
330
332
return '%s[%r#%s]' % (
331
333
self .__class__ .__name__ , self .selector , self .id )
332
334
333
- def css (self ):
334
- return '%s#%s' % (self .selector .css (), self .id )
335
+ def canonical (self ):
336
+ return '%s#%s' % (self .selector .canonical (), self .id )
335
337
336
338
def specificity (self ):
337
339
a , b , c = self .selector .specificity ()
@@ -354,9 +356,12 @@ def __repr__(self):
354
356
return '%s[%r %s %r]' % (
355
357
self .__class__ .__name__ , self .selector , comb , self .subselector )
356
358
357
- def css (self ):
358
- return '%s %s %s' % (self .selector .css (),
359
- self .combinator , self .subselector .css ())
359
+ def canonical (self ):
360
+ subsel = self .subselector .canonical ()
361
+ if len (subsel ) > 1 :
362
+ subsel = subsel .lstrip ('*' )
363
+ return '%s %s %s' % (
364
+ self .selector .canonical (), self .combinator , subsel )
360
365
361
366
def specificity (self ):
362
367
a1 , b1 , c1 = self .selector .specificity ()
0 commit comments