diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-14 19:27:39 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-14 19:27:39 +0100 |
| commit | 7aab2c502354a2dcfed9331597d0652be03ffdae (patch) | |
| tree | e41960c9e85a538cda6800f51e80e29564fd3763 | |
| parent | 1cd9f96c6f794c69197d79306d328d3b8bcd9c46 (diff) | |
Remove unused module
| -rw-r--r-- | lib/html-generator.js | 112 | ||||
| -rw-r--r-- | tests/html-generator.tests.js | 94 |
2 files changed, 0 insertions, 206 deletions
diff --git a/lib/html-generator.js b/lib/html-generator.js deleted file mode 100644 index be5079b..0000000 --- a/lib/html-generator.js +++ /dev/null @@ -1,112 +0,0 @@ -var writers = require("./writers"); - -exports.HtmlGenerator = HtmlGenerator; - - -function HtmlGenerator(options) { - var stack = []; - var writer = writers.writer(options); - - function text(value) { - if (value.length > 0) { - writeAll(); - writer.text(value); - } - } - - function asString() { - return writer.asString(); - } - - function append(otherHtmlGenerator) { - var otherString = otherHtmlGenerator.asString(); - if (otherString.length > 0) { - writeAll(); - } - writer.append(otherString); - } - - function satisfyPath(style) { - var firstFreshPartIndex = findIndex(style, function(part) { - return part.fresh; - }, style.length); - - var partIndex = 0; - while (partIndex < firstFreshPartIndex && stylePartMatchesStackElement(style[partIndex], stack[partIndex])) { - partIndex++; - } - while (stack.length > partIndex) { - close(); - } - for (; partIndex < style.length; partIndex++) { - open(style[partIndex]); - } - } - - function appendPath(style) { - style.forEach(open); - } - - function stylePartMatchesStackElement(stylePart, stackElement) { - return stackElement && stylePart.matchesElement(stackElement); - } - - function open(htmlPathElement, options) { - var stackElement = Object.create(htmlPathElement); - stackElement.written = false; - stack.push(stackElement); - if (options && options.alwaysWrite) { - writeAll(); - } - } - - function close() { - var element = stack.pop(); - if (element.written) { - writer.close(element.tagName); - } - } - - function closeAll() { - while (stack.length > 0) { - close(); - } - } - - function writeAll() { - stack.filter(function(element) { - return !element.written; - }).forEach(writeElement); - } - - function writeElement(element) { - element.written = true; - writer.open(element.tagName, element.attributes); - } - - function selfClosing(element) { - writer.selfClosing(element.tagName, element.attributes); - } - - return { - satisfyPath: satisfyPath, - appendPath: appendPath, - text: text, - open: open, - close: close, - closeAll: closeAll, - writeAll: writeAll, - asString: asString, - append: append, - selfClosing: selfClosing - }; -} - -function findIndex(array, predicate, defaultValue) { - for (var i = 0; i < array.length; i++) { - if (predicate(array[i])) { - return i; - } - } - return defaultValue; -} diff --git a/tests/html-generator.tests.js b/tests/html-generator.tests.js deleted file mode 100644 index 522e010..0000000 --- a/tests/html-generator.tests.js +++ /dev/null @@ -1,94 +0,0 @@ -var assert = require("assert"); -var test = require("./testing").test; - -var HtmlGenerator = require("../lib/html-generator").HtmlGenerator; -var htmlPaths = require("../lib/html-paths"); - - -describe('HtmlGenerator', function() { - test('generates empty string when newly created', function() { - var generator = new HtmlGenerator(); - return assert.equal("", generator.asString()); - }); - - test('HTML-escapes text', function() { - var generator = new HtmlGenerator(); - generator.text("<"); - return assert.equal(generator.asString(), "<"); - }); - - test('asString closes all elements', function() { - var generator = new HtmlGenerator(); - generator.satisfyPath(htmlPaths.elements(["p", "span"])); - generator.text("Hello!"); - generator.closeAll(); - return assert.equal(generator.asString(), "<p><span>Hello!</span></p>"); - }); - - test('elements with no text are not generated', function() { - var generator = new HtmlGenerator(); - generator.satisfyPath(htmlPaths.elements(["p", "span"])); - generator.closeAll(); - return assert.equal(generator.asString(), ""); - }); - - test('generates empty string if text is empty string', function() { - var generator = new HtmlGenerator(); - generator.satisfyPath(htmlPaths.elements(["p", "span"])); - generator.text(""); - generator.closeAll(); - return assert.equal(generator.asString(), ""); - }); - - test('can leave all HTML elements for next style', function() { - var generator = new HtmlGenerator(); - var htmlPath = htmlPaths.elements([ - htmlPaths.element("p", {}, {fresh: false}) - ]); - generator.satisfyPath(htmlPath); - generator.text("Apple"); - generator.satisfyPath(htmlPath); - generator.text("Banana"); - generator.closeAll(); - return assert.equal(generator.asString(), "<p>AppleBanana</p>"); - }); - - test('can leave some HTML elements for next style', function() { - var generator = new HtmlGenerator(); - var listPath = htmlPaths.elements([ - htmlPaths.element("ul", {}, {fresh: false}), - htmlPaths.element("li", {}, {fresh: true}) - ]); - generator.satisfyPath(listPath); - generator.text("Apple"); - generator.satisfyPath(listPath); - generator.text("Banana"); - generator.closeAll(); - return assert.equal(generator.asString(), "<ul><li>Apple</li><li>Banana</li></ul>"); - }); - - test('renders class attribute of elements', function() { - var generator = new HtmlGenerator(); - generator.satisfyPath(htmlPaths.elements([ - htmlPaths.element("p", {"class": "tip"}) - ])); - generator.text("Hello!"); - generator.closeAll(); - return assert.equal(generator.asString(), '<p class="tip">Hello!</p>'); - }); - - test('attribute values are escaped', function() { - var generator = new HtmlGenerator(); - generator.selfClosing({tagName: "br", attributes: {"data-blah": "<"}}); - return assert.equal(generator.asString(), '<br data-blah="<" />'); - }); - - test('appendPath does not close currently-open elements', function() { - var generator = new HtmlGenerator(); - generator.satisfyPath(htmlPaths.elements(["strong"])); - generator.appendPath(htmlPaths.elements(["em"])); - generator.text("Hello!"); - generator.closeAll(); - return assert.equal(generator.asString(), "<strong><em>Hello!</em></strong>"); - }); -}); |
