From 97435edb329ebbb39b0f45b4fe0bdc059491fa98 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 19 Nov 2016 11:48:53 +0000 Subject: Remove cssClassName from tokeniser --- lib/style-reader.js | 15 ++++++++------- lib/styles/parser/tokeniser.js | 5 +++-- test/styles/parser/tokeniser.tests.js | 2 +- 3 files changed, 12 insertions(+), 10 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+/}, diff --git a/test/styles/parser/tokeniser.tests.js b/test/styles/parser/tokeniser.tests.js index a7db79d..88c734b 100644 --- a/test/styles/parser/tokeniser.tests.js +++ b/test/styles/parser/tokeniser.tests.js @@ -40,7 +40,7 @@ test("arrows are tokenised", function() { }); test("classes are tokenised", function() { - assertTokens(".overture", [isToken("cssClassName", ".overture")]); + assertTokens(".overture", [isToken("dot"), isToken("identifier", "overture")]); }); test("colons are tokenised", function() { -- cgit v1.2.3