fix(HtmlLexer): tag name must follow "<" without space

see http://www.w3.org/TR/html5/syntax.html#tag-open-state
This commit is contained in:
Victor Berchet 2015-12-06 13:12:41 -08:00
parent aecf68117a
commit 47f1d12731
2 changed files with 8 additions and 3 deletions

View File

@ -378,7 +378,9 @@ class _HtmlTokenizer {
let savedPos = this._savePosition();
let lowercaseTagName;
try {
this._attemptUntilFn(isNotWhitespace);
if (!isAsciiLetter(this.peek)) {
throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getLocation());
}
var nameStart = this.index;
this._consumeTagOpenStart(start);
lowercaseTagName = this.inputLowercase.substring(nameStart, this.index);

View File

@ -174,8 +174,8 @@ export function main() {
]);
});
it('should allow whitespace', () => {
expect(tokenizeAndHumanizeParts('< test >'))
it('should allow whitespace after the tag name', () => {
expect(tokenizeAndHumanizeParts('<test >'))
.toEqual([
[HtmlTokenType.TAG_OPEN_START, null, 'test'],
[HtmlTokenType.TAG_OPEN_END],
@ -438,6 +438,9 @@ export function main() {
[HtmlTokenType.TAG_CLOSE, '</p>'],
[HtmlTokenType.EOF, ''],
]);
expect(tokenizeAndHumanizeParts('< a>'))
.toEqual([[HtmlTokenType.TEXT, '< a>'], [HtmlTokenType.EOF]]);
});
// TODO(vicb): make the lexer aware of Angular expressions