aboutsummaryrefslogtreecommitdiff
path: root/lib/styles/parser/tokeniser.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/styles/parser/tokeniser.js')
-rw-r--r--lib/styles/parser/tokeniser.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/styles/parser/tokeniser.js b/lib/styles/parser/tokeniser.js
new file mode 100644
index 0000000..2ada818
--- /dev/null
+++ b/lib/styles/parser/tokeniser.js
@@ -0,0 +1,25 @@
+var lop = require("lop");
+var RegexTokeniser = lop.RegexTokeniser;
+
+exports.tokenise = tokenise;
+
+function tokenise(string) {
+ var tokeniser = new RegexTokeniser([
+ {name: "identifier", regex: /([a-zA-Z][a-zA-Z0-9\-]*)/},
+ {name: "cssClassName", regex: /(\.(?:[a-zA-Z0-9\-]|\\.)+)/},
+ {name: "colon", regex: /:/},
+ {name: "gt", regex: />/},
+ {name: "whitespace", regex: /\s+/},
+ {name: "arrow", regex: /=>/},
+ {name: "equals", regex: /=/},
+ {name: "open-paren", regex: /\(/},
+ {name: "close-paren", regex: /\)/},
+ {name: "open-square-bracket", regex: /\[/},
+ {name: "close-square-bracket", regex: /\]/},
+ {name: "string", regex: /'((?:\\.|[^'])*)'/},
+ {name: "integer", regex: /([0-9]+)/},
+ {name: "choice", regex: /\|/},
+ {name: "bang", regex: /(!)/}
+ ]);
+ return tokeniser.tokenise(string);
+}