summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/colors/lib/colors.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/colors/lib/colors.js')
-rw-r--r--deps/npm/node_modules/colors/lib/colors.js130
1 files changed, 72 insertions, 58 deletions
diff --git a/deps/npm/node_modules/colors/lib/colors.js b/deps/npm/node_modules/colors/lib/colors.js
index 823e3ddd0d..7ca90fa903 100644
--- a/deps/npm/node_modules/colors/lib/colors.js
+++ b/deps/npm/node_modules/colors/lib/colors.js
@@ -33,35 +33,45 @@ module['exports'] = colors;
colors.themes = {};
+var util = require('util');
var ansiStyles = colors.styles = require('./styles');
var defineProps = Object.defineProperties;
+var newLineRegex = new RegExp(/[\r\n]+/g);
-colors.supportsColor = require('./system/supports-colors');
+colors.supportsColor = require('./system/supports-colors').supportsColor;
-if (typeof colors.enabled === "undefined") {
- colors.enabled = colors.supportsColor;
+if (typeof colors.enabled === 'undefined') {
+ colors.enabled = colors.supportsColor() !== false;
}
-colors.stripColors = colors.strip = function(str){
- return ("" + str).replace(/\x1B\[\d+m/g, '');
+colors.enable = function() {
+ colors.enabled = true;
};
+colors.disable = function() {
+ colors.enabled = false;
+};
+
+colors.stripColors = colors.strip = function(str) {
+ return ('' + str).replace(/\x1B\[\d+m/g, '');
+};
-var stylize = colors.stylize = function stylize (str, style) {
+// eslint-disable-next-line no-unused-vars
+var stylize = colors.stylize = function stylize(str, style) {
if (!colors.enabled) {
return str+'';
}
return ansiStyles[style].open + str + ansiStyles[style].close;
-}
+};
var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
-var escapeStringRegexp = function (str) {
+var escapeStringRegexp = function(str) {
if (typeof str !== 'string') {
throw new TypeError('Expected a string');
}
- return str.replace(matchOperatorsRe, '\\$&');
-}
+ return str.replace(matchOperatorsRe, '\\$&');
+};
function build(_styles) {
var builder = function builder() {
@@ -74,15 +84,16 @@ function build(_styles) {
return builder;
}
-var styles = (function () {
+var styles = (function() {
var ret = {};
ansiStyles.grey = ansiStyles.gray;
- Object.keys(ansiStyles).forEach(function (key) {
- ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+ Object.keys(ansiStyles).forEach(function(key) {
+ ansiStyles[key].closeRe =
+ new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
ret[key] = {
- get: function () {
+ get: function() {
return build(this._styles.concat(key));
- }
+ },
};
});
return ret;
@@ -91,78 +102,81 @@ var styles = (function () {
var proto = defineProps(function colors() {}, styles);
function applyStyle() {
- var args = arguments;
- var argsLen = args.length;
- var str = argsLen !== 0 && String(arguments[0]);
- if (argsLen > 1) {
- for (var a = 1; a < argsLen; a++) {
- str += ' ' + args[a];
+ var args = Array.prototype.slice.call(arguments);
+
+ var str = args.map(function(arg) {
+ if (arg !== undefined && arg.constructor === String) {
+ return arg;
+ } else {
+ return util.inspect(arg);
}
- }
+ }).join(' ');
if (!colors.enabled || !str) {
return str;
}
+ var newLinesPresent = str.indexOf('\n') != -1;
+
var nestedStyles = this._styles;
var i = nestedStyles.length;
while (i--) {
var code = ansiStyles[nestedStyles[i]];
str = code.open + str.replace(code.closeRe, code.open) + code.close;
+ if (newLinesPresent) {
+ str = str.replace(newLineRegex, function(match) {
+ return code.close + match + code.open;
+ });
+ }
}
return str;
}
-function applyTheme (theme) {
+colors.setTheme = function(theme) {
+ if (typeof theme === 'string') {
+ console.log('colors.setTheme now only accepts an object, not a string. ' +
+ 'If you are trying to set a theme from a file, it is now your (the ' +
+ 'caller\'s) responsibility to require the file. The old syntax ' +
+ 'looked like colors.setTheme(__dirname + ' +
+ '\'/../themes/generic-logging.js\'); The new syntax looks like '+
+ 'colors.setTheme(require(__dirname + ' +
+ '\'/../themes/generic-logging.js\'));');
+ return;
+ }
for (var style in theme) {
- (function(style){
- colors[style] = function(str){
- if (typeof theme[style] === 'object'){
+ (function(style) {
+ colors[style] = function(str) {
+ if (typeof theme[style] === 'object') {
var out = str;
- for (var i in theme[style]){
+ for (var i in theme[style]) {
out = colors[theme[style][i]](out);
}
return out;
}
return colors[theme[style]](str);
};
- })(style)
- }
-}
-
-colors.setTheme = function (theme) {
- if (typeof theme === 'string') {
- try {
- colors.themes[theme] = require(theme);
- applyTheme(colors.themes[theme]);
- return colors.themes[theme];
- } catch (err) {
- console.log(err);
- return err;
- }
- } else {
- applyTheme(theme);
+ })(style);
}
};
function init() {
var ret = {};
- Object.keys(styles).forEach(function (name) {
+ Object.keys(styles).forEach(function(name) {
ret[name] = {
- get: function () {
+ get: function() {
return build([name]);
- }
+ },
};
});
return ret;
}
-var sequencer = function sequencer (map, str) {
- var exploded = str.split(""), i = 0;
+var sequencer = function sequencer(map, str) {
+ var exploded = str.split('');
exploded = exploded.map(map);
- return exploded.join("");
+ return exploded.join('');
};
// custom formatter methods
@@ -171,17 +185,17 @@ colors.zalgo = require('./custom/zalgo');
// maps
colors.maps = {};
-colors.maps.america = require('./maps/america');
-colors.maps.zebra = require('./maps/zebra');
-colors.maps.rainbow = require('./maps/rainbow');
-colors.maps.random = require('./maps/random')
+colors.maps.america = require('./maps/america')(colors);
+colors.maps.zebra = require('./maps/zebra')(colors);
+colors.maps.rainbow = require('./maps/rainbow')(colors);
+colors.maps.random = require('./maps/random')(colors);
for (var map in colors.maps) {
- (function(map){
- colors[map] = function (str) {
+ (function(map) {
+ colors[map] = function(str) {
return sequencer(colors.maps[map], str);
- }
- })(map)
+ };
+ })(map);
}
-defineProps(colors, init()); \ No newline at end of file
+defineProps(colors, init());