UNPKG

@ryusei/light

Version:

<div align="center"> <a href="https://light.ryuseijs.com"> <img alt="RyuseiLight" src="https://light.ryuseijs.com/images/svg/logo.svg" width="70"> </a>

72 lines (64 loc) 2.22 kB
import { CATEGORY_BRACKET, CATEGORY_CLASS, CATEGORY_DELIMITER, CATEGORY_FUNCTION, CATEGORY_IDENTIFIER, CATEGORY_STRING, } from '../../../constants/categories'; describe( 'javascript', () => { test( 'can tokenize template literals.', () => { expect( '`template`' ).toBeTokenized( 'javascript', [ [ CATEGORY_STRING, '`' ], [ CATEGORY_STRING, 'template' ], [ CATEGORY_STRING, '`' ], ] ); const multiline = `\`line1 line2 line3\``; expect( multiline ).toBeTokenized( 'javascript', [ [ CATEGORY_STRING, '`' ], [ CATEGORY_STRING, 'line1' ], [ CATEGORY_STRING, ' line2' ], [ CATEGORY_STRING, ' line3' ], [ CATEGORY_STRING, '`' ], ] ); } ); test( 'can tokenize template literals with escaped backticks.', () => { expect( '`template \\` \\` `' ).toBeTokenized( 'javascript', [ [ CATEGORY_STRING, '`' ], [ CATEGORY_STRING, 'template \\` \\` ' ], [ CATEGORY_STRING, '`' ], ] ); } ); test( 'can tokenize template literals with expressions.', () => { expect( '`template${ Array.isArray( expression ) }`' ).toBeTokenizedWithDepth( 'javascript', [ [ CATEGORY_STRING, '`', 1 ], [ CATEGORY_STRING, 'template', 1 ], [ CATEGORY_DELIMITER, '${', 2 ], [ CATEGORY_CLASS, 'Array', 2 ], [ CATEGORY_DELIMITER, '.', 2 ], [ CATEGORY_FUNCTION, 'isArray', 2 ], [ CATEGORY_BRACKET, '(', 2 ], [ CATEGORY_IDENTIFIER, 'expression', 2 ], [ CATEGORY_BRACKET, ')', 2 ], [ CATEGORY_DELIMITER, '}', 2 ], [ CATEGORY_STRING, '`', 1 ], ] ); } ); test( 'can tokenize nested template literals.', () => { expect( '`template${ `nested${ expression }` }`' ).toBeTokenizedWithDepth( 'javascript', [ [ CATEGORY_STRING, '`', 1 ], [ CATEGORY_STRING, 'template', 1 ], [ CATEGORY_DELIMITER, '${', 2 ], [ CATEGORY_STRING, '`', 3 ], [ CATEGORY_STRING, 'nested', 3 ], [ CATEGORY_DELIMITER, '${', 4 ], [ CATEGORY_IDENTIFIER, 'expression', 4 ], [ CATEGORY_DELIMITER, '}', 4 ], [ CATEGORY_STRING, '`', 3 ], [ CATEGORY_DELIMITER, '}', 2 ], [ CATEGORY_STRING, '`', 1 ], ] ); } ); } );