From 53e7181e009efcdcad182d485972bfbfda982fc0 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 29 Mar 2013 21:36:57 +0000 Subject: Allow HTML elements to be reused in HTML generation --- lib/html-generator.js | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'lib/html-generator.js') 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, '>'); } + +function findIndex(array, predicate) { + for (var i = 0; i < array.length; i++) { + if (predicate(array[i])) { + return i; + } + } + return -1; +} -- cgit v1.2.3