aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-07-07 20:44:20 +0100
committerMichael Williamson <mike@zwobble.org>2016-07-07 20:44:20 +0100
commitbaf9808eae3441de70a00cd043e10e0ebf06b7c0 (patch)
tree869bcc8376caf7b730f501472d507e816733e565 /lib
parentb5768bced10c6dafe8bc621c6ef01aa0bd9d975c (diff)
Add HTML path for ignoring elements
Diffstat (limited to 'lib')
-rw-r--r--lib/html-paths.js5
-rw-r--r--lib/style-reader.js28
2 files changed, 22 insertions, 11 deletions
diff --git a/lib/html-paths.js b/lib/html-paths.js
index 4021887..5a00cd8 100644
--- a/lib/html-paths.js
+++ b/lib/html-paths.js
@@ -67,3 +67,8 @@ Element.prototype.wrapNodes = function wrapNodes(nodes) {
};
exports.empty = elements([]);
+exports.ignore = {
+ wrap: function() {
+ return [];
+ }
+};
diff --git a/lib/style-reader.js b/lib/style-reader.js
index ab9a171..fe60930 100644
--- a/lib/style-reader.js
+++ b/lib/style-reader.js
@@ -177,16 +177,21 @@ function htmlPathRule() {
return htmlPaths.element(tagName, attributes, options);
});
- return lop.rules.then(
- lop.rules.zeroOrMoreWithSeparator(
- styleElementRule,
- lop.rules.sequence(
- whitespaceRule,
- lop.rules.tokenOfType("gt"),
- whitespaceRule
- )
- ),
- htmlPaths.elements
+ return lop.rules.firstOf("html path",
+ lop.rules.then(lop.rules.tokenOfType("bang"), function() {
+ return htmlPaths.ignore;
+ }),
+ lop.rules.then(
+ lop.rules.zeroOrMoreWithSeparator(
+ styleElementRule,
+ lop.rules.sequence(
+ whitespaceRule,
+ lop.rules.tokenOfType("gt"),
+ whitespaceRule
+ )
+ ),
+ htmlPaths.elements
+ )
);
}
@@ -234,7 +239,8 @@ function tokenise(string) {
{name: "close-square-bracket", regex: /\]/},
{name: "string", regex: /'([^']*)'/},
{name: "integer", regex: /([0-9]+)/},
- {name: "choice", regex: /\|/}
+ {name: "choice", regex: /\|/},
+ {name: "bang", regex: /(!)/}
]);
return tokeniser.tokenise(string);
}