test('Multiline', () => { modesUtil.assertTokenization(tokenizationSupport, [{ line: '<div>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START }, { startIndex:1, type: htmlTokenTypes.getTag('div') }, { startIndex:4, type: htmlTokenTypes.DELIM_START } ]}, { line: '{{#if foo}}', tokens: [ { startIndex:0, type: handlebarsTokenTypes.EMBED }, { startIndex:2, type: handlebarsTokenTypes.KEYWORD }, { startIndex:5, type: '' }, { startIndex:6, type: handlebarsTokenTypes.VARIABLE }, { startIndex:9, type: handlebarsTokenTypes.EMBED } ]}, { line: '<span>{{bar}}</span>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START }, { startIndex:1, type: htmlTokenTypes.getTag('span') }, { startIndex:5, type: htmlTokenTypes.DELIM_START }, { startIndex:6, type: handlebarsTokenTypes.EMBED }, { startIndex:8, type: handlebarsTokenTypes.VARIABLE }, { startIndex:11, type: handlebarsTokenTypes.EMBED }, { startIndex:13, type: htmlTokenTypes.DELIM_END }, { startIndex:15, type: htmlTokenTypes.getTag('span') }, { startIndex:19, type: htmlTokenTypes.DELIM_END } ]}, { line: '{{/if}}', tokens: null} ]); });
test('Multi-line HTML Expressions', () => { modesUtil.assertTokenization(tokenizationSupport, [{ line: '<script type="text/x-handlebars-template">', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START }, { startIndex:1, type: htmlTokenTypes.getTag('script') }, { startIndex:7, type: '' }, { startIndex:8, type: htmlTokenTypes.ATTRIB_NAME }, { startIndex:12, type: htmlTokenTypes.DELIM_ASSIGN }, { startIndex:13, type: htmlTokenTypes.ATTRIB_VALUE }, { startIndex:41, type: htmlTokenTypes.DELIM_START } ]}, { line: '<h1>{{ title }}</h1>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START }, { startIndex:1, type: htmlTokenTypes.getTag('h1') }, { startIndex:3, type: htmlTokenTypes.DELIM_START }, { startIndex:4, type: handlebarsTokenTypes.EMBED }, { startIndex:6, type: '' }, { startIndex:7, type: handlebarsTokenTypes.VARIABLE }, { startIndex:12, type: '' }, { startIndex:13, type: handlebarsTokenTypes.EMBED }, { startIndex:15, type: htmlTokenTypes.DELIM_END }, { startIndex:17, type: htmlTokenTypes.getTag('h1') }, { startIndex:19, type: htmlTokenTypes.DELIM_END } ]}, { line: '</script>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_END }, { startIndex:2, type: htmlTokenTypes.getTag('script') }, { startIndex:8, type: htmlTokenTypes.DELIM_END } ]} ]); });
test('HTML Expressions', () => { modesUtil.assertTokenization(tokenizationSupport, [{ line: '<script type="text/x-handlebars-template"><h1>{{ title }}</h1></script>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START, bracket: Modes.Bracket.Open }, { startIndex:1, type: htmlTokenTypes.getTag('script') }, { startIndex:7, type: '' }, { startIndex:8, type: htmlTokenTypes.ATTRIB_NAME }, { startIndex:12, type: htmlTokenTypes.DELIM_ASSIGN }, { startIndex:13, type: htmlTokenTypes.ATTRIB_VALUE }, { startIndex:41, type: htmlTokenTypes.DELIM_START, bracket: Modes.Bracket.Close }, { startIndex:42, type: htmlTokenTypes.DELIM_START, bracket: Modes.Bracket.Open }, { startIndex:43, type: htmlTokenTypes.getTag('h1') }, { startIndex:45, type: htmlTokenTypes.DELIM_START, bracket: Modes.Bracket.Close }, { startIndex:46, type: handlebarsTokenTypes.EMBED, bracket: Modes.Bracket.Open }, { startIndex:48, type: '' }, { startIndex:49, type: handlebarsTokenTypes.VARIABLE }, { startIndex:54, type: '' }, { startIndex:55, type: handlebarsTokenTypes.EMBED, bracket: Modes.Bracket.Close }, { startIndex:57, type: htmlTokenTypes.DELIM_END, bracket: Modes.Bracket.Open }, { startIndex:59, type: htmlTokenTypes.getTag('h1') }, { startIndex:61, type: htmlTokenTypes.DELIM_END, bracket: Modes.Bracket.Close }, { startIndex:62, type: htmlTokenTypes.DELIM_END, bracket: Modes.Bracket.Open }, { startIndex:64, type: htmlTokenTypes.getTag('script') }, { startIndex:70, type: htmlTokenTypes.DELIM_END, bracket: Modes.Bracket.Close } ]} ]); });
test('Blocks', () => { modesUtil.assertTokenization(tokenizationSupport, [{ line: '<ul>{{#each items}}<li>{{item}}</li>{{/each}}</ul>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START }, { startIndex:1, type: htmlTokenTypes.getTag('ul') }, { startIndex:3, type: htmlTokenTypes.DELIM_START }, { startIndex:4, type: handlebarsTokenTypes.EMBED }, { startIndex:6, type: handlebarsTokenTypes.KEYWORD }, { startIndex:11, type: '' }, { startIndex:12, type: handlebarsTokenTypes.VARIABLE }, { startIndex:17, type: handlebarsTokenTypes.EMBED }, { startIndex:19, type: htmlTokenTypes.DELIM_START }, { startIndex:20, type: htmlTokenTypes.getTag('li') }, { startIndex:22, type: htmlTokenTypes.DELIM_START }, { startIndex:23, type: handlebarsTokenTypes.EMBED }, { startIndex:25, type: handlebarsTokenTypes.VARIABLE }, { startIndex:29, type: handlebarsTokenTypes.EMBED }, { startIndex:31, type: htmlTokenTypes.DELIM_END }, { startIndex:33, type: htmlTokenTypes.getTag('li') }, { startIndex:35, type: htmlTokenTypes.DELIM_END }, { startIndex:36, type: handlebarsTokenTypes.EMBED }, { startIndex:38, type: handlebarsTokenTypes.KEYWORD }, { startIndex:43, type: handlebarsTokenTypes.EMBED }, { startIndex:45, type: htmlTokenTypes.DELIM_END }, { startIndex:47, type: htmlTokenTypes.getTag('ul') }, { startIndex:49, type: htmlTokenTypes.DELIM_END } ]} ]); });
test('Just HTML', () => { modesUtil.assertTokenization(tokenizationSupport, [{ line: '<h1>handlebars!</h1>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START }, { startIndex:1, type: htmlTokenTypes.getTag('h1') }, { startIndex:3, type: htmlTokenTypes.DELIM_START }, { startIndex:4, type: '' }, { startIndex:15, type: htmlTokenTypes.DELIM_END }, { startIndex:17, type: htmlTokenTypes.getTag('h1') }, { startIndex:19, type: htmlTokenTypes.DELIM_END } ]} ]); });
test('Expressions Sans Whitespace', () => { modesUtil.assertTokenization(tokenizationSupport, [{ line: '<h1>{{title}}</h1>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START }, { startIndex:1, type: htmlTokenTypes.getTag('h1') }, { startIndex:3, type: htmlTokenTypes.DELIM_START }, { startIndex:4, type: handlebarsTokenTypes.EMBED }, { startIndex:6, type: handlebarsTokenTypes.VARIABLE }, { startIndex:11, type: handlebarsTokenTypes.EMBED }, { startIndex:13, type: htmlTokenTypes.DELIM_END }, { startIndex:15, type: htmlTokenTypes.getTag('h1') }, { startIndex:17, type: htmlTokenTypes.DELIM_END } ]} ]); });
test('Embedded Content in HTML', () => { modesUtil.assertTokenization(tokenizationSupport, [{ line: '<script type="text/javascript">var i= 10;</script>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START }, { startIndex:1, type: htmlTokenTypes.getTag('script') }, { startIndex:7, type: '' }, { startIndex:8, type: htmlTokenTypes.ATTRIB_NAME }, { startIndex:12, type: htmlTokenTypes.DELIM_ASSIGN }, { startIndex:13, type: htmlTokenTypes.ATTRIB_VALUE }, { startIndex:30, type: htmlTokenTypes.DELIM_START }, { startIndex:31, type: 'mock-js' }, { startIndex:41, type: htmlTokenTypes.DELIM_END }, { startIndex:43, type: htmlTokenTypes.getTag('script') }, { startIndex:49, type: htmlTokenTypes.DELIM_END } ]} ]); });
test('Unescaped Expressions', () => { modesUtil.assertTokenization(tokenizationSupport, [{ line: '<h1>{{{ title }}}</h1>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START }, { startIndex:1, type: htmlTokenTypes.getTag('h1') }, { startIndex:3, type: htmlTokenTypes.DELIM_START }, { startIndex:4, type: handlebarsTokenTypes.EMBED_UNESCAPED }, { startIndex:7, type: '' }, { startIndex:8, type: handlebarsTokenTypes.VARIABLE }, { startIndex:13, type: '' }, { startIndex:14, type: handlebarsTokenTypes.EMBED_UNESCAPED }, { startIndex:17, type: htmlTokenTypes.DELIM_END }, { startIndex:19, type: htmlTokenTypes.getTag('h1') }, { startIndex:21, type: htmlTokenTypes.DELIM_END } ]} ]); });
test('Expressions', () => { modesUtil.assertTokenization(tokenizationSupport, [{ line: '<h1>{{ title }}</h1>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_START, bracket: Modes.Bracket.Open }, { startIndex:1, type: htmlTokenTypes.getTag('h1') }, { startIndex:3, type: htmlTokenTypes.DELIM_START, bracket: Modes.Bracket.Close }, { startIndex:4, type: handlebarsTokenTypes.EMBED, bracket: Modes.Bracket.Open }, { startIndex:6, type: '' }, { startIndex:7, type: handlebarsTokenTypes.VARIABLE }, { startIndex:12, type: '' }, { startIndex:13, type: handlebarsTokenTypes.EMBED, bracket: Modes.Bracket.Close }, { startIndex:15, type: htmlTokenTypes.DELIM_END, bracket: Modes.Bracket.Open }, { startIndex:17, type: htmlTokenTypes.getTag('h1') }, { startIndex:19, type: htmlTokenTypes.DELIM_END, bracket: Modes.Bracket.Close } ]} ]); });
test('Div end', () => { modesUtil.assertTokenization(tokenizationSupport, [{ line: '</div>', tokens: [ { startIndex:0, type: htmlTokenTypes.DELIM_END }, { startIndex:2, type: htmlTokenTypes.getTag('div') }, { startIndex:5, type: htmlTokenTypes.DELIM_END } ]} ]); });