diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-05-04 10:53:21 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-05-04 10:53:21 +0100 |
| commit | 4da89717caa2ae0ab28f7e50aa56031e39dcdf9b (patch) | |
| tree | e48b4bbabac76ed69e9ffd7ec2638b266c3be4ca /lib | |
| parent | 7738fefabc6f717c1d5e2459dabadea0fa588def (diff) | |
Add parsing for p:ordered-list(n)
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/style-reader.js | 37 |
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); } |
