@@ -95,30 +95,41 @@ describe "Javascript grammar", ->
95
95
expect (tokens[6 ]).toEqual value : ' /' , scopes : [' source.js' , ' string.regexp.js' , ' punctuation.definition.string.end.js' ]
96
96
expect (tokens[7 ]).toEqual value : ' ]' , scopes : [' source.js' , ' meta.brace.square.js' ]
97
97
98
+ it " verifies that regular expressions have explicit count modifiers" , ->
99
+ source = fs .readFileSync (path .resolve (__dirname , ' ..' , ' grammars' , ' javascript.cson' ), ' utf8' )
100
+ expect (source .search / {,/ ).toEqual - 1
101
+
102
+ source = fs .readFileSync (path .resolve (__dirname , ' ..' , ' grammars' , ' regular expressions (javascript).cson' ), ' utf8' )
103
+ expect (source .search / {,/ ).toEqual - 1
104
+
105
+ describe " numbers" , ->
106
+ it " tokenizes hexadecimals" , ->
98
107
{tokens } = grammar .tokenizeLine (' 0x1D306' )
99
108
expect (tokens[0 ]).toEqual value : ' 0x1D306' , scopes : [' source.js' , ' constant.numeric.js' ]
100
109
101
110
{tokens } = grammar .tokenizeLine (' 0X1D306' )
102
111
expect (tokens[0 ]).toEqual value : ' 0X1D306' , scopes : [' source.js' , ' constant.numeric.js' ]
103
112
113
+ it " tokenizes binary literals" , ->
104
114
{tokens } = grammar .tokenizeLine (' 0b011101110111010001100110' )
105
115
expect (tokens[0 ]).toEqual value : ' 0b011101110111010001100110' , scopes : [' source.js' , ' constant.numeric.js' ]
106
116
107
117
{tokens } = grammar .tokenizeLine (' 0B011101110111010001100110' )
108
118
expect (tokens[0 ]).toEqual value : ' 0B011101110111010001100110' , scopes : [' source.js' , ' constant.numeric.js' ]
109
119
120
+ it " tokenizes octal literals" , ->
110
121
{tokens } = grammar .tokenizeLine (' 0o1411' )
111
122
expect (tokens[0 ]).toEqual value : ' 0o1411' , scopes : [' source.js' , ' constant.numeric.js' ]
112
123
113
124
{tokens } = grammar .tokenizeLine (' 0O1411' )
114
125
expect (tokens[0 ]).toEqual value : ' 0O1411' , scopes : [' source.js' , ' constant.numeric.js' ]
115
126
116
- it " verifies that regular expressions have explicit count modifiers " , ->
117
- source = fs . readFileSync ( path . resolve ( __dirname , ' .. ' , ' grammars ' , ' javascript.cson ' ), ' utf8 ' )
118
- expect (source . search / {, / ).toEqual - 1
127
+ it " tokenizes decimals " , ->
128
+ { tokens } = grammar . tokenizeLine ( ' 5e-10 ' )
129
+ expect (tokens[ 0 ] ).toEqual value : ' 5e-10 ' , scopes : [ ' source.js ' , ' constant.numeric.js ' ]
119
130
120
- source = fs . readFileSync ( path . resolve ( __dirname , ' .. ' , ' grammars ' , ' regular expressions (javascript).cson ' ), ' utf8 ' )
121
- expect (source . search / {, / ).toEqual - 1
131
+ { tokens } = grammar . tokenizeLine ( ' -5E+5 ' )
132
+ expect (tokens[ 0 ] ).toEqual value : ' -5E+5 ' , scopes : [ ' source.js ' , ' constant.numeric.js ' ]
122
133
123
134
describe " operators" , ->
124
135
it " tokenizes void correctly" , ->
@@ -325,6 +336,16 @@ describe "Javascript grammar", ->
325
336
expect (tokens[2 ]).toEqual value : ' extends' , scopes : [' source.js' , ' meta.class.js' , ' storage.modifier.js' ]
326
337
expect (tokens[4 ]).toEqual value : ' SomeClass' , scopes : [' source.js' , ' meta.class.js' , ' entity.name.type.js' ]
327
338
339
+ it " tokenizes constructors" , ->
340
+ {tokens } = grammar .tokenizeLine (' constructor(a, b)' )
341
+ expect (tokens[0 ]).toEqual value : ' constructor' , scopes : [' source.js' , ' entity.name.constructor.js' ]
342
+ expect (tokens[1 ]).toEqual value : ' (' , scopes : [' source.js' , ' punctuation.definition.parameters.begin.js' ]
343
+ expect (tokens[2 ]).toEqual value : ' a' , scopes : [' source.js' , ' variable.parameter.function.js' ]
344
+ expect (tokens[3 ]).toEqual value : ' ,' , scopes : [' source.js' , ' meta.object.delimiter.js' ]
345
+ expect (tokens[4 ]).toEqual value : ' ' , scopes : [' source.js' ]
346
+ expect (tokens[5 ]).toEqual value : ' b' , scopes : [' source.js' , ' variable.parameter.function.js' ]
347
+ expect (tokens[6 ]).toEqual value : ' )' , scopes : [' source.js' , ' punctuation.definition.parameters.end.js' ]
348
+
328
349
describe " ES6 import" , ->
329
350
it " Tokenizes import ... as" , ->
330
351
{tokens } = grammar .tokenizeLine (' import \' react\' as React' )
@@ -410,8 +431,34 @@ describe "Javascript grammar", ->
410
431
expect (tokens[0 ]).toEqual value : ' f' , scopes : [' source.js' , ' meta.method.js' , ' entity.name.function.js' ]
411
432
expect (tokens[1 ]).toEqual value : ' (' , scopes : [' source.js' , ' meta.method.js' , ' punctuation.definition.parameters.begin.js' ]
412
433
expect (tokens[2 ]).toEqual value : ' a' , scopes : [' source.js' , ' meta.method.js' , ' variable.parameter.function.js' ]
413
- expect (tokens[4 ]).toEqual value : ' b' , scopes : [' source.js' , ' meta.method.js' , ' variable.parameter.function.js' ]
414
- expect (tokens[5 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method.js' , ' punctuation.definition.parameters.end.js' ]
434
+ expect (tokens[3 ]).toEqual value : ' ,' , scopes : [' source.js' , ' meta.method.js' , ' meta.object.delimiter.js' ]
435
+ expect (tokens[5 ]).toEqual value : ' b' , scopes : [' source.js' , ' meta.method.js' , ' variable.parameter.function.js' ]
436
+ expect (tokens[6 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method.js' , ' punctuation.definition.parameters.end.js' ]
437
+
438
+ {tokens } = grammar .tokenizeLine (' hi({host, root = "./", plugins = [a, "b", "c", d]}) {}' )
439
+ expect (tokens[0 ]).toEqual value : ' hi' , scopes : [' source.js' , ' meta.method.js' , ' entity.name.function.js' ]
440
+ expect (tokens[1 ]).toEqual value : ' (' , scopes : [' source.js' , ' meta.method.js' , ' punctuation.definition.parameters.begin.js' ]
441
+ expect (tokens[2 ]).toEqual value : ' {' , scopes : [' source.js' , ' meta.method.js' , ' meta.brace.curly.js' ]
442
+ expect (tokens[3 ]).toEqual value : ' host' , scopes : [' source.js' , ' meta.method.js' , ' variable.parameter.function.js' ]
443
+ expect (tokens[4 ]).toEqual value : ' ,' , scopes : [' source.js' , ' meta.method.js' , ' meta.object.delimiter.js' ]
444
+ expect (tokens[6 ]).toEqual value : ' root' , scopes : [' source.js' , ' meta.method.js' , ' variable.parameter.function.js' ]
445
+ expect (tokens[8 ]).toEqual value : ' =' , scopes : [' source.js' , ' meta.method.js' , ' keyword.operator.js' ]
446
+ expect (tokens[10 ]).toEqual value : ' "' , scopes : [' source.js' , ' meta.method.js' , ' string.quoted.double.js' , ' punctuation.definition.string.begin.js' ]
447
+ expect (tokens[11 ]).toEqual value : ' ./' , scopes : [' source.js' , ' meta.method.js' , ' string.quoted.double.js' ]
448
+ expect (tokens[12 ]).toEqual value : ' "' , scopes : [' source.js' , ' meta.method.js' , ' string.quoted.double.js' , ' punctuation.definition.string.end.js' ]
449
+ expect (tokens[13 ]).toEqual value : ' ,' , scopes : [' source.js' , ' meta.method.js' , ' meta.object.delimiter.js' ]
450
+ expect (tokens[15 ]).toEqual value : ' plugins' , scopes : [' source.js' , ' meta.method.js' , ' variable.parameter.function.js' ]
451
+ expect (tokens[17 ]).toEqual value : ' =' , scopes : [' source.js' , ' meta.method.js' , ' keyword.operator.js' ]
452
+ expect (tokens[19 ]).toEqual value : ' [' , scopes : [' source.js' , ' meta.method.js' , ' meta.brace.square.js' ]
453
+ expect (tokens[20 ]).toEqual value : ' a' , scopes : [' source.js' , ' meta.method.js' , ' variable.parameter.function.js' ]
454
+ expect (tokens[21 ]).toEqual value : ' ,' , scopes : [' source.js' , ' meta.method.js' , ' meta.object.delimiter.js' ]
455
+ expect (tokens[23 ]).toEqual value : ' "' , scopes : [' source.js' , ' meta.method.js' , ' string.quoted.double.js' , ' punctuation.definition.string.begin.js' ]
456
+ expect (tokens[26 ]).toEqual value : ' ,' , scopes : [' source.js' , ' meta.method.js' , ' meta.object.delimiter.js' ]
457
+ expect (tokens[28 ]).toEqual value : ' "' , scopes : [' source.js' , ' meta.method.js' , ' string.quoted.double.js' , ' punctuation.definition.string.begin.js' ]
458
+ expect (tokens[33 ]).toEqual value : ' d' , scopes : [' source.js' , ' meta.method.js' , ' variable.parameter.function.js' ]
459
+ expect (tokens[34 ]).toEqual value : ' ]' , scopes : [' source.js' , ' meta.method.js' , ' meta.brace.square.js' ]
460
+ expect (tokens[35 ]).toEqual value : ' }' , scopes : [' source.js' , ' meta.method.js' , ' meta.brace.curly.js' ]
461
+ expect (tokens[36 ]).toEqual value : ' )' , scopes : [' source.js' , ' meta.method.js' , ' punctuation.definition.parameters.end.js' ]
415
462
416
463
it " tokenizes functions" , ->
417
464
{tokens } = grammar .tokenizeLine (' var func = function nonAnonymous(' )
0 commit comments