aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/style-reader.js14
-rw-r--r--test/style-reader.tests.js7
2 files changed, 18 insertions, 3 deletions
diff --git a/lib/style-reader.js b/lib/style-reader.js
index 370b5b6..0f2efc5 100644
--- a/lib/style-reader.js
+++ b/lib/style-reader.js
@@ -208,11 +208,19 @@ function htmlPathRule() {
var identifierRule = lop.rules.tokenOfType("identifier");
var integerRule = lop.rules.tokenOfType("integer");
-
+
+var escapeSequences = {
+ "n": "\n",
+ "r": "\r",
+ "t": "\t"
+};
+
var stringRule = lop.rules.then(
lop.rules.tokenOfType("string"),
function(value) {
- return value;
+ return value.replace(/\\(.)/g, function(match, code) {
+ return escapeSequences[code] || code;
+ });
}
);
@@ -257,7 +265,7 @@ function tokenise(string) {
{name: "close-paren", regex: /\)/},
{name: "open-square-bracket", regex: /\[/},
{name: "close-square-bracket", regex: /\]/},
- {name: "string", regex: /'([^']*)'/},
+ {name: "string", regex: /'((?:\\.|[^'])*)'/},
{name: "integer", regex: /([0-9]+)/},
{name: "choice", regex: /\|/},
{name: "bang", regex: /(!)/}
diff --git a/test/style-reader.tests.js b/test/style-reader.tests.js
index b4363f0..3fb5f1f 100644
--- a/test/style-reader.tests.js
+++ b/test/style-reader.tests.js
@@ -67,6 +67,13 @@ test('styleReader.readHtmlPath', {
]);
assertHtmlPath("p:separator('x')", expected);
},
+
+ 'reads separator with escape sequence': function() {
+ var expected = htmlPaths.elements([
+ htmlPaths.element("p", {}, {separator: "\r\n\t\'\\"})
+ ]);
+ assertHtmlPath("p:separator('\\r\\n\\t\\'\\\\')", expected);
+ },
'reads ignore element': function() {
assertHtmlPath("!", htmlPaths.ignore);