From b6692bb26ce954b1a210c9a0d2438c55e38ddb9e Mon Sep 17 00:00:00 2001 From: Cyrille David Date: Wed, 29 Jan 2020 16:51:41 +0100 Subject: [PATCH 1/2] Add a failing test --- tests/tokenizer-tests.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/tokenizer-tests.ts b/tests/tokenizer-tests.ts index 98538f1..00b7a0e 100644 --- a/tests/tokenizer-tests.ts +++ b/tests/tokenizer-tests.ts @@ -228,6 +228,12 @@ QUnit.test('The title element content is always text', function(assert) { assert.deepEqual(tokens, [startTag('title'), chars('"hey there'), endTag('title')]); }); +// https://github.com/emberjs/ember.js/issues/18530 +QUnit.test('Title element content is not text', function(assert) { + let tokens = tokenize("<!-- hello -->"); + assert.deepEqual(tokens, [startTag('title'), comment(' hello '), endTag('title')]); +}); + // https://html.spec.whatwg.org/multipage/semantics.html#the-style-element QUnit.test('The style element content is always text', function(assert) { let tokens = tokenize(""); From d7c91befad14dd52a4868dc9091d47fb7f48f923 Mon Sep 17 00:00:00 2001 From: Cyrille David Date: Wed, 29 Jan 2020 16:55:02 +0100 Subject: [PATCH 2/2] Do not lowercase to match opening / closing tags --- src/evented-tokenizer.ts | 4 ++-- tests/tokenizer-tests.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/evented-tokenizer.ts b/src/evented-tokenizer.ts index 80d0b4b..6d6f78b 100644 --- a/src/evented-tokenizer.ts +++ b/src/evented-tokenizer.ts @@ -115,7 +115,7 @@ export default class EventedTokenizer { } private isIgnoredEndTag(): boolean { - let tag = this.tagNameBuffer.toLowerCase(); + let tag = this.tagNameBuffer; return (tag === 'title' && this.input.substring(this.index, this.index + 8) !== '') || (tag === 'style' && this.input.substring(this.index, this.index + 8) !== '') || @@ -146,7 +146,7 @@ export default class EventedTokenizer { data() { let char = this.peek(); - let tag = this.tagNameBuffer.toLowerCase(); + let tag = this.tagNameBuffer; if (char === '<' && !this.isIgnoredEndTag()) { this.delegate.finishData(); diff --git a/tests/tokenizer-tests.ts b/tests/tokenizer-tests.ts index 00b7a0e..486098d 100644 --- a/tests/tokenizer-tests.ts +++ b/tests/tokenizer-tests.ts @@ -231,7 +231,7 @@ QUnit.test('The title element content is always text', function(assert) { // https://github.com/emberjs/ember.js/issues/18530 QUnit.test('Title element content is not text', function(assert) { let tokens = tokenize("<!-- hello -->"); - assert.deepEqual(tokens, [startTag('title'), comment(' hello '), endTag('title')]); + assert.deepEqual(tokens, [startTag('Title'), comment(' hello '), endTag('Title')]); }); // https://html.spec.whatwg.org/multipage/semantics.html#the-style-element