diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-11-14 20:52:26 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-11-14 20:52:26 +0000 |
| commit | acc7639ea2f58df6059ab00dc3c9620460a03083 (patch) | |
| tree | 54c08f220540deb4107c63b67b48160ebe9eb06a /lib/style-reader.js | |
| parent | 6554612c305bfd75116b00ed89d0f3b104b1a3ca (diff) | |
Read separators in HTML paths
Diffstat (limited to 'lib/style-reader.js')
| -rw-r--r-- | lib/style-reader.js | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/lib/style-reader.js b/lib/style-reader.js index 95fe81d..370b5b6 100644 --- a/lib/style-reader.js +++ b/lib/style-reader.js @@ -64,13 +64,6 @@ function documentMatcherRule() { } ); - var stringRule = lop.rules.then( - lop.rules.tokenOfType("string"), - function(value) { - return value; - } - ); - var styleNameRule = lop.rules.then( lop.rules.sequence( lop.rules.tokenOfType("open-square-bracket"), @@ -157,6 +150,19 @@ function htmlPathRule() { } ); + var separatorRule = lop.rules.then( + lop.rules.optional(lop.rules.sequence( + lop.rules.tokenOfType("colon"), + lop.rules.token("identifier", "separator"), + lop.rules.tokenOfType("open-paren"), + capture(stringRule), + lop.rules.tokenOfType("close-paren") + ).head()), + function(option) { + return option.valueOrElse(""); + } + ); + var tagNamesRule = lop.rules.oneOrMoreWithSeparator( identifierRule, lop.rules.tokenOfType("choice") @@ -165,8 +171,9 @@ function htmlPathRule() { var styleElementRule = lop.rules.sequence( capture(tagNamesRule), capture(lop.rules.zeroOrMore(classRule)), - capture(freshRule) - ).map(function(tagName, classNames, fresh) { + capture(freshRule), + capture(separatorRule) + ).map(function(tagName, classNames, fresh, separator) { var attributes = {}; var options = {}; if (classNames.length > 0) { @@ -175,6 +182,9 @@ function htmlPathRule() { if (fresh) { options.fresh = true; } + if (separator) { + options.separator = separator; + } return htmlPaths.element(tagName, attributes, options); }); @@ -199,6 +209,13 @@ function htmlPathRule() { var identifierRule = lop.rules.tokenOfType("identifier"); var integerRule = lop.rules.tokenOfType("integer"); +var stringRule = lop.rules.then( + lop.rules.tokenOfType("string"), + function(value) { + return value; + } +); + var classRule = lop.rules.then( lop.rules.tokenOfType("cssClassName"), function(text) { |
