@@ -32,18 +32,18 @@ class LessLexer:
32
32
literals = '<>=%!/*-+&'
33
33
tokens = [
34
34
'css_ident' , 'css_dom' , 'css_class' , 'css_id' , 'css_property' ,
35
- 'css_vendor_property' , 'css_comment ' , 'css_string' , 'css_color ' ,
36
- 'css_filter ' , 'css_number ' , 'css_important ' , 'css_vendor_hack ' ,
37
- 'css_uri ' , 'css_ms_filter ' , 'css_keyframe_selector ' , 'css_media_type ' ,
38
- 'css_media_feature ' , 't_and ' , 't_not ' , 't_only ' , 'less_variable ' ,
39
- 'less_comment ' , 'less_open_format ' , 'less_when ' , 'less_and ' ,
40
- 'less_not' , 't_ws' , 't_popen' , 't_pclose' , 't_semicolon' , 't_tilde ' ,
41
- 't_colon' , 't_comma' , 't_eopen' , 't_eclose' , 't_isopen' , 't_isclose ' ,
42
- 't_bopen' , 't_bclose'
35
+ 'css_vendor_property' , 'css_user_property ' , 'css_comment ' ,
36
+ 'css_string ' , 'css_color ' , 'css_filter ' , 'css_number' , 'css_important ' ,
37
+ 'css_vendor_hack ' , 'css_uri ' , 'css_ms_filter ' , 'css_keyframe_selector ' ,
38
+ 'css_media_type ' , 'css_media_feature ' , 't_and ' , 't_not ' , 't_only ' ,
39
+ 'less_variable ' , 'less_comment ' , 'less_open_format ' , 'less_when ' ,
40
+ 'less_and' , ' less_not' , 't_ws' , 't_popen' , 't_pclose' , 't_semicolon' ,
41
+ 't_tilde' , ' t_colon' , 't_comma' , 't_eopen' , 't_eclose' , 't_isopen' ,
42
+ 't_isclose' , ' t_bopen' , 't_bclose'
43
43
]
44
44
tokens += list (set (reserved .tokens .values ()))
45
45
# Tokens with significant following whitespace
46
- significant_ws = {'css_class' , 'css_id' , 'css_dom' , 'css_property' , 'css_vendor_property' , 'css_ident' ,
46
+ significant_ws = {'css_class' , 'css_id' , 'css_dom' , 'css_property' , 'css_vendor_property' , 'css_user_property' , ' css_ident' ,
47
47
'css_number' , 'css_color' , 'css_media_type' , 'css_filter' , 'less_variable' , 't_and' , 't_not' ,
48
48
't_only' , '&' }
49
49
significant_ws .update (reserved .tokens .values ())
@@ -87,7 +87,7 @@ def t_css_number(self, t):
87
87
return t
88
88
89
89
def t_css_ident (self , t ):
90
- (r'([\-\.\#] ?'
90
+ (r'((\-|\.|\#|\-\-) ?'
91
91
'([_a-z]'
92
92
'|[\200 -\377 ]'
93
93
'|\\ \[0-9a-f]{1,6}'
@@ -132,6 +132,9 @@ def t_css_ident(self, t):
132
132
# DOM elements can't be part of property declarations, avoids ambiguity between 'rect' DOM
133
133
# element and rect() CSS function.
134
134
t .type = 'css_dom'
135
+ elif v .startswith ("--" ):
136
+ t .type = 'css_user_property'
137
+ t .lexer .in_property_decl = True
135
138
elif c == '-' :
136
139
t .type = 'css_vendor_property'
137
140
t .lexer .in_property_decl = True
0 commit comments