summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-14 19:27:39 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-14 19:27:39 +0100
commit7aab2c502354a2dcfed9331597d0652be03ffdae (patch)
treee41960c9e85a538cda6800f51e80e29564fd3763
parent1cd9f96c6f794c69197d79306d328d3b8bcd9c46 (diff)
Remove unused module
-rw-r--r--lib/html-generator.js112
-rw-r--r--tests/html-generator.tests.js94
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(), "&lt;");
- });
-
- 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="&lt;" />');
- });
-
- 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>");
- });
-});