diff options
Diffstat (limited to 'lib/style-reader.js')
| -rw-r--r-- | lib/style-reader.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/style-reader.js b/lib/style-reader.js index 2d75016..244e256 100644 --- a/lib/style-reader.js +++ b/lib/style-reader.js @@ -60,6 +60,26 @@ function documentMatcherRule() { } ); + var stringRule = lop.rules.then( + lop.rules.tokenOfType("string"), + function(value) { + return value.substring(1, value.length - 1); + } + ); + + var styleNameRule = lop.rules.then( + lop.rules.sequence( + lop.rules.tokenOfType("open-square-bracket"), + lop.rules.token("identifier", "name"), + lop.rules.tokenOfType("equals"), + lop.rules.sequence.capture(stringRule), + lop.rules.tokenOfType("close-square-bracket") + ).head(), + function(styleName) { + return {styleName: styleName}; + } + ); + var listTypeRule = lop.rules.firstOf("list type", identifierToConstant("ordered-list", {isOrdered: true}), @@ -82,6 +102,7 @@ function documentMatcherRule() { }); var matcherSuffix = lop.rules.firstOf("matcher suffix", styleIdRule, + styleNameRule, listRule ); var matcherSuffixes = lop.rules.zeroOrMore(matcherSuffix); @@ -185,8 +206,12 @@ function tokenise(string) { {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: /\|/} ]); |
