fix escaping of %-prefixed names

pull/864/head
Rich Harris 7 years ago
parent 6436886500
commit dc3785c1e2

@ -1,2 +1 @@
--bail
test/test.js

@ -344,18 +344,21 @@ export default function dom(
let result = builder
.toString()
.replace(/%(\w+(?:-\w+)?)/gm, (match: string, name: string) => {
return generator.templateVars.get(name);
})
.replace(/(@+)(\w*)/g, (match: string, sigil: string, name: string) => {
if (sigil !== '@') return sigil.slice(1) + name;
if (name in shared) {
if (options.dev && `${name}Dev` in shared) name = `${name}Dev`;
usedHelpers.add(name);
.replace(/(%+|@+)(\w*(?:-\w*)?)/g, (match: string, sigil: string, name: string) => {
if (sigil === '@') {
if (name in shared) {
if (options.dev && `${name}Dev` in shared) name = `${name}Dev`;
usedHelpers.add(name);
}
return generator.alias(name);
}
if (sigil === '%') {
return generator.templateVars.get(name);
}
return generator.alias(name);
return sigil.slice(1) + name;
});
let helpers;

@ -3,7 +3,7 @@ export function stringify(data: string, options = {}) {
}
export function escape(data: string, { onlyEscapeAtSymbol = false } = {}) {
return data.replace(onlyEscapeAtSymbol ? /(@+)/g : /(@+|#+)/g, (match: string) => {
return data.replace(onlyEscapeAtSymbol ? /(%+|@+)/g : /(%+|@+|#+)/g, (match: string) => {
return match + match[0];
});
}

@ -1,3 +1,7 @@
export default {
html: `@@x`
html: `
@@x
%1
%%2
`
};
Loading…
Cancel
Save