From 65471a07ee4b37b1133f9934e3a8e7d8df4b8ba9 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 22 Apr 2014 13:57:26 +0100 Subject: Add parsing for style name matchers --- lib/style-reader.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'lib') 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: /\|/} ]); -- cgit v1.2.3