From b963e9bca9db3f0dea1bccca6b2ece614fb2c61a Mon Sep 17 00:00:00 2001 From: Andrew Towers Date: Sat, 25 Aug 2018 01:09:26 +1000 Subject: [PATCH 1/2] test for fails --- test/html.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/html.js b/test/html.js index b390035..5613b3c 100644 --- a/test/html.js +++ b/test/html.js @@ -272,4 +272,13 @@ describe('HTML Parser', function () { root.firstChild.tagName.should.eql('my-widget'); }); }); + + describe('Custom Element multiple dash', function () { + it('parse "" tagName should be "my-new-widget"', function () { + + var root = parseHTML(''); + + root.firstChild.tagName.should.eql('my-new-widget'); + }); + }); }); From 165ee2d880e5ea99d396b9a4a6bd73f2d961e8d2 Mon Sep 17 00:00:00 2001 From: Andrew Towers Date: Sat, 25 Aug 2018 01:12:40 +1000 Subject: [PATCH 2/2] change kMarkupPattern to allow more custom element names per spec --- src/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index bf68ac3..50d64e9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -550,7 +550,8 @@ export class Matcher { } } -const kMarkupPattern = /)-->|<(\/?)([a-z][a-z0-9]*-?[a-z0-9]*)\s*([^>]*?)(\/?)>/ig; +// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name +const kMarkupPattern = /)-->|<(\/?)([a-z][-.0-9_a-z]*)\s*([^>]*?)(\/?)>/ig; const kAttributePattern = /(^|\s)(id|class)\s*=\s*("([^"]+)"|'([^']+)'|(\S+))/ig; const kSelfClosingElements = { meta: true,