@@ -36,13 +36,13 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
3636
3737 assert . deepEqual (
3838 token ,
39- [ 'ident-token' , 'foo\\2e bar' , 0 , 6 , { value : 'foo.bar' } ] ,
39+ [ 'ident-token' , 'foo\\. bar' , 0 , 6 , { value : 'foo.bar' } ] ,
4040 ) ;
4141
4242 const raw = stringify ( token ) ;
4343 assert . deepEqual (
4444 raw ,
45- 'foo\\2e bar' ,
45+ 'foo\\. bar' ,
4646 ) ;
4747
4848 const t = tokenizer ( {
@@ -52,7 +52,7 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
5252 assert . deepEqual (
5353 collectTokens ( t ) ,
5454 [
55- [ 'ident-token' , 'foo\\2e bar' , 0 , 9 , { value : 'foo.bar' } ] ,
55+ [ 'ident-token' , 'foo\\. bar' , 0 , 7 , { value : 'foo.bar' } ] ,
5656 [ 'EOF-token' , '' , - 1 , - 1 , undefined ] ,
5757 ] ,
5858 ) ;
@@ -92,13 +92,13 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
9292
9393 assert . deepEqual (
9494 token ,
95- [ 'ident-token' , '\\2d ' , 0 , 2 , { value : '-' } ] ,
95+ [ 'ident-token' , '\\- ' , 0 , 2 , { value : '-' } ] ,
9696 ) ;
9797
9898 const raw = stringify ( token ) ;
9999 assert . deepEqual (
100100 raw ,
101- '\\2d ' ,
101+ '\\- ' ,
102102 ) ;
103103
104104 const t = tokenizer ( {
@@ -108,7 +108,7 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
108108 assert . deepEqual (
109109 collectTokens ( t ) ,
110110 [
111- [ 'ident-token' , '\\2d ' , 0 , 3 , { value : '-' } ] ,
111+ [ 'ident-token' , '\\- ' , 0 , 1 , { value : '-' } ] ,
112112 [ 'EOF-token' , '' , - 1 , - 1 , undefined ] ,
113113 ] ,
114114 ) ;
@@ -148,13 +148,13 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
148148
149149 assert . deepEqual (
150150 token ,
151- [ 'ident-token' , '--\\25other -prop' , 0 , 2 , { value : '--%other-prop' } ] ,
151+ [ 'ident-token' , '--\\%other -prop' , 0 , 2 , { value : '--%other-prop' } ] ,
152152 ) ;
153153
154154 const raw = stringify ( token ) ;
155155 assert . deepEqual (
156156 raw ,
157- '--\\25other -prop' ,
157+ '--\\%other -prop' ,
158158 ) ;
159159
160160 const t = tokenizer ( {
@@ -166,9 +166,9 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
166166 [
167167 [
168168 'ident-token' ,
169- '--\\25other -prop' ,
169+ '--\\%other -prop' ,
170170 0 ,
171- 14 ,
171+ 13 ,
172172 { value : '--%other-prop' } ,
173173 ] ,
174174 [ 'EOF-token' , '' , - 1 , - 1 , undefined ] ,
@@ -182,13 +182,13 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
182182
183183 assert . deepEqual (
184184 token ,
185- [ 'ident-token' , '--\\25 a-prop' , 0 , 2 , { value : '--%a-prop' } ] ,
185+ [ 'ident-token' , '--\\% a-prop' , 0 , 2 , { value : '--%a-prop' } ] ,
186186 ) ;
187187
188188 const raw = stringify ( token ) ;
189189 assert . deepEqual (
190190 raw ,
191- '--\\25 a-prop' ,
191+ '--\\% a-prop' ,
192192 ) ;
193193
194194 const t = tokenizer ( {
@@ -200,9 +200,9 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
200200 [
201201 [
202202 'ident-token' ,
203- '--\\25 a-prop' ,
203+ '--\\% a-prop' ,
204204 0 ,
205- 11 ,
205+ 9 ,
206206 { value : '--%a-prop' } ,
207207 ] ,
208208 [ 'EOF-token' , '' , - 1 , - 1 , undefined ] ,
@@ -252,7 +252,7 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
252252 token ,
253253 [
254254 'ident-token' ,
255- '-\\40webkit -width' ,
255+ '-\\40 webkit -width' ,
256256 0 ,
257257 2 ,
258258 { value : '-@webkit-width' } ,
@@ -262,7 +262,7 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
262262 const raw = stringify ( token ) ;
263263 assert . deepEqual (
264264 raw ,
265- '-\\40webkit -width' ,
265+ '-\\40 webkit -width' ,
266266 ) ;
267267
268268 const t = tokenizer ( {
@@ -274,9 +274,9 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
274274 [
275275 [
276276 'ident-token' ,
277- '-\\40webkit -width' ,
277+ '-\\40 webkit -width' ,
278278 0 ,
279- 15 ,
279+ 16 ,
280280 { value : '-@webkit-width' } ,
281281 ] ,
282282 [ 'EOF-token' , '' , - 1 , - 1 , undefined ] ,
@@ -311,3 +311,87 @@ import { mutateIdent, tokenizer, stringify } from '@csstools/css-tokenizer';
311311 ] ,
312312 ) ;
313313}
314+
315+ {
316+ const token = [ 'ident-token' , 'prop' , 0 , 2 , { value : 'prop' } ] ;
317+ mutateIdent ( token , '-' ) ;
318+
319+ assert . deepEqual (
320+ token ,
321+ [ 'ident-token' , '\\-' , 0 , 2 , { value : '-' } ] ,
322+ ) ;
323+
324+ const raw = stringify ( token ) ;
325+ assert . deepEqual (
326+ raw ,
327+ '\\-' ,
328+ ) ;
329+
330+ const t = tokenizer ( {
331+ css : raw ,
332+ } ) ;
333+
334+ assert . deepEqual (
335+ collectTokens ( t ) ,
336+ [
337+ [ 'ident-token' , '\\-' , 0 , 1 , { value : '-' } ] ,
338+ [ 'EOF-token' , '' , - 1 , - 1 , undefined ] ,
339+ ] ,
340+ ) ;
341+ }
342+
343+ {
344+ const token = [ 'ident-token' , 'prop' , 0 , 2 , { value : 'prop' } ] ;
345+ mutateIdent ( token , String . fromCodePoint ( 0x000 ) ) ;
346+
347+ assert . deepEqual (
348+ token ,
349+ [ 'ident-token' , String . fromCodePoint ( 0xFFFD ) , 0 , 2 , { value : String . fromCodePoint ( 0x000 ) } ] ,
350+ ) ;
351+
352+ const raw = stringify ( token ) ;
353+ assert . deepEqual (
354+ raw ,
355+ String . fromCodePoint ( 0xFFFD ) ,
356+ ) ;
357+
358+ const t = tokenizer ( {
359+ css : raw ,
360+ } ) ;
361+
362+ assert . deepEqual (
363+ collectTokens ( t ) ,
364+ [
365+ [ 'ident-token' , String . fromCodePoint ( 0xFFFD ) , 0 , 0 , { value : String . fromCodePoint ( 0xFFFD ) } ] ,
366+ [ 'EOF-token' , '' , - 1 , - 1 , undefined ] ,
367+ ] ,
368+ ) ;
369+ }
370+
371+ {
372+ const token = [ 'ident-token' , 'prop' , 0 , 2 , { value : 'prop' } ] ;
373+ mutateIdent ( token , 'aa' + String . fromCodePoint ( 0x000 ) ) ;
374+
375+ assert . deepEqual (
376+ token ,
377+ [ 'ident-token' , 'aa' + String . fromCodePoint ( 0xFFFD ) , 0 , 2 , { value : 'aa' + String . fromCodePoint ( 0x000 ) } ] ,
378+ ) ;
379+
380+ const raw = stringify ( token ) ;
381+ assert . deepEqual (
382+ raw ,
383+ 'aa' + String . fromCodePoint ( 0xFFFD ) ,
384+ ) ;
385+
386+ const t = tokenizer ( {
387+ css : raw ,
388+ } ) ;
389+
390+ assert . deepEqual (
391+ collectTokens ( t ) ,
392+ [
393+ [ 'ident-token' , 'aa' + String . fromCodePoint ( 0xFFFD ) , 0 , 2 , { value : 'aa' + String . fromCodePoint ( 0xFFFD ) } ] ,
394+ [ 'EOF-token' , '' , - 1 , - 1 , undefined ] ,
395+ ] ,
396+ ) ;
397+ }
0 commit comments