123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- "use strict";
- // Generated by CoffeeScript 2.5.1
- var 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;
- }
- }
- };
|