aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-05-04 10:53:21 +0100
committerMichael Williamson <mike@zwobble.org>2013-05-04 10:53:21 +0100
commit4da89717caa2ae0ab28f7e50aa56031e39dcdf9b (patch)
treee48b4bbabac76ed69e9ffd7ec2638b266c3be4ca /lib
parent7738fefabc6f717c1d5e2459dabadea0fa588def (diff)
Add parsing for p:ordered-list(n)
Diffstat (limited to 'lib')
-rw-r--r--lib/style-reader.js37
1 files changed, 33 insertions, 4 deletions
diff --git a/lib/style-reader.js b/lib/style-reader.js
index 423d9d0..210e2ed 100644
--- a/lib/style-reader.js
+++ b/lib/style-reader.js
@@ -54,11 +54,36 @@ function documentMatcherRule() {
runRule
);
+ var listRule = sequence(
+ lop.rules.tokenOfType("colon"),
+ lop.rules.token("identifier", "ordered-list"),
+ sequence.cut(),
+ lop.rules.tokenOfType("open-paren"),
+ sequence.capture(integerRule),
+ lop.rules.tokenOfType("close-paren")
+ ).map(function(levelNumber) {
+ return function(matcher) {
+ return matcher.orderedList(levelNumber - 1);
+ };
+ });
+
+ var optionalListRule = lop.rules.then(
+ lop.rules.optional(listRule),
+ function(option) {
+ return option.valueOrElse(function() {
+ return function(matcher) {
+ return matcher;
+ }
+ });
+ }
+ );
+
return sequence(
sequence.capture(elementTypeRule),
- sequence.capture(lop.rules.optional(classRule))
- ).map(function(createMatcher, styleName) {
- return createMatcher(styleName.valueOrElse());
+ sequence.capture(lop.rules.optional(classRule)),
+ sequence.capture(optionalListRule)
+ ).map(function(createMatcher, styleName, applyList) {
+ return applyList(createMatcher(styleName.valueOrElse()));
});
}
@@ -111,6 +136,7 @@ function htmlPathRule() {
}
var identifierRule = lop.rules.tokenOfType("identifier");
+var integerRule = lop.rules.tokenOfType("integer");
var classRule = lop.rules.sequence(
lop.rules.tokenOfType("dot"),
@@ -142,7 +168,10 @@ function tokenise(string) {
{name: "colon", regex: /:/},
{name: "gt", regex: />/},
{name: "whitespace", regex: /\s+/},
- {name: "arrow", regex: /=>/}
+ {name: "arrow", regex: /=>/},
+ {name: "open-paren", regex: /\(/},
+ {name: "close-paren", regex: /\)/},
+ {name: "integer", regex: /([0-9]+)/}
]);
return tokeniser.tokenise(string);
}