@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
JavaScript
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 ],
] );
} );
} );