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
"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); |