You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					161 lines
				
				4.7 KiB
			
		
		
			
		
	
	
					161 lines
				
				4.7 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Generated by CoffeeScript 2.5.1
							 | 
						||
| 
								 | 
							
								var AnsiPainter,
							 | 
						||
| 
								 | 
							
								    styles,
							 | 
						||
| 
								 | 
							
								    tags,
							 | 
						||
| 
								 | 
							
								    tools,
							 | 
						||
| 
								 | 
							
								    hasProp = {}.hasOwnProperty;
							 | 
						||
| 
								 | 
							
								tools = require('./tools');
							 | 
						||
| 
								 | 
							
								tags = require('./ansiPainter/tags');
							 | 
						||
| 
								 | 
							
								styles = require('./ansiPainter/styles');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = AnsiPainter = function () {
							 | 
						||
| 
								 | 
							
								  var self;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var AnsiPainter = /*#__PURE__*/function () {
							 | 
						||
| 
								 | 
							
								    function AnsiPainter() {
							 | 
						||
| 
								 | 
							
								      _classCallCheck(this, AnsiPainter);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    _createClass(AnsiPainter, [{
							 | 
						||
| 
								 | 
							
								      key: "paint",
							 | 
						||
| 
								 | 
							
								      value: function paint(s) {
							 | 
						||
| 
								 | 
							
								        return this._replaceSpecialStrings(this._renderDom(this._parse(s)));
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "_replaceSpecialStrings",
							 | 
						||
| 
								 | 
							
								      value: function _replaceSpecialStrings(str) {
							 | 
						||
| 
								 | 
							
								        return str.replace(/&sp;/g, ' ').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/&/g, '&');
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "_parse",
							 | 
						||
| 
								 | 
							
								      value: function _parse(string) {
							 | 
						||
| 
								 | 
							
								        var injectFakeRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (injectFakeRoot) {
							 | 
						||
| 
								 | 
							
								          string = '<none>' + string + '</none>';
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return tools.toDom(string);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "_renderDom",
							 | 
						||
| 
								 | 
							
								      value: function _renderDom(dom) {
							 | 
						||
| 
								 | 
							
								        var parentStyles;
							 | 
						||
| 
								 | 
							
								        parentStyles = {
							 | 
						||
| 
								 | 
							
								          bg: 'none',
							 | 
						||
| 
								 | 
							
								          color: 'none'
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        return this._renderChildren(dom, parentStyles);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "_renderChildren",
							 | 
						||
| 
								 | 
							
								      value: function _renderChildren(children, parentStyles) {
							 | 
						||
| 
								 | 
							
								        var child, n, ret;
							 | 
						||
| 
								 | 
							
								        ret = '';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        for (n in children) {
							 | 
						||
| 
								 | 
							
								          if (!hasProp.call(children, n)) continue;
							 | 
						||
| 
								 | 
							
								          child = children[n];
							 | 
						||
| 
								 | 
							
								          ret += this._renderNode(child, parentStyles);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return ret;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "_renderNode",
							 | 
						||
| 
								 | 
							
								      value: function _renderNode(node, parentStyles) {
							 | 
						||
| 
								 | 
							
								        if (node.type === 'text') {
							 | 
						||
| 
								 | 
							
								          return this._renderTextNode(node, parentStyles);
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								          return this._renderTag(node, parentStyles);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "_renderTextNode",
							 | 
						||
| 
								 | 
							
								      value: function _renderTextNode(node, parentStyles) {
							 | 
						||
| 
								 | 
							
								        return this._wrapInStyle(node.data, parentStyles);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "_wrapInStyle",
							 | 
						||
| 
								 | 
							
								      value: function _wrapInStyle(str, style) {
							 | 
						||
| 
								 | 
							
								        return styles.color(style.color) + styles.bg(style.bg) + str + styles.none();
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "_renderTag",
							 | 
						||
| 
								 | 
							
								      value: function _renderTag(node, parentStyles) {
							 | 
						||
| 
								 | 
							
								        var currentStyles, tagStyles;
							 | 
						||
| 
								 | 
							
								        tagStyles = this._getStylesForTagName(node.name);
							 | 
						||
| 
								 | 
							
								        currentStyles = this._mixStyles(parentStyles, tagStyles);
							 | 
						||
| 
								 | 
							
								        return this._renderChildren(node.children, currentStyles);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "_mixStyles",
							 | 
						||
| 
								 | 
							
								      value: function _mixStyles() {
							 | 
						||
| 
								 | 
							
								        var final, i, key, len, style, val;
							 | 
						||
| 
								 | 
							
								        final = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {
							 | 
						||
| 
								 | 
							
								          styles[_key] = arguments[_key];
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        for (i = 0, len = styles.length; i < len; i++) {
							 | 
						||
| 
								 | 
							
								          style = styles[i];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          for (key in style) {
							 | 
						||
| 
								 | 
							
								            if (!hasProp.call(style, key)) continue;
							 | 
						||
| 
								 | 
							
								            val = style[key];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (final[key] == null || val !== 'inherit') {
							 | 
						||
| 
								 | 
							
								              final[key] = val;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return final;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "_getStylesForTagName",
							 | 
						||
| 
								 | 
							
								      value: function _getStylesForTagName(name) {
							 | 
						||
| 
								 | 
							
								        if (tags[name] == null) {
							 | 
						||
| 
								 | 
							
								          throw Error("Unknown tag name `".concat(name, "`"));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return tags[name];
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }], [{
							 | 
						||
| 
								 | 
							
								      key: "getInstance",
							 | 
						||
| 
								 | 
							
								      value: function getInstance() {
							 | 
						||
| 
								 | 
							
								        if (self._instance == null) {
							 | 
						||
| 
								 | 
							
								          self._instance = new self();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return self._instance;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "paint",
							 | 
						||
| 
								 | 
							
								      value: function paint(str) {
							 | 
						||
| 
								 | 
							
								        return self.getInstance().paint(str);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }, {
							 | 
						||
| 
								 | 
							
								      key: "strip",
							 | 
						||
| 
								 | 
							
								      value: function strip(s) {
							 | 
						||
| 
								 | 
							
								        return s.replace(/\x1b\[[0-9]+m/g, '');
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return AnsiPainter;
							 | 
						||
| 
								 | 
							
								  }();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  ;
							 | 
						||
| 
								 | 
							
								  AnsiPainter.tags = tags;
							 | 
						||
| 
								 | 
							
								  self = AnsiPainter;
							 | 
						||
| 
								 | 
							
								  return AnsiPainter;
							 | 
						||
| 
								 | 
							
								}.call(void 0);
							 |