chalk/chalk.js
Sindre Sorhus cffc3552b0 init
2013-08-03 02:18:58 +02:00

64 lines
1.1 KiB
JavaScript

'use strict';
var ansi = require('ansi-styles');
var defineProps = Object.defineProperties;
var styles = (function () {
var ret = {};
Object.keys(ansi).forEach(function (key) {
var code = ansi[key];
ret[key] = {
enumerable: true,
get: function () {
this._styles.push(code);
return this;
}
};
});
return ret;
})();
var chalk = module.exports = defineProps({}, init());
function init() {
var ret = {};
Object.keys(styles).forEach(function (name) {
var code = styles[name];
ret[name] = {
enumerable: true,
get: function () {
var obj = defineProps(function self(str) {
if (!chalk.enabled) {
return str;
}
return self._styles.reduce(function (str, code) {
return code + (str || '');
}, str) + ansi['reset'];
}, styles);
obj._styles = [];
return obj[name];
}
}
});
return ret;
}
chalk.styles = ansi;
chalk.stripColor = function (str) {
return str.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/g, '');
};
chalk.supportsColor = require('has-color');
// detect mode if not set manually
if (chalk.enabled === undefined) {
chalk.enabled = chalk.supportsColor;
}