@@ -495,6 +495,80 @@ describe "Javascript grammar", ->
495495 expect (tokens[13 ]).toEqual value : ' }' , scopes : [' source.js' , ' string.quoted.template.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
496496 expect (tokens[14 ]).toEqual value : ' `' , scopes : [' source.js' , ' string.quoted.template.js' , ' punctuation.definition.string.end.js' ]
497497
498+ describe " ES6 tagged HTML string templates" , ->
499+ it " tokenizes them as strings" , ->
500+ {tokens } = grammar .tokenizeLine (' html`hey <b>${name}</b>`' )
501+ expect (tokens[0 ]).toEqual value : ' html' , scopes : [ ' source.js' , ' string.quoted.template.html.js' , ' entity.name.function.js' ]
502+ expect (tokens[1 ]).toEqual value : ' `' , scopes : [ ' source.js' , ' string.quoted.template.html.js' , ' punctuation.definition.string.begin.js' ]
503+ expect (tokens[2 ]).toEqual value : ' hey <b>' , scopes : [' source.js' , ' string.quoted.template.html.js' ]
504+ expect (tokens[3 ]).toEqual value : ' ${' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
505+ expect (tokens[4 ]).toEqual value : ' name' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' source.js.embedded.source' ]
506+ expect (tokens[5 ]).toEqual value : ' }' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
507+ expect (tokens[6 ]).toEqual value : ' </b>' , scopes : [' source.js' , ' string.quoted.template.html.js' ]
508+ expect (tokens[7 ]).toEqual value : ' `' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' punctuation.definition.string.end.js' ]
509+
510+ describe " ES6 tagged HTML string templates with expanded function name" , ->
511+ it " tokenizes them as strings" , ->
512+ {tokens } = grammar .tokenizeLine (' escapeHTML`hey <b>${name}</b>`' )
513+ expect (tokens[0 ]).toEqual value : ' escapeHTML' , scopes : [ ' source.js' , ' string.quoted.template.html.js' , ' entity.name.function.js' ]
514+ expect (tokens[1 ]).toEqual value : ' `' , scopes : [ ' source.js' , ' string.quoted.template.html.js' , ' punctuation.definition.string.begin.js' ]
515+ expect (tokens[2 ]).toEqual value : ' hey <b>' , scopes : [' source.js' , ' string.quoted.template.html.js' ]
516+ expect (tokens[3 ]).toEqual value : ' ${' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
517+ expect (tokens[4 ]).toEqual value : ' name' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' source.js.embedded.source' ]
518+ expect (tokens[5 ]).toEqual value : ' }' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
519+ expect (tokens[6 ]).toEqual value : ' </b>' , scopes : [' source.js' , ' string.quoted.template.html.js' ]
520+ expect (tokens[7 ]).toEqual value : ' `' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' punctuation.definition.string.end.js' ]
521+
522+ describe " ES6 tagged HTML string templates with expanded function name and white space" , ->
523+ it " tokenizes them as strings" , ->
524+ {tokens } = grammar .tokenizeLine (' escapeHTML `hey <b>${name}</b>`' )
525+ expect (tokens[0 ]).toEqual value : ' escapeHTML' , scopes : [ ' source.js' , ' string.quoted.template.html.js' , ' entity.name.function.js' ]
526+ expect (tokens[1 ]).toEqual value : ' ' , scopes : [ ' source.js' , ' string.quoted.template.html.js' ]
527+ expect (tokens[2 ]).toEqual value : ' `' , scopes : [ ' source.js' , ' string.quoted.template.html.js' , ' punctuation.definition.string.begin.js' ]
528+ expect (tokens[3 ]).toEqual value : ' hey <b>' , scopes : [' source.js' , ' string.quoted.template.html.js' ]
529+ expect (tokens[4 ]).toEqual value : ' ${' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
530+ expect (tokens[5 ]).toEqual value : ' name' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' source.js.embedded.source' ]
531+ expect (tokens[6 ]).toEqual value : ' }' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
532+ expect (tokens[7 ]).toEqual value : ' </b>' , scopes : [' source.js' , ' string.quoted.template.html.js' ]
533+ expect (tokens[8 ]).toEqual value : ' `' , scopes : [' source.js' , ' string.quoted.template.html.js' , ' punctuation.definition.string.end.js' ]
534+
535+ describe " ES6 tagged CSS string templates" , ->
536+ it " tokenizes them as strings" , ->
537+ {tokens } = grammar .tokenizeLine (' css`.highlight { border: ${borderSize}; }`' )
538+ expect (tokens[0 ]).toEqual value : ' css' , scopes : [ ' source.js' , ' string.quoted.template.css.js' , ' entity.name.function.js' ]
539+ expect (tokens[1 ]).toEqual value : ' `' , scopes : [ ' source.js' , ' string.quoted.template.css.js' , ' punctuation.definition.string.begin.js' ]
540+ expect (tokens[2 ]).toEqual value : ' .highlight { border: ' , scopes : [' source.js' , ' string.quoted.template.css.js' ]
541+ expect (tokens[3 ]).toEqual value : ' ${' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
542+ expect (tokens[4 ]).toEqual value : ' borderSize' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' source.js.embedded.source' ]
543+ expect (tokens[5 ]).toEqual value : ' }' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
544+ expect (tokens[6 ]).toEqual value : ' ; }' , scopes : [' source.js' , ' string.quoted.template.css.js' ]
545+ expect (tokens[7 ]).toEqual value : ' `' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' punctuation.definition.string.end.js' ]
546+
547+ describe " ES6 tagged CSS string templates with expanded function name" , ->
548+ it " tokenizes them as strings" , ->
549+ {tokens } = grammar .tokenizeLine (' escapeCSS`.highlight { border: ${borderSize}; }`' )
550+ expect (tokens[0 ]).toEqual value : ' escapeCSS' , scopes : [ ' source.js' , ' string.quoted.template.css.js' , ' entity.name.function.js' ]
551+ expect (tokens[1 ]).toEqual value : ' `' , scopes : [ ' source.js' , ' string.quoted.template.css.js' , ' punctuation.definition.string.begin.js' ]
552+ expect (tokens[2 ]).toEqual value : ' .highlight { border: ' , scopes : [' source.js' , ' string.quoted.template.css.js' ]
553+ expect (tokens[3 ]).toEqual value : ' ${' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
554+ expect (tokens[4 ]).toEqual value : ' borderSize' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' source.js.embedded.source' ]
555+ expect (tokens[5 ]).toEqual value : ' }' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
556+ expect (tokens[6 ]).toEqual value : ' ; }' , scopes : [' source.js' , ' string.quoted.template.css.js' ]
557+ expect (tokens[7 ]).toEqual value : ' `' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' punctuation.definition.string.end.js' ]
558+
559+ describe " ES6 tagged CSS string templates with expanded function name and white space" , ->
560+ it " tokenizes them as strings" , ->
561+ {tokens } = grammar .tokenizeLine (' escapeCSS `.highlight { border: ${borderSize}; }`' )
562+ expect (tokens[0 ]).toEqual value : ' escapeCSS' , scopes : [ ' source.js' , ' string.quoted.template.css.js' , ' entity.name.function.js' ]
563+ expect (tokens[1 ]).toEqual value : ' ' , scopes : [ ' source.js' , ' string.quoted.template.css.js' ]
564+ expect (tokens[2 ]).toEqual value : ' `' , scopes : [ ' source.js' , ' string.quoted.template.css.js' , ' punctuation.definition.string.begin.js' ]
565+ expect (tokens[3 ]).toEqual value : ' .highlight { border: ' , scopes : [' source.js' , ' string.quoted.template.css.js' ]
566+ expect (tokens[4 ]).toEqual value : ' ${' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
567+ expect (tokens[5 ]).toEqual value : ' borderSize' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' source.js.embedded.source' ]
568+ expect (tokens[6 ]).toEqual value : ' }' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' source.js.embedded.source' , ' punctuation.section.embedded.js' ]
569+ expect (tokens[7 ]).toEqual value : ' ; }' , scopes : [' source.js' , ' string.quoted.template.css.js' ]
570+ expect (tokens[8 ]).toEqual value : ' `' , scopes : [' source.js' , ' string.quoted.template.css.js' , ' punctuation.definition.string.end.js' ]
571+
498572 describe " ES6 class" , ->
499573 it " tokenizes class" , ->
500574 {tokens } = grammar .tokenizeLine (' class MyClass' )
0 commit comments