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.constructor === Array ? colorNames : 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 colorMod = "bold|italic|underline|inverse".split ("|");
|
32 |
|
33 | var colorList = "black|red|green|yellow|blue|magenta|cyan|white";
|
34 |
|
35 | for (var colorName in uColors) {
|
36 | if (!colorMod.indexOf (colorName)) {
|
37 | if (isNode ()) {
|
38 | uColors[colorName+'_bg'] = [uColors[colorName][0] + 10, 49];
|
39 | }
|
40 | }
|
41 | color[colorName] = color.bind (color, colorName);
|
42 | }
|
43 |
|
44 |
|
45 |
|
46 |
|
47 | module.exports = color;
|