Comparing version 0.1.7 to 0.2.0
181
lib/index.js
'use strict'; | ||
var defineProperties = Object.defineProperties | ||
, map = require('es5-ext/lib/Object/map') | ||
var d = require('es5-ext/lib/Object/descriptor') | ||
, extend = require('es5-ext/lib/Object/extend') | ||
, map = require('es5-ext/lib/Object/map') | ||
, reduce = require('es5-ext/lib/Object/reduce') | ||
, repeat = require('es5-ext/lib/String/prototype/repeat') | ||
, memoize = require('memoizee') | ||
, toString, codes, properties, init; | ||
, join = Array.prototype.join, defineProperty = Object.defineProperty | ||
, defineProperties = Object.defineProperties, abs = Math.abs | ||
, floor = Math.floor, max = Math.max, min = Math.min | ||
toString = function (code, str) { | ||
return '\x1b[' + code[0] + 'm' + (str || "") + '\x1b[' + code[1] + 'm'; | ||
}; | ||
, mods, proto, getFn, getMove, xtermMatch | ||
, up, down, right, left, getHeight, memoized; | ||
codes = { | ||
// styles | ||
bold: [1, 22], | ||
italic: [3, 23], | ||
underline: [4, 24], | ||
inverse: [7, 27], | ||
strike: [9, 29] | ||
}; | ||
mods = extend({ | ||
// Style | ||
bold: { _bold: [1, 22] }, | ||
italic: { _italic: [3, 23] }, | ||
underline: { _underline: [4, 24] }, | ||
inverse: { _inverse: [7, 27] }, | ||
strike: { _strike: [9, 29] } | ||
}, | ||
['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'].forEach( | ||
function (color, index) { | ||
// Color | ||
['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'] | ||
.reduce(function (obj, color, index) { | ||
// foreground | ||
codes[color] = [30 + index, 39]; | ||
obj[color] = { _fg: [30 + index, 39] }; | ||
obj[color + 'Bright'] = { _fg: [90 + index, 39] }; | ||
// background | ||
codes['bg' + color[0].toUpperCase() + color.slice(1)] = [40 + index, 49]; | ||
} | ||
); | ||
codes.gray = [90, 39]; | ||
obj['bg' + color[0].toUpperCase() + color.slice(1)] = | ||
{ _bg: [40 + index, 49] }; | ||
obj['bg' + color[0].toUpperCase() + color.slice(1) + 'Bright'] = | ||
{ _bg: [100 + index, 49] }; | ||
properties = map(codes, function (code) { | ||
return { | ||
get: function () { | ||
this.style.push(code); | ||
return this; | ||
}, | ||
enumerable: true | ||
return obj; | ||
}, {})); | ||
// Some use cli-color as: console.log(clc.red('Error!')); | ||
// Which is inefficient as on each call it configures new clc object | ||
// with memoization we reuse once created object | ||
memoized = memoize(function (scope, mod) { | ||
return defineProperty(getFn(), '_cliColorData', | ||
d(extend({}, scope._cliColorData, mod))); | ||
}); | ||
proto = Object.create(Function.prototype, extend(map(mods, function (mod) { | ||
return d.gs(function () { return memoized(this, mod); }); | ||
}), { | ||
// xterm (255) color | ||
xterm: d(memoize(function (code) { | ||
code = isNaN(code) ? 255 : min(max(code, 0), 255); | ||
return defineProperty(getFn(), '_cliColorData', | ||
d(extend({}, this._cliColorData, { | ||
_fg: [xtermMatch ? xtermMatch[code] : ('38;5;' + code), 39] | ||
}))); | ||
}, { method: 'xterm' })), | ||
bgXterm: d(memoize(function (code) { | ||
code = isNaN(code) ? 255 : min(max(code, 0), 255); | ||
return defineProperty(getFn(), '_cliColorData', | ||
d(extend({}, this._cliColorData, { | ||
_bg: [xtermMatch ? (xtermMatch[code] + 10) : ('48;5;' + code), 49] | ||
}))); | ||
}, { method: 'bgXterm' })) | ||
})); | ||
if (process.platform === 'win32') { | ||
xtermMatch = require('./_xterm-match'); | ||
} | ||
getFn = function () { | ||
var fn = function (/*…msg*/) { | ||
var data = fn._cliColorData, close = ''; | ||
return reduce(data, function (str, mod) { | ||
close = '\x1b[' + mod[1] + 'm' + close; | ||
return str + '\x1b[' + mod[0] + 'm'; | ||
}, '', true) + join.call(arguments, ' ') + close; | ||
}; | ||
}); | ||
properties.bright = { | ||
get: function () { | ||
this._bright = true; | ||
return this; | ||
}, | ||
enumerable: true | ||
fn.__proto__ = proto; | ||
return fn; | ||
}; | ||
properties.bgBright = { | ||
get: function () { | ||
this._bgBright = true; | ||
return this; | ||
}, | ||
enumerable: true | ||
}; | ||
init = function () { | ||
var o = defineProperties(function self(msg) { | ||
return self.style.reduce(function (msg, code) { | ||
if ((self._bright && (code[0] >= 30) && (code[0] < 38)) || | ||
(self._bgBright && (code[0] >= 40) && (code[0] < 48))) { | ||
code = [code[0] + 60, code[1]]; | ||
} | ||
return toString(code, msg); | ||
}, msg); | ||
}, properties); | ||
o.style = []; | ||
return o[this]; | ||
getMove = function (control) { | ||
return function (num) { | ||
num = isNaN(num) ? 0 : max(floor(num), 0); | ||
return num ? ('\x1b[' + num + control) : ''; | ||
}; | ||
}; | ||
module.exports = defineProperties(function (msg) { | ||
return msg; | ||
}, map(properties, function (code, name) { | ||
return { | ||
get: init.bind(name), | ||
enumerable: true | ||
}; | ||
})); | ||
module.exports = defineProperties(getFn(), { | ||
width: d.gs(process.stdout.getWindowSize ? function () { | ||
return process.stdout.getWindowSize()[0]; | ||
} : function () { | ||
return require('tty').getWindowSize()[1]; | ||
}), | ||
height: d.gs(getHeight = process.stdout.getWindowSize ? function () { | ||
return process.stdout.getWindowSize()[1]; | ||
} : function () { | ||
return require('tty').getWindowSize()[0]; | ||
}), | ||
reset: d.gs(function () { | ||
return repeat.call('\n', getHeight() - 1) + '\x1bc'; | ||
}), | ||
up: d(up = getMove('A')), | ||
down: d(down = getMove('B')), | ||
right: d(right = getMove('C')), | ||
left: d(left = getMove('D')), | ||
move: d(function (x, y) { | ||
x = isNaN(x) ? 0 : floor(x); | ||
y = isNaN(y) ? 0 : floor(y); | ||
return ((x > 0) ? right(x) : left(-x)) + ((y > 0) ? down(y) : up(-y)); | ||
}), | ||
moveTo: d(function (x, y) { | ||
x = isNaN(x) ? 1 : (max(floor(x), 0) + 1); | ||
y = isNaN(y) ? 1 : (max(floor(y), 0) + 1); | ||
return '\x1b[' + y + ';' + x + 'H'; | ||
}), | ||
bol: d(function (n/*, erase*/) { | ||
var dir; | ||
n = isNaN(n) ? 0 : Number(n); | ||
dir = (n >= 0) ? 'E' : 'F'; | ||
n = floor(abs(n)); | ||
return arguments[1] ? | ||
(((!n || (dir === 'F')) ? '\x1b[0E\x1bK' : '') + | ||
repeat.call('\x1b[1' + dir + '\x1b[K', n)) : '\x1b[' + n + dir; | ||
}), | ||
beep: d('\x07'), | ||
xtermSupported: d(Boolean(!xtermMatch)), | ||
_cliColorData: d({}) | ||
}); |
'use strict'; | ||
var write = process.stdout.write.bind(process.stdout) | ||
, chain = require('es5-ext/lib/Function/prototype/chain') | ||
var chain = require('es5-ext/lib/Function/prototype/chain') | ||
, write = process.stdout.write.bind(process.stdout) | ||
@@ -6,0 +6,0 @@ , chars = '-\\|/' |
{ | ||
"name": "cli-color", | ||
"version": "0.1.7", | ||
"version": "0.2.0", | ||
"description": "Colors, formatting and other tools for the console", | ||
@@ -30,3 +30,4 @@ "keywords": [ | ||
"dependencies": { | ||
"es5-ext": "0.8.x" | ||
"es5-ext": "~0.9.1", | ||
"memoizee": "0.1.x" | ||
}, | ||
@@ -33,0 +34,0 @@ "devDependencies": { |
528
README.md
@@ -13,27 +13,36 @@ # cli-color - Yet another colors and formatting for the console solution | ||
var clc = require('cli-color'); | ||
```javascript | ||
var clc = require('cli-color'); | ||
``` | ||
Output colored text: | ||
console.log(clc.red('Text in red')); | ||
```javascript | ||
console.log(clc.red('Text in red')); | ||
``` | ||
Styles can be mixed: | ||
console.log(clc.red.bgWhite.underline('Underlined red text on white background.')); | ||
```javascript | ||
console.log(clc.red.bgWhite.underline('Underlined red text on white background.')); | ||
``` | ||
Styled text can be mixed with unstyled: | ||
console.log(clc.red('red') + ' plain ' + clc.blue('blue')); | ||
```javascript | ||
console.log(clc.red('red') + ' plain ' + clc.blue('blue')); | ||
``` | ||
__Best way is to predefine needed stylings and then use it__: | ||
var error = clc.red.bold; | ||
var warn = clc.yellow; | ||
var notice = clc.blue; | ||
```javascript | ||
var error = clc.red.bold; | ||
var warn = clc.yellow; | ||
var notice = clc.blue; | ||
console.log(error('Error!')); | ||
console.log(warn('Warning')); | ||
console.log(notice('Notice')); | ||
console.log(error('Error!')); | ||
console.log(warn('Warning')); | ||
console.log(notice('Notice')); | ||
``` | ||
Supported are all ANSI colors and styles: | ||
@@ -51,34 +60,459 @@ | ||
#### Foreground colors | ||
#### Colors | ||
* black | ||
* red | ||
* green | ||
* yellow | ||
* blue | ||
* magenta | ||
* cyan | ||
* white | ||
* gray (technically bright.black) | ||
<table> | ||
<thead><th>Foreground</th><th>Background</th><th width="30"></th></thead> | ||
<tbody> | ||
<tr><td>black</td><td>bgBlack</td><td bgcolor="black"></td></tr> | ||
<tr><td>red</td><td>bgRed</td><td bgcolor=#800000"></td></tr> | ||
<tr><td>green</td><td>bgGreen</td><td bgcolor="#008000"></td></tr> | ||
<tr><td>yellow</td><td>bgYellow</td><td bgcolor="#808000"></td></tr> | ||
<tr><td>blue</td><td>bgBlue</td><td bgcolor="#000080"></td></tr> | ||
<tr><td>magenta</td><td>bgMagenta</td><td bgcolor="#800080"></td></tr> | ||
<tr><td>cyan</td><td>bgCyan</td><td bgcolor="#008080"></td></tr> | ||
<tr><td>white</td><td>bgWhite</td><td bgcolor="#c0c0c0"></td></tr> | ||
</tbody> | ||
</table> | ||
#### Background colors | ||
##### Bright variants | ||
* bgBlack | ||
* bgRed | ||
* bgGreen | ||
* bgYellow | ||
* bgBlue | ||
* bgMagenta | ||
* bgCyan | ||
* bgWhite | ||
<table> | ||
<thead><th>Foreground</th><th>Background</th><th width="30"></th></thead> | ||
<tbody> | ||
<tr><td>blackBright</td><td>bgBlackBright</td><td bgcolor="#808080"></td></tr> | ||
<tr><td>redBright</td><td>bgRedBright</td><td bgcolor="#f00"></td></tr> | ||
<tr><td>greenBright</td><td>bgGreenBright</td><td bgcolor="#0f0"></td></tr> | ||
<tr><td>yellowBright</td><td>bgYellowBright</td><td bgcolor="#ff0"></td></tr> | ||
<tr><td>blueBright</td><td>bgBlueBright</td><td bgcolor="#00f"></td></tr> | ||
<tr><td>magentaBright</td><td>bgMagentaBright</td><td bgcolor="#f0f"></td></tr> | ||
<tr><td>cyanBright</td><td>bgCyanBright</td><td bgcolor="#0ff"></td></tr> | ||
<tr><td>whiteBright</td><td>bgWhiteBright</td><td bgcolor="white"></td></tr> | ||
</tbody> | ||
</table> | ||
#### Colors intensity | ||
##### xTerm colors (256 colors table) | ||
For _bright_ color variants: | ||
__Not supported on Windows and some terminals__. However if used in not supported environment, the closest color from basic (16 colors) palette is chosen. | ||
* bright (foreground) | ||
* bgBright (background) | ||
Usage: | ||
### Additional functions: | ||
```javascript | ||
var msg = clc.xterm(202).bgXterm(236); | ||
console.log(msg('Orange text on dark gray background')); | ||
``` | ||
Color table: | ||
<table> | ||
<tr> | ||
<td>0</td><td bgcolor="black" width="10"></td> | ||
<td>1</td><td bgcolor="#800000" width="10"></td> | ||
<td>2</td><td bgcolor="#008000" width="10"></td> | ||
<td>3</td><td bgcolor="#808000" width="10"></td> | ||
<td>4</td><td bgcolor="#000080" width="10"></td> | ||
<td>5</td><td bgcolor="#800080" width="10"></td> | ||
<td>6</td><td bgcolor="#008080" width="10"></td> | ||
<td>7</td><td bgcolor="#c0c0c0" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>8</td><td bgcolor="#808080" width="10"></td> | ||
<td>9</td><td bgcolor="#f00" width="10"></td> | ||
<td>10</td><td bgcolor="#0f0" width="10"></td> | ||
<td>11</td><td bgcolor="#ff0" width="10"></td> | ||
<td>12</td><td bgcolor="#00f" width="10"></td> | ||
<td>13</td><td bgcolor="#f0f" width="10"></td> | ||
<td>14</td><td bgcolor="#0ff" width="10"></td> | ||
<td>15</td><td bgcolor="white" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>16</td><td bgcolor="black" width="10"></td> | ||
<td>17</td><td bgcolor="#00005f" width="10"></td> | ||
<td>18</td><td bgcolor="#000087" width="10"></td> | ||
<td>19</td><td bgcolor="#0000af" width="10"></td> | ||
<td>20</td><td bgcolor="#0000df" width="10"></td> | ||
<td>21</td><td bgcolor="#00f" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>22</td><td bgcolor="#005f00" width="10"></td> | ||
<td>23</td><td bgcolor="#005f5f" width="10"></td> | ||
<td>24</td><td bgcolor="#005f87" width="10"></td> | ||
<td>25</td><td bgcolor="#005faf" width="10"></td> | ||
<td>26</td><td bgcolor="#005fdf" width="10"></td> | ||
<td>27</td><td bgcolor="#005fff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>28</td><td bgcolor="#008700" width="10"></td> | ||
<td>29</td><td bgcolor="#00875f" width="10"></td> | ||
<td>30</td><td bgcolor="#008787" width="10"></td> | ||
<td>31</td><td bgcolor="#0087af" width="10"></td> | ||
<td>32</td><td bgcolor="#0087df" width="10"></td> | ||
<td>33</td><td bgcolor="#0087ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>34</td><td bgcolor="#00af00" width="10"></td> | ||
<td>35</td><td bgcolor="#00af5f" width="10"></td> | ||
<td>36</td><td bgcolor="#00af87" width="10"></td> | ||
<td>37</td><td bgcolor="#00afaf" width="10"></td> | ||
<td>38</td><td bgcolor="#00afdf" width="10"></td> | ||
<td>39</td><td bgcolor="#00afff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>40</td><td bgcolor="#00df00" width="10"></td> | ||
<td>41</td><td bgcolor="#00df5f" width="10"></td> | ||
<td>42</td><td bgcolor="#00df87" width="10"></td> | ||
<td>43</td><td bgcolor="#00dfaf" width="10"></td> | ||
<td>44</td><td bgcolor="#00dfdf" width="10"></td> | ||
<td>45</td><td bgcolor="#00dfff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>46</td><td bgcolor="#00ff00" width="10"></td> | ||
<td>47</td><td bgcolor="#00ff5f" width="10"></td> | ||
<td>48</td><td bgcolor="#00ff87" width="10"></td> | ||
<td>49</td><td bgcolor="#00ffaf" width="10"></td> | ||
<td>50</td><td bgcolor="#00ffdf" width="10"></td> | ||
<td>51</td><td bgcolor="#00ffff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>52</td><td bgcolor="#5f0000" width="10"></td> | ||
<td>53</td><td bgcolor="#5f005f" width="10"></td> | ||
<td>54</td><td bgcolor="#5f0087" width="10"></td> | ||
<td>55</td><td bgcolor="#5f00af" width="10"></td> | ||
<td>56</td><td bgcolor="#5f00df" width="10"></td> | ||
<td>57</td><td bgcolor="#5f00ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>58</td><td bgcolor="#5f5f00" width="10"></td> | ||
<td>59</td><td bgcolor="#5f5f5f" width="10"></td> | ||
<td>60</td><td bgcolor="#5f5f87" width="10"></td> | ||
<td>61</td><td bgcolor="#5f5faf" width="10"></td> | ||
<td>62</td><td bgcolor="#5f5fdf" width="10"></td> | ||
<td>63</td><td bgcolor="#5f5fff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>64</td><td bgcolor="#5f8700" width="10"></td> | ||
<td>65</td><td bgcolor="#5f875f" width="10"></td> | ||
<td>66</td><td bgcolor="#5f8787" width="10"></td> | ||
<td>67</td><td bgcolor="#5f87af" width="10"></td> | ||
<td>68</td><td bgcolor="#5f87df" width="10"></td> | ||
<td>69</td><td bgcolor="#5f87ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>70</td><td bgcolor="#5faf00" width="10"></td> | ||
<td>71</td><td bgcolor="#5faf5f" width="10"></td> | ||
<td>72</td><td bgcolor="#5faf87" width="10"></td> | ||
<td>73</td><td bgcolor="#5fafaf" width="10"></td> | ||
<td>74</td><td bgcolor="#5fafdf" width="10"></td> | ||
<td>75</td><td bgcolor="#5fafff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>76</td><td bgcolor="#5fdf00" width="10"></td> | ||
<td>77</td><td bgcolor="#5fdf5f" width="10"></td> | ||
<td>78</td><td bgcolor="#5fdf87" width="10"></td> | ||
<td>79</td><td bgcolor="#5fdfaf" width="10"></td> | ||
<td>80</td><td bgcolor="#5fdfdf" width="10"></td> | ||
<td>81</td><td bgcolor="#5fdfff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>82</td><td bgcolor="#5fff00" width="10"></td> | ||
<td>83</td><td bgcolor="#5fff5f" width="10"></td> | ||
<td>84</td><td bgcolor="#5fff87" width="10"></td> | ||
<td>85</td><td bgcolor="#5fffaf" width="10"></td> | ||
<td>86</td><td bgcolor="#5fffdf" width="10"></td> | ||
<td>87</td><td bgcolor="#5fffff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>88</td><td bgcolor="#870000" width="10"></td> | ||
<td>89</td><td bgcolor="#87005f" width="10"></td> | ||
<td>90</td><td bgcolor="#870087" width="10"></td> | ||
<td>91</td><td bgcolor="#8700af" width="10"></td> | ||
<td>92</td><td bgcolor="#8700df" width="10"></td> | ||
<td>93</td><td bgcolor="#8700ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>94</td><td bgcolor="#875f00" width="10"></td> | ||
<td>95</td><td bgcolor="#875f5f" width="10"></td> | ||
<td>96</td><td bgcolor="#875f87" width="10"></td> | ||
<td>97</td><td bgcolor="#875faf" width="10"></td> | ||
<td>98</td><td bgcolor="#875fdf" width="10"></td> | ||
<td>99</td><td bgcolor="#875fff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>100</td><td bgcolor="#878700" width="10"></td> | ||
<td>101</td><td bgcolor="#87875f" width="10"></td> | ||
<td>102</td><td bgcolor="#878787" width="10"></td> | ||
<td>103</td><td bgcolor="#8787af" width="10"></td> | ||
<td>104</td><td bgcolor="#8787df" width="10"></td> | ||
<td>105</td><td bgcolor="#8787ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>106</td><td bgcolor="#87af00" width="10"></td> | ||
<td>107</td><td bgcolor="#87af5f" width="10"></td> | ||
<td>108</td><td bgcolor="#87af87" width="10"></td> | ||
<td>109</td><td bgcolor="#87afaf" width="10"></td> | ||
<td>110</td><td bgcolor="#87afdf" width="10"></td> | ||
<td>111</td><td bgcolor="#87afff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>112</td><td bgcolor="#87df00" width="10"></td> | ||
<td>113</td><td bgcolor="#87df5f" width="10"></td> | ||
<td>114</td><td bgcolor="#87df87" width="10"></td> | ||
<td>115</td><td bgcolor="#87dfaf" width="10"></td> | ||
<td>116</td><td bgcolor="#87dfdf" width="10"></td> | ||
<td>117</td><td bgcolor="#87dfff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>118</td><td bgcolor="#87ff00" width="10"></td> | ||
<td>119</td><td bgcolor="#87ff5f" width="10"></td> | ||
<td>120</td><td bgcolor="#87ff87" width="10"></td> | ||
<td>121</td><td bgcolor="#87ffaf" width="10"></td> | ||
<td>122</td><td bgcolor="#87ffdf" width="10"></td> | ||
<td>123</td><td bgcolor="#87ffff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>124</td><td bgcolor="#af0000" width="10"></td> | ||
<td>125</td><td bgcolor="#af005f" width="10"></td> | ||
<td>126</td><td bgcolor="#af0087" width="10"></td> | ||
<td>127</td><td bgcolor="#af00af" width="10"></td> | ||
<td>128</td><td bgcolor="#af00df" width="10"></td> | ||
<td>129</td><td bgcolor="#af00ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>130</td><td bgcolor="#af5f00" width="10"></td> | ||
<td>131</td><td bgcolor="#af5f5f" width="10"></td> | ||
<td>132</td><td bgcolor="#af5f87" width="10"></td> | ||
<td>133</td><td bgcolor="#af5faf" width="10"></td> | ||
<td>134</td><td bgcolor="#af5fdf" width="10"></td> | ||
<td>135</td><td bgcolor="#af5fff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>136</td><td bgcolor="#af8700" width="10"></td> | ||
<td>137</td><td bgcolor="#af875f" width="10"></td> | ||
<td>138</td><td bgcolor="#af8787" width="10"></td> | ||
<td>139</td><td bgcolor="#af87af" width="10"></td> | ||
<td>140</td><td bgcolor="#af87df" width="10"></td> | ||
<td>141</td><td bgcolor="#af87ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>142</td><td bgcolor="#afaf00" width="10"></td> | ||
<td>143</td><td bgcolor="#afaf5f" width="10"></td> | ||
<td>144</td><td bgcolor="#afaf87" width="10"></td> | ||
<td>145</td><td bgcolor="#afafaf" width="10"></td> | ||
<td>146</td><td bgcolor="#afafdf" width="10"></td> | ||
<td>147</td><td bgcolor="#afafff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>148</td><td bgcolor="#afdf00" width="10"></td> | ||
<td>149</td><td bgcolor="#afdf5f" width="10"></td> | ||
<td>150</td><td bgcolor="#afdf87" width="10"></td> | ||
<td>151</td><td bgcolor="#afdfaf" width="10"></td> | ||
<td>152</td><td bgcolor="#afdfdf" width="10"></td> | ||
<td>153</td><td bgcolor="#afdfff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>154</td><td bgcolor="#afff00" width="10"></td> | ||
<td>155</td><td bgcolor="#afff5f" width="10"></td> | ||
<td>156</td><td bgcolor="#afff87" width="10"></td> | ||
<td>157</td><td bgcolor="#afffaf" width="10"></td> | ||
<td>158</td><td bgcolor="#afffdf" width="10"></td> | ||
<td>159</td><td bgcolor="#afffff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>160</td><td bgcolor="#d70000" width="10"></td> | ||
<td>161</td><td bgcolor="#d7005f" width="10"></td> | ||
<td>162</td><td bgcolor="#d70087" width="10"></td> | ||
<td>163</td><td bgcolor="#d700af" width="10"></td> | ||
<td>164</td><td bgcolor="#d700df" width="10"></td> | ||
<td>165</td><td bgcolor="#d700ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>166</td><td bgcolor="#d75f00" width="10"></td> | ||
<td>167</td><td bgcolor="#d75f5f" width="10"></td> | ||
<td>168</td><td bgcolor="#d75f87" width="10"></td> | ||
<td>169</td><td bgcolor="#d75faf" width="10"></td> | ||
<td>170</td><td bgcolor="#d75fdf" width="10"></td> | ||
<td>171</td><td bgcolor="#d75fff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>172</td><td bgcolor="#d78700" width="10"></td> | ||
<td>173</td><td bgcolor="#d7875f" width="10"></td> | ||
<td>174</td><td bgcolor="#d78787" width="10"></td> | ||
<td>175</td><td bgcolor="#d787af" width="10"></td> | ||
<td>176</td><td bgcolor="#d787df" width="10"></td> | ||
<td>177</td><td bgcolor="#d787ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>178</td><td bgcolor="#d7af00" width="10"></td> | ||
<td>179</td><td bgcolor="#d7af5f" width="10"></td> | ||
<td>180</td><td bgcolor="#d7af87" width="10"></td> | ||
<td>181</td><td bgcolor="#d7afaf" width="10"></td> | ||
<td>182</td><td bgcolor="#d7afdf" width="10"></td> | ||
<td>183</td><td bgcolor="#d7afff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>184</td><td bgcolor="#d7df00" width="10"></td> | ||
<td>185</td><td bgcolor="#d7df5f" width="10"></td> | ||
<td>186</td><td bgcolor="#d7df87" width="10"></td> | ||
<td>187</td><td bgcolor="#d7dfaf" width="10"></td> | ||
<td>188</td><td bgcolor="#d7dfdf" width="10"></td> | ||
<td>189</td><td bgcolor="#d7dfff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>190</td><td bgcolor="#d7ff00" width="10"></td> | ||
<td>191</td><td bgcolor="#d7ff5f" width="10"></td> | ||
<td>192</td><td bgcolor="#d7ff87" width="10"></td> | ||
<td>193</td><td bgcolor="#d7ffaf" width="10"></td> | ||
<td>194</td><td bgcolor="#d7ffdf" width="10"></td> | ||
<td>195</td><td bgcolor="#d7ffff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>196</td><td bgcolor="#ff0000" width="10"></td> | ||
<td>197</td><td bgcolor="#ff005f" width="10"></td> | ||
<td>198</td><td bgcolor="#ff0087" width="10"></td> | ||
<td>199</td><td bgcolor="#ff00af" width="10"></td> | ||
<td>200</td><td bgcolor="#ff00df" width="10"></td> | ||
<td>201</td><td bgcolor="#ff00ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>202</td><td bgcolor="#ff5f00" width="10"></td> | ||
<td>203</td><td bgcolor="#ff5f5f" width="10"></td> | ||
<td>204</td><td bgcolor="#ff5f87" width="10"></td> | ||
<td>205</td><td bgcolor="#ff5faf" width="10"></td> | ||
<td>206</td><td bgcolor="#ff5fdf" width="10"></td> | ||
<td>207</td><td bgcolor="#ff5fff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>208</td><td bgcolor="#ff8700" width="10"></td> | ||
<td>209</td><td bgcolor="#ff875f" width="10"></td> | ||
<td>210</td><td bgcolor="#ff8787" width="10"></td> | ||
<td>211</td><td bgcolor="#ff87af" width="10"></td> | ||
<td>212</td><td bgcolor="#ff87df" width="10"></td> | ||
<td>213</td><td bgcolor="#ff87ff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>214</td><td bgcolor="#ffaf00" width="10"></td> | ||
<td>215</td><td bgcolor="#ffaf5f" width="10"></td> | ||
<td>216</td><td bgcolor="#ffaf87" width="10"></td> | ||
<td>217</td><td bgcolor="#ffafaf" width="10"></td> | ||
<td>218</td><td bgcolor="#ffafdf" width="10"></td> | ||
<td>219</td><td bgcolor="#ffafff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>220</td><td bgcolor="#ffdf00" width="10"></td> | ||
<td>221</td><td bgcolor="#ffdf5f" width="10"></td> | ||
<td>222</td><td bgcolor="#ffdf87" width="10"></td> | ||
<td>223</td><td bgcolor="#ffdfaf" width="10"></td> | ||
<td>224</td><td bgcolor="#ffdfdf" width="10"></td> | ||
<td>225</td><td bgcolor="#ffdfff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>226</td><td bgcolor="#ffff00" width="10"></td> | ||
<td>227</td><td bgcolor="#ffff5f" width="10"></td> | ||
<td>228</td><td bgcolor="#ffff87" width="10"></td> | ||
<td>229</td><td bgcolor="#ffffaf" width="10"></td> | ||
<td>230</td><td bgcolor="#ffffdf" width="10"></td> | ||
<td>231</td><td bgcolor="#ffffff" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>232</td><td bgcolor="#080808" width="10"></td> | ||
<td>233</td><td bgcolor="#121212" width="10"></td> | ||
<td>234</td><td bgcolor="#1c1c1c" width="10"></td> | ||
<td>235</td><td bgcolor="#262626" width="10"></td> | ||
<td>236</td><td bgcolor="#303030" width="10"></td> | ||
<td>237</td><td bgcolor="#3a3a3a" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>238</td><td bgcolor="#444444" width="10"></td> | ||
<td>239</td><td bgcolor="#4e4e4e" width="10"></td> | ||
<td>240</td><td bgcolor="#585858" width="10"></td> | ||
<td>241</td><td bgcolor="#626262" width="10"></td> | ||
<td>242</td><td bgcolor="#6c6c6c" width="10"></td> | ||
<td>243</td><td bgcolor="#767676" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>244</td><td bgcolor="#808080" width="10"></td> | ||
<td>245</td><td bgcolor="#8a8a8a" width="10"></td> | ||
<td>246</td><td bgcolor="#949494" width="10"></td> | ||
<td>247</td><td bgcolor="#9e9e9e" width="10"></td> | ||
<td>248</td><td bgcolor="#a8a8a8" width="10"></td> | ||
<td>249</td><td bgcolor="#b2b2b2" width="10"></td> | ||
</tr> | ||
<tr> | ||
<td>250</td><td bgcolor="#bcbcbc" width="10"></td> | ||
<td>251</td><td bgcolor="#c6c6c6" width="10"></td> | ||
<td>252</td><td bgcolor="#d0d0d0" width="10"></td> | ||
<td>253</td><td bgcolor="#dadada" width="10"></td> | ||
<td>254</td><td bgcolor="#e4e4e4" width="10"></td> | ||
<td>255</td><td bgcolor="#eeeeee" width="10"></td> | ||
</tr> | ||
</table> | ||
#### Terminal reset | ||
Terminal can be cleared with `clc.reset` | ||
```javascript | ||
console.log(clc.reset); | ||
``` | ||
#### Move around functions | ||
##### clc.move(x, y) | ||
Move cursor _x_ columns and _y_ rows away. Values can be positive or negative, e.g.: | ||
```javascript | ||
process.stdout.write(clc.move(-2, -2)); // Move cursors two columns and rows back | ||
``` | ||
##### clc.moveTo(x, y) | ||
Absolute move. Sets cursor position at _x_ column and _y_ row | ||
```javascript | ||
process.stdout.write(clc.moveTo(0, 0)); // Move cursor to first row and column in terminal window | ||
``` | ||
##### clc.bol([n[, erase]]) | ||
Move cursor to the begining of the line, with _n_ we may specify how many lines away we want to move, value can be positive or negative. Additionally we may decide to clear lines content with _erase_ | ||
```javascript | ||
process.stdout.write(clc.bol(-2)); // Move cursor two lines back and place it at begin of the line | ||
``` | ||
##### clc.up(n) | ||
Move cursor up _n_ rows | ||
##### clc.down(n) | ||
Move cursor down _n_ rows | ||
##### clc.right(n) | ||
Move cursor right _n_ columns | ||
##### clc.left(n) | ||
Move cursor left _n_ columns | ||
#### Terminal characteristics | ||
##### clc.width | ||
Returns terminal width | ||
##### clc.height | ||
Returns terminal height | ||
### Additional functionalities (provided as separate modules) | ||
#### trim(formatedText) | ||
@@ -88,5 +522,7 @@ | ||
var ansiTrim = require('cli-color/lib/trim'); | ||
```javascript | ||
var ansiTrim = require('cli-color/lib/trim'); | ||
var plain = ansiTrim(formatted); | ||
var plain = ansiTrim(formatted); | ||
``` | ||
@@ -99,13 +535,15 @@ #### throbber(interval[, format]) | ||
var interval = require('clock/lib/interval') | ||
, ansiThrobber = require('cli-color/lib/throbber'); | ||
```javascript | ||
var interval = require('clock/lib/interval') | ||
, ansiThrobber = require('cli-color/lib/throbber'); | ||
var i = interval(200, true); | ||
var i = interval(200, true); | ||
// Display throbber while interval is ticking | ||
ansiThrobber(i); | ||
// Display throbber while interval is ticking | ||
ansiThrobber(i); | ||
// at any time you can stop/start interval | ||
// When interval is stopped throbber doesn't show | ||
i.stop(); | ||
// at any time you can stop/start interval | ||
// When interval is stopped throbber doesn't show | ||
i.stop(); | ||
``` | ||
@@ -112,0 +550,0 @@ ## Tests [![Build Status](https://secure.travis-ci.org/medikoo/cli-color.png?branch=master)](https://secure.travis-ci.org/medikoo/cli-color) |
'use strict'; | ||
var msg = 'test test'; | ||
module.exports = function (t, a) { | ||
var x, y; | ||
module.exports = function (t, a) { | ||
a(t("test"), "test", "Plain"); | ||
a(t.red(msg), '\x1b[31m' + msg + '\x1b[39m', "Foreground"); | ||
a(t.bgRed(msg), '\x1b[41m' + msg + '\x1b[49m', "Background"); | ||
a(t.bold(msg), '\x1b[1m' + msg + '\x1b[22m', "Format"); | ||
a(t.bold.blue(msg), '\x1b[34m\x1b[1m' + msg + '\x1b[22m\x1b[39m', | ||
a(t('test'), 'test', "Plain"); | ||
a(t('test', 'foo', 3, { toString: function () { return 'bar'; } }), | ||
'test foo 3 bar', "Plain: Many args"); | ||
a(t.red('foo'), '\x1b[31mfoo\x1b[39m', "Foreground"); | ||
a(t.red('foo', 'bar', 3), '\x1b[31mfoo bar 3\x1b[39m', | ||
"Foreground: Many args"); | ||
a(t.red.yellow('foo', 'bar', 3), '\x1b[33mfoo bar 3\x1b[39m', | ||
"Foreground: Overriden"); | ||
a(t.bgRed('foo', 'bar'), '\x1b[41mfoo bar\x1b[49m', "Background"); | ||
a(t.bgRed.bgYellow('foo', 'bar', 3), '\x1b[43mfoo bar 3\x1b[49m', | ||
"Background: Overriden"); | ||
a(t.blue.bgYellow('foo', 'bar'), '\x1b[43m\x1b[34mfoo bar\x1b[39m\x1b[49m', | ||
"Foreground & Background"); | ||
a(t.blue.bgYellow.red.bgMagenta('foo', 'bar'), | ||
'\x1b[45m\x1b[31mfoo bar\x1b[39m\x1b[49m', | ||
"Foreground & Background: Overriden"); | ||
a(t.bold('foo', 'bar'), '\x1b[1mfoo bar\x1b[22m', "Format"); | ||
a(t.bold.blue('foo', 'bar', 3), '\x1b[1m\x1b[34mfoo bar 3\x1b[39m\x1b[22m', | ||
"Foreground & Format"); | ||
a(t.redBright('foo', 'bar'), '\x1b[91mfoo bar\x1b[39m', "Bright"); | ||
a(t.bgRedBright('foo', 3), '\x1b[101mfoo 3\x1b[49m', "Bright background"); | ||
a(t.blueBright.bgYellowBright.red.bgMagenta('foo', 'bar'), | ||
'\x1b[45m\x1b[31mfoo bar\x1b[39m\x1b[49m', | ||
"Foreground & Background: Bright: Overriden"); | ||
x = t.red; | ||
y = x.bold; | ||
a(x('foo', 'red') + ' ' + y('foo', 'boldred'), | ||
'\x1b[31mfoo red\x1b[39m \x1b[1m\x1b[31mfoo boldred\x1b[39m\x1b[22m', | ||
"Detached extension"); | ||
if (t.xtermSupported) { | ||
a(t.xterm(12).bgXterm(67)('foo', 'xterm'), | ||
'\x1b[48;5;67m\x1b[38;5;12mfoo xterm\x1b[39m\x1b[49m', "Xterm"); | ||
a(t.redBright.bgBlueBright.xterm(12).bgXterm(67)('foo', 'xterm'), | ||
'\x1b[48;5;67m\x1b[38;5;12mfoo xterm\x1b[39m\x1b[49m', | ||
"Xterm: Override & Bright"); | ||
a(t.xterm(12).bgXterm(67).redBright.bgMagentaBright('foo', 'xterm'), | ||
'\x1b[105m\x1b[91mfoo xterm\x1b[39m\x1b[49m', | ||
"Xterm: Override & Bright #2"); | ||
} else { | ||
a(t.xterm(12).bgXterm(67)('foo', 'xterm'), | ||
'\x1b[100m\x1b[94mfoo xterm\x1b[39m\x1b[49m', "Xterm"); | ||
} | ||
a(typeof t.width, 'number', "Width"); | ||
a(typeof t.height, 'number', "Height"); | ||
a(/\n*\x1bc/.test(t.reset), true, "Reset"); | ||
a(t.up(), '', "Up: No argument"); | ||
a(t.up({}), '', "Up: Not a number"); | ||
a(t.up(-34), '', "Up: Negative"); | ||
a(t.up(34), '\x1b[34A', "Up: Positive"); | ||
a(t.down(), '', "Down: No argument"); | ||
a(t.down({}), '', "Down: Not a number"); | ||
a(t.down(-34), '', "Down: Negative"); | ||
a(t.down(34), '\x1b[34B', "Down: Positive"); | ||
a(t.right(), '', "Right: No argument"); | ||
a(t.right({}), '', "Right: Not a number"); | ||
a(t.right(-34), '', "Right: Negative"); | ||
a(t.right(34), '\x1b[34C', "Right: Positive"); | ||
a(t.left(), '', "Left: No argument"); | ||
a(t.left({}), '', "Left: Not a number"); | ||
a(t.left(-34), '', "Left: Negative"); | ||
a(t.left(34), '\x1b[34D', "Left: Positive"); | ||
a(t.move(), '', "Move: No arguments"); | ||
a(t.move({}, {}), '', "Move: Bad arguments"); | ||
a(t.move({}, 12), '\x1b[12B', "Move: One direction"); | ||
a(t.move(0, -12), '\x1b[12A', "Move: One negative direction"); | ||
a(t.move(-42, -2), '\x1b[42D\x1b[2A', "Move: two negatives"); | ||
a(t.move(2, 35), '\x1b[2C\x1b[35B', "Move: two positives"); | ||
a(t.moveTo(), '\x1b[1;1H', "MoveTo: No arguments"); | ||
a(t.moveTo({}, {}), '\x1b[1;1H', "MoveTo: Bad arguments"); | ||
a(t.moveTo({}, 12), '\x1b[13;1H', "MoveTo: One direction"); | ||
a(t.moveTo(2, -12), '\x1b[1;3H', "MoveTo: One negative direction"); | ||
a(t.moveTo(-42, -2), '\x1b[1;1H', "MoveTo: two negatives"); | ||
a(t.moveTo(2, 35), '\x1b[36;3H', "MoveTo: two positives"); | ||
a(t.bol(), '\x1b[0E', "Bol: No argument"); | ||
a(t.bol({}), '\x1b[0E', "Bol: Not a number"); | ||
a(t.bol(-34), '\x1b[34F', "Bol: Negative"); | ||
a(t.bol(34), '\x1b[34E', "Bol: Positive"); | ||
a(t.bol({}, true), '\x1b[0E\x1bK', "Bol: Erase: Not a number"); | ||
a(t.bol(-2, true), '\x1b[0E\x1bK\x1b[1F\x1b[K\x1b[1F\x1b[K', | ||
"Bol: Erase: Negative"); | ||
a(t.bol(2, true), '\x1b[1E\x1b[K\x1b[1E\x1b[K', | ||
"Bol: Erase: Positive"); | ||
a(t.beep, '\x07', "Beep"); | ||
}; |
@@ -9,3 +9,3 @@ 'use strict'; | ||
var t = spawn(pg + '/throbber.js') | ||
, out = [], err = '', time = Date.now(); | ||
, out = [], err = ''; | ||
@@ -27,3 +27,3 @@ t.stdout.on('data', function (data) { | ||
var t = spawn(pg + '/throbber.formatted.js') | ||
, out = [], err = '', time = Date.now(); | ||
, out = [], err = ''; | ||
@@ -30,0 +30,0 @@ t.stdout.on('data', function (data) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
37186
17
392
549
2
2
+ Addedmemoizee@0.1.x
+ Addedes5-ext@0.9.2(transitive)
+ Addedmemoizee@0.1.1(transitive)
+ Addednext-tick@0.1.0(transitive)
- Removedes5-ext@0.8.2(transitive)
Updatedes5-ext@~0.9.1