Fixes #354 - regular expressions used in attribute values are not being handled correctly

This commit is contained in:
Patrick Steele-Idem 2016-08-11 16:33:20 -06:00
parent 1d480e82ca
commit 73b9268e0c
6 changed files with 16 additions and 1 deletions

View File

@ -585,6 +585,8 @@ class Generator {
this.write(']');
} else if (typeof value === 'number') {
this.write(value.toString());
} else if (value instanceof RegExp) {
this.write(value.toString());
} else if (typeof value === 'object') {
let keys = Object.keys(value);
if (keys.length === 0) {

View File

@ -31,6 +31,8 @@ class Literal extends Node {
return '[' + value.join(', ') + ']';
} else if (typeof value === 'number') {
return value.toString();
} else if (value instanceof RegExp) {
return value.toString();
} else if (typeof value === 'object') {
let keys = Object.keys(value);
if (keys.length === 0) {

View File

@ -120,7 +120,15 @@ function parseExpression(src, builder, isExpression) {
return builder.identifier(node.name);
}
case 'Literal': {
return builder.literal(node.value);
let literalValue;
if (node.regex) {
literalValue = new RegExp(node.regex.pattern, 'gi');
} else {
literalValue = node.value;
}
return builder.literal(literalValue);
}
case 'LogicalExpression': {
let left = convert(node.left);

View File

@ -0,0 +1 @@
<div class="hello bar"></div>

View File

@ -0,0 +1 @@
<div class='hello FOO'.replace(/foo/gi, 'bar')></div>

View File

@ -0,0 +1 @@
exports.templateData = {};