diff options
Diffstat (limited to 'node_modules/renderkid/lib/tools.js')
-rw-r--r-- | node_modules/renderkid/lib/tools.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/node_modules/renderkid/lib/tools.js b/node_modules/renderkid/lib/tools.js new file mode 100644 index 000000000..80be44746 --- /dev/null +++ b/node_modules/renderkid/lib/tools.js @@ -0,0 +1,88 @@ +// Generated by CoffeeScript 1.9.3 +var htmlparser, object, objectToDom, self; + +htmlparser = require('htmlparser2'); + +object = require('utila').object; + +objectToDom = require('dom-converter').objectToDom; + +module.exports = self = { + repeatString: function(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; + }, + toDom: function(subject) { + if (typeof subject === 'string') { + return self.stringToDom(subject); + } else if (object.isBareObject(subject)) { + return self._objectToDom(subject); + } else { + throw Error("tools.toDom() only supports strings and objects"); + } + }, + stringToDom: function(string) { + var handler, parser; + handler = new htmlparser.DomHandler; + parser = new htmlparser.Parser(handler); + parser.write(string); + parser.end(); + return handler.dom; + }, + _fixQuotesInDom: function(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(o) { + if (!Array.isArray(o)) { + if (!object.isBareObject(o)) { + throw Error("objectToDom() only accepts a bare object or an array"); + } + } + return self._fixQuotesInDom(objectToDom(o)); + }, + quote: function(str) { + return String(str).replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/\ /g, '&sp;').replace(/\n/g, '<br />'); + }, + _quoteNodeText: function(text) { + return String(text).replace(/\&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/\ /g, '&sp;').replace(/\n/g, "&nl;"); + }, + getCols: function() { + var cols, tty; + 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 && process.stdout.rows) { + return process.stdout.rows; + } + } + } catch (_error) {} + })(); + if (typeof cols === 'number' && cols > 30) { + return cols; + } else { + return 80; + } + } +}; |