aboutsummaryrefslogtreecommitdiff
path: root/lib/html-generator.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/html-generator.js')
-rw-r--r--lib/html-generator.js27
1 files changed, 24 insertions, 3 deletions
diff --git a/lib/html-generator.js b/lib/html-generator.js
index 247ca09..5f2befa 100644
--- a/lib/html-generator.js
+++ b/lib/html-generator.js
@@ -1,5 +1,7 @@
var util = require("util");
+var _ = require("underscore");
+
exports.HtmlGenerator = HtmlGenerator;
@@ -17,10 +19,20 @@ function HtmlGenerator() {
}
function style(style) {
- popAll();
- style.forEach(function(tagName) {
- push(tagName);
+ var firstFreshPartIndex = findIndex(style, function(part) {
+ return part.fresh;
});
+
+ var partIndex = 0;
+ while (partIndex < firstFreshPartIndex && style[partIndex].tagName === stack[partIndex]) {
+ partIndex++;
+ }
+ while (stack.length > partIndex) {
+ pop();
+ }
+ for (; partIndex < style.length; partIndex++) {
+ push(style[partIndex].tagName);
+ }
}
function push(element) {
@@ -54,3 +66,12 @@ function escapeHtml(value) {
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
}
+
+function findIndex(array, predicate) {
+ for (var i = 0; i < array.length; i++) {
+ if (predicate(array[i])) {
+ return i;
+ }
+ }
+ return -1;
+}