mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Fixes #354 - regular expressions used in attribute values are not being handled correctly
This commit is contained in:
parent
1d480e82ca
commit
73b9268e0c
@ -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) {
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
|
||||
1
test/autotests/render/regexp-attr/expected.html
Normal file
1
test/autotests/render/regexp-attr/expected.html
Normal file
@ -0,0 +1 @@
|
||||
<div class="hello bar"></div>
|
||||
1
test/autotests/render/regexp-attr/template.marko
Normal file
1
test/autotests/render/regexp-attr/template.marko
Normal file
@ -0,0 +1 @@
|
||||
<div class='hello FOO'.replace(/foo/gi, 'bar')></div>
|
||||
1
test/autotests/render/regexp-attr/test.js
Normal file
1
test/autotests/render/regexp-attr/test.js
Normal file
@ -0,0 +1 @@
|
||||
exports.templateData = {};
|
||||
Loading…
x
Reference in New Issue
Block a user