diff --git a/lib/index.js b/lib/index.js index 7081b81..1a5b95d 100644 --- a/lib/index.js +++ b/lib/index.js @@ -270,13 +270,13 @@ export const raw = */ function element(node) { resetTokenizer() - parser._processToken(startTag(node), webNamespaces.html) + parser._processInputToken(startTag(node)) all(node.children) if (!htmlVoidElements.includes(node.tagName)) { resetTokenizer() - parser._processToken(endTag(node)) + parser._processInputToken(endTag(node)) } } @@ -286,7 +286,7 @@ export const raw = */ function text(node) { resetTokenizer() - parser._processToken({ + parser._processInputToken({ type: characterToken, chars: node.value, location: createParse5Location(node) @@ -299,7 +299,7 @@ export const raw = */ function doctype(node) { resetTokenizer() - parser._processToken({ + parser._processInputToken({ type: doctypeToken, name: 'html', forceQuirks: false, @@ -315,7 +315,7 @@ export const raw = */ function comment(node) { resetTokenizer() - parser._processToken({ + parser._processInputToken({ type: commentToken, data: node.value, location: createParse5Location(node) @@ -427,7 +427,7 @@ export const raw = token.location.endLine = posTracker.line token.location.endCol = posTracker.col + 1 token.location.endOffset = posTracker.offset + 1 - parser._processToken(token) + parser._processInputToken(token) } // Reset tokenizer: diff --git a/test.js b/test.js index 6f78176..b20841c 100644 --- a/test.js +++ b/test.js @@ -5,7 +5,7 @@ import test from 'tape' import {u} from 'unist-builder' -import {h} from 'hastscript' +import {h, s} from 'hastscript' import {unified} from 'unified' import remarkParse from 'remark-parse' import remarkRehype from 'remark-rehype' @@ -188,6 +188,14 @@ test('raw', (t) => { 'should support template nodes' ) + t.deepEqual( + raw(u('root', [h('p', [h('svg', [s('foreignObject', [h('div')])])])])), + u('root', {data: {quirksMode: false}}, [ + h('p', [h('svg', [s('foreignObject', [h('div')])])]) + ]), + 'should support HTML in SVG in HTML' + ) + t.deepEqual( raw(u('root', [u('raw', '