aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-05-04 16:13:56 +0100
committerMichael Williamson <mike@zwobble.org>2013-05-04 16:13:56 +0100
commitefca7fab18dfc9d6cc384bd133ecb57016784260 (patch)
tree8daaf8ff47bfe6cd3deed07b1395d0bec82b3c82 /lib
parent8cf5cf90366a4f5f8e0efaf3bb39c0c4f8f512e0 (diff)
Allow HTML path element part to match multiple tag names
Diffstat (limited to 'lib')
-rw-r--r--lib/html-generator.js2
-rw-r--r--lib/html-paths.js29
2 files changed, 25 insertions, 6 deletions
diff --git a/lib/html-generator.js b/lib/html-generator.js
index 3705767..62c58a8 100644
--- a/lib/html-generator.js
+++ b/lib/html-generator.js
@@ -47,7 +47,7 @@ function HtmlGenerator() {
}
function stylePartMatchesStackElement(stylePart, stackElement) {
- return stackElement && stylePart.tagName === stackElement.tagName;
+ return stackElement && stylePart.matchesElement(stackElement);
}
function open(htmlPathElement) {
diff --git a/lib/html-paths.js b/lib/html-paths.js
index 1d3b1f4..9ecb6dd 100644
--- a/lib/html-paths.js
+++ b/lib/html-paths.js
@@ -20,10 +20,29 @@ function elements(elementStyles) {
function element(tagName, attributes, options) {
options = options || {};
- return {
- tagName: tagName,
- attributes: attributes || {},
- fresh: options.fresh
- };
+ return new Element(tagName, attributes, options);
}
+function Element(tagName, attributes, options) {
+ var tagNames = {};
+ if (_.isArray(tagName)) {
+ tagName.forEach(function(tagName) {
+ tagNames[tagName] = true;
+ });
+ tagName = tagName[0];
+ } else {
+ tagNames[tagName] = true;
+ }
+
+ this.tagName = tagName;
+ this.tagNames = tagNames;
+ this.attributes = attributes || {};
+ this.fresh = options.fresh;
+}
+
+Element.prototype.matchesElement = function(element) {
+ return this.tagNames[element.tagName];
+}
+
+
+