diff options
| author | Michael Williamson <mike@zwobble.org> | 2014-04-22 13:57:26 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2014-04-22 13:57:26 +0100 |
| commit | 65471a07ee4b37b1133f9934e3a8e7d8df4b8ba9 (patch) | |
| tree | 0800c0daf5a55442a4366066a9fbb9cd34fc7c4d /lib/style-reader.js | |
| parent | 8ec07d0d766a6d3d9b94e07b0a0fc655c18e2b20 (diff) | |
Add parsing for style name matchers
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: /\|/} ]); |
