aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-11-19 11:48:53 +0000
committerMichael Williamson <mike@zwobble.org>2016-11-19 11:48:53 +0000
commit97435edb329ebbb39b0f45b4fe0bdc059491fa98 (patch)
tree5defb380245165cf7e9333cb7f54380ca0a6c965 /lib
parentc45367eb373bf52fd370f1a685f68aa05f189265 (diff)
Remove cssClassName from tokeniser
Diffstat (limited to 'lib')
-rw-r--r--lib/style-reader.js15
-rw-r--r--lib/styles/parser/tokeniser.js5
2 files changed, 11 insertions, 9 deletions
diff --git a/lib/style-reader.js b/lib/style-reader.js
index 54f4dd5..69ad71c 100644
--- a/lib/style-reader.js
+++ b/lib/style-reader.js
@@ -207,7 +207,10 @@ function htmlPathRule() {
);
}
-var identifierRule = lop.rules.tokenOfType("identifier");
+var identifierRule = lop.rules.then(
+ lop.rules.tokenOfType("identifier"),
+ decodeEscapeSequences
+);
var integerRule = lop.rules.tokenOfType("integer");
var stringRule = lop.rules.then(
@@ -227,12 +230,10 @@ function decodeEscapeSequences(value) {
});
}
-var classRule = lop.rules.then(
- lop.rules.tokenOfType("cssClassName"),
- function(text) {
- return decodeEscapeSequences(text.substring(1));
- }
-);
+var classRule = lop.rules.sequence(
+ lop.rules.tokenOfType("dot"),
+ lop.rules.sequence.capture(identifierRule)
+).head();
function parseString(rule, string) {
var tokens = tokenise(string);
diff --git a/lib/styles/parser/tokeniser.js b/lib/styles/parser/tokeniser.js
index b97facd..c60e134 100644
--- a/lib/styles/parser/tokeniser.js
+++ b/lib/styles/parser/tokeniser.js
@@ -6,9 +6,10 @@ exports.tokenise = tokenise;
var stringPrefix = "'((?:\\\\.|[^'])*)";
function tokenise(string) {
+ var identifierCharacter = "(?:[a-zA-Z\\-_]|\\\\.)";
var tokeniser = new RegexTokeniser([
- {name: "identifier", regex: /([a-zA-Z][a-zA-Z0-9\-]*)/},
- {name: "cssClassName", regex: /(\.(?:[a-zA-Z0-9\-]|\\.)+)/},
+ {name: "identifier", regex: new RegExp("(" + identifierCharacter + "(?:" + identifierCharacter + "|[0-9])*)")},
+ {name: "dot", regex: /\./},
{name: "colon", regex: /:/},
{name: "gt", regex: />/},
{name: "whitespace", regex: /\s+/},