1 | var util = require ('util');
|
2 | var uColors = util.inspect.colors;
|
3 |
|
4 | function isNode () {
|
5 | if (typeof process !== 'undefined' && process.argv[0] === "node")
|
6 | return true;
|
7 | return false;
|
8 | }
|
9 |
|
10 | function color () {
|
11 | var args = [].slice.apply (arguments);
|
12 | var colorNames = args.shift();
|
13 | var str = args.join (' ');
|
14 |
|
15 | if (!isNode())
|
16 | return str;
|
17 | if (!colorNames)
|
18 | return str;
|
19 |
|
20 | var color_attrs = colorNames.split("+");
|
21 | var strPrefix = "", strPostfix = "";
|
22 | for (var i = 0, attr; attr = color_attrs[i]; i++) {
|
23 | strPrefix += "\033[" + uColors[attr][0] + "m";
|
24 | strPostfix += "\033[" + uColors[attr][1] + "m";
|
25 | }
|
26 | var ansi_str = strPrefix + str + strPostfix;
|
27 |
|
28 | return ansi_str;
|
29 | }
|
30 |
|
31 | var colorList = "black|red|green|yellow|blue|magenta|cyan|white";
|
32 |
|
33 | colorList.split ('|').forEach (function (colorName) {
|
34 | if (isNode ()) {
|
35 | uColors[colorName+'_bg'] = [uColors[colorName][0] + 10, 49];
|
36 | }
|
37 | color[colorName] = color.bind (color, colorName);
|
38 | });
|
39 |
|
40 | module.exports = color;
|