aboutsummaryrefslogtreecommitdiff
path: root/lib/styles
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-11-16 19:38:11 +0000
committerMichael Williamson <mike@zwobble.org>2016-11-16 19:38:11 +0000
commit96a56d95dcfcb58fc0257cfe33a85f264235e213 (patch)
tree9098df0ea606b32045153ece5bcbaf818df7285c /lib/styles
parent703b5b7a99969146e9a7f7101c5997a8e04b1424 (diff)
Move tokeniser into its own module
Diffstat (limited to 'lib/styles')
-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);
+}