| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | "use strict";// Generated by CoffeeScript 2.5.1var cloneDeep, htmlparser, isPlainObject, merge, _objectToDom, self;htmlparser = require('htmlparser2');var _require = require('dom-converter');_objectToDom = _require.objectToDom;merge = require('lodash/merge');cloneDeep = require('lodash/cloneDeep');isPlainObject = require('lodash/isPlainObject');module.exports = self = {  repeatString: function repeatString(str, times) {    var i, j, output, ref;    output = '';    for (i = j = 0, ref = times; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {      output += str;    }    return output;  },  cloneAndMergeDeep: function cloneAndMergeDeep(base, toAppend) {    return merge(cloneDeep(base), toAppend);  },  toDom: function toDom(subject) {    if (typeof subject === 'string') {      return self.stringToDom(subject);    } else if (isPlainObject(subject)) {      return self._objectToDom(subject);    } else {      throw Error("tools.toDom() only supports strings and objects");    }  },  stringToDom: function stringToDom(string) {    var handler, parser;    handler = new htmlparser.DomHandler();    parser = new htmlparser.Parser(handler);    parser.write(string);    parser.end();    return handler.dom;  },  _fixQuotesInDom: function _fixQuotesInDom(input) {    var j, len, node;    if (Array.isArray(input)) {      for (j = 0, len = input.length; j < len; j++) {        node = input[j];        self._fixQuotesInDom(node);      }      return input;    }    node = input;    if (node.type === 'text') {      return node.data = self._quoteNodeText(node.data);    } else {      return self._fixQuotesInDom(node.children);    }  },  objectToDom: function objectToDom(o) {    if (!Array.isArray(o)) {      if (!isPlainObject(o)) {        throw Error("objectToDom() only accepts a bare object or an array");      }    }    return self._fixQuotesInDom(_objectToDom(o));  },  quote: function quote(str) {    return String(str).replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/\ /g, '&sp;').replace(/\n/g, '<br />');  },  _quoteNodeText: function _quoteNodeText(text) {    return String(text).replace(/\&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/\ /g, '&sp;').replace(/\n/g, "&nl;");  },  getCols: function getCols() {    var cols, tty; // Based on https://github.com/jonschlinkert/window-size    tty = require('tty');    cols = function () {      try {        if (tty.isatty(1) && tty.isatty(2)) {          if (process.stdout.getWindowSize) {            return process.stdout.getWindowSize(1)[0];          } else if (tty.getWindowSize) {            return tty.getWindowSize()[1];          } else if (process.stdout.columns) {            return process.stdout.columns;          }        }      } catch (error) {}    }();    if (typeof cols === 'number' && cols > 30) {      return cols;    } else {      return 80;    }  }};
 |