diff --git a/src/generators/server-side-rendering/visitors/Component.ts b/src/generators/server-side-rendering/visitors/Component.ts index 4843010fcb..a5cef9120f 100644 --- a/src/generators/server-side-rendering/visitors/Component.ts +++ b/src/generators/server-side-rendering/visitors/Component.ts @@ -6,7 +6,7 @@ import { AppendTarget } from '../interfaces'; import { Node } from '../../../interfaces'; import getObject from '../../../utils/getObject'; import getTailSnippet from '../../../utils/getTailSnippet'; -import { stringify } from '../../../utils/stringify'; +import { escape, escapeTemplate, stringify } from '../../../utils/stringify'; export default function visitComponent( generator: SsrGenerator, @@ -14,7 +14,9 @@ export default function visitComponent( node: Node ) { function stringifyAttribute(chunk: Node) { - if (chunk.type === 'Text') return chunk.data; + if (chunk.type === 'Text') { + return escapeTemplate(escape(chunk.data)); + } if (chunk.type === 'MustacheTag') { block.contextualise(chunk.expression); const { snippet } = chunk.metadata; diff --git a/src/generators/server-side-rendering/visitors/Text.ts b/src/generators/server-side-rendering/visitors/Text.ts index 4d305f73da..ecb37e433c 100644 --- a/src/generators/server-side-rendering/visitors/Text.ts +++ b/src/generators/server-side-rendering/visitors/Text.ts @@ -1,6 +1,6 @@ import { SsrGenerator } from '../index'; import Block from '../Block'; -import { escape, escapeHTML } from '../../../utils/stringify'; +import { escape, escapeHTML, escapeTemplate } from '../../../utils/stringify'; import { Node } from '../../../interfaces'; export default function visitText( @@ -8,7 +8,7 @@ export default function visitText( block: Block, node: Node ) { - let text = escape(node.data).replace(/(\${|`|\\)/g, '\\$1'); + let text = node.data; if ( !node.parent || node.parent.type !== 'Element' || @@ -17,5 +17,5 @@ export default function visitText( // unless this Text node is inside a diff --git a/test/runtime/samples/sigil-component-attribute/Widget.html b/test/runtime/samples/sigil-component-attribute/Widget.html new file mode 100644 index 0000000000..f0136f9405 --- /dev/null +++ b/test/runtime/samples/sigil-component-attribute/Widget.html @@ -0,0 +1 @@ +