aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-04-01 17:41:19 +0100
committerMichael Williamson <mike@zwobble.org>2013-04-01 17:41:19 +0100
commited3b8e8d620405cd813c08ddd73cecd645d67f09 (patch)
treee3f81d8c30a7909ee3d4bf2f520bf3635f5b15c9
parentbd8b2786247308c7bd82dc3cda627a23b4898958 (diff)
Add a proper attributes value for HTML elements
-rw-r--r--lib/html-generator.js11
-rw-r--r--lib/style-reader.js5
-rw-r--r--lib/styles.js11
-rw-r--r--tests/html-generator.tests.js4
-rw-r--r--tests/style-reader.tests.js2
5 files changed, 14 insertions, 19 deletions
diff --git a/lib/html-generator.js b/lib/html-generator.js
index 065d1d2..179d6d0 100644
--- a/lib/html-generator.js
+++ b/lib/html-generator.js
@@ -79,14 +79,9 @@ function HtmlGenerator() {
function writeElement(stackElement) {
stackElement.written = true;
var element = stackElement.element;
- if (element["class"]) {
- var attributeString = util.format(' %s="%s"', "class", element["class"]);
- } else {
- var attributeString = "";
- }
- if (element.href) {
- attributeString += util.format(' href="%s"', escapeHtml(element.href));
- }
+ var attributeString = _.map(element.attributes, function(value, key) {
+ return util.format(' %s="%s"', key, value);
+ }).join("");
fragments.push(util.format("<%s%s>", element.tagName, attributeString));
}
diff --git a/lib/style-reader.js b/lib/style-reader.js
index a566826..9e23abd 100644
--- a/lib/style-reader.js
+++ b/lib/style-reader.js
@@ -33,14 +33,15 @@ function read(string) {
capture(lop.rules.zeroOrMore(classRule)),
capture(freshRule)
).map(function(tagName, classNames, fresh) {
+ var attributes = {};
var options = {};
if (classNames.length > 0) {
- options["class"] = classNames.join(" ");
+ attributes["class"] = classNames.join(" ");
}
if (fresh) {
options["fresh"] = true;
}
- return styles.element(tagName, options);
+ return styles.element(tagName, attributes, options);
});
var styleRule = lop.rules.then(
diff --git a/lib/styles.js b/lib/styles.js
index cbe36d4..737bdcb 100644
--- a/lib/styles.js
+++ b/lib/styles.js
@@ -4,8 +4,8 @@ exports.topLevelElement = topLevelElement;
exports.elements = elements;
exports.element = element;
-function topLevelElement(tagName) {
- return elements([element(tagName, {fresh: true})]);
+function topLevelElement(tagName, attributes) {
+ return elements([element(tagName, attributes, {fresh: true})]);
}
function elements(elementStyles) {
@@ -18,12 +18,11 @@ function elements(elementStyles) {
});
}
-function element(tagName, options) {
+function element(tagName, attributes, options) {
options = options || {};
return {
tagName: tagName,
- fresh: options.fresh,
- "class": options["class"],
- href: options.href
+ attributes: attributes || {},
+ fresh: options.fresh
};
}
diff --git a/tests/html-generator.tests.js b/tests/html-generator.tests.js
index c19acbe..12469ee 100644
--- a/tests/html-generator.tests.js
+++ b/tests/html-generator.tests.js
@@ -43,8 +43,8 @@ describe('HtmlGenerator', function() {
test('can leave some HTML elements for next style', function() {
var generator = new HtmlGenerator();
var listStyle = styles.elements([
- styles.element("ul", {fresh: false}),
- styles.element("li", {fresh: true})
+ styles.element("ul", {}, {fresh: false}),
+ styles.element("li", {}, {fresh: true})
])
generator.style(listStyle);
generator.text("Apple");
diff --git a/tests/style-reader.tests.js b/tests/style-reader.tests.js
index 7ec2d06..474cb9c 100644
--- a/tests/style-reader.tests.js
+++ b/tests/style-reader.tests.js
@@ -29,7 +29,7 @@ describe('styleReader.read', function() {
test('reads when element must be fresh', function() {
var expected = styles.elements([
- styles.element("p", {"fresh": true})
+ styles.element("p", {}, {"fresh": true})
])
assert.deepEqual(styleReader.read("p:fresh"), expected);
});