1
1
var _ = require ( 'underscore' ) ;
2
2
var style = require ( 'ansi-styles' ) ;
3
3
4
- function rgb ( r , g , b ) {
5
- return style . color . ansi256 . rgb ( r , g , b ) ;
6
- }
7
-
8
- var THEMES = {
9
- 'default' : {
10
- black : rgb ( 0 , 0 , 0 ) ,
11
- blue : rgb ( 0 , 0 , 255 ) ,
12
- cyan : rgb ( 0 , 255 , 255 ) ,
13
- green : rgb ( 0 , 255 , 0 ) ,
14
- magenta : rgb ( 255 , 0 , 255 ) ,
15
- red : rgb ( 255 , 0 , 0 ) ,
16
- white : rgb ( 255 , 255 , 255 ) ,
17
- yellow : rgb ( 255 , 255 , 0 )
18
- } ,
19
- 'dark' : {
20
- black : rgb ( 0 , 0 , 0 ) ,
21
- blue : rgb ( 0 , 0 , 153 ) ,
22
- cyan : rgb ( 0 , 153 , 153 ) ,
23
- green : rgb ( 0 , 153 , 0 ) ,
24
- magenta : rgb ( 153 , 0 , 153 ) ,
25
- red : rgb ( 153 , 0 , 0 ) ,
26
- white : rgb ( 255 , 255 , 255 ) ,
27
- yellow : rgb ( 153 , 153 , 0 )
28
- } ,
29
- 'pink' : {
30
- black : rgb ( 0 , 0 , 0 ) ,
31
- blue : rgb ( 0 , 0 , 153 ) ,
32
- cyan : rgb ( 0 , 153 , 153 ) ,
33
- green : rgb ( 255 , 20 , 147 ) ,
34
- magenta : rgb ( 153 , 0 , 153 ) ,
35
- red : rgb ( 220 , 20 , 60 ) ,
36
- white : rgb ( 255 , 255 , 255 ) ,
37
- yellow : rgb ( 255 , 69 , 0 )
38
- }
39
- } ;
40
-
41
4
var chalk = {
42
5
enabled : true ,
43
- theme : THEMES . default
6
+ themes : { } ,
7
+ theme : { }
44
8
} ;
45
9
46
10
var pres = [ ] ;
47
11
var posts = [ ] ;
48
12
49
13
chalk . setTheme = function ( name ) {
50
- this . theme = THEMES [ name ] || THEMES . default ;
14
+ this . theme = this . themes [ name ] || this . themes . default || { } ;
51
15
} ;
52
16
53
17
chalk . print = function ( s ) {
@@ -66,22 +30,36 @@ chalk.wrap = function(pre, post) {
66
30
return f ;
67
31
} ;
68
32
69
- _ . chain ( [ 'black' , 'blue' , 'cyan' , 'green' , 'magenta' , 'red' , 'white' , 'yellow' ] )
70
- . each ( function ( color ) {
71
- Object . defineProperty ( chalk , color , {
72
- get : function ( ) {
73
- return chalk . wrap ( chalk . theme [ color ] , style . color . close ) ;
74
- }
33
+ chalk . init = function ( ) {
34
+ var fs = require ( 'fs' ) ;
35
+ var path = require ( 'path' ) ;
36
+
37
+ var dir = path . join ( __dirname , '..' , 'colors' ) ;
38
+ _ . each ( fs . readdirSync ( dir ) , function ( f ) {
39
+ var theme = JSON . parse ( fs . readFileSync ( path . join ( dir , f ) ) ) ;
40
+ chalk . themes [ path . basename ( f , '.json' ) ] = _ . mapObject ( theme , function ( v , k ) {
41
+ return style . color . ansi256 . hex ( v ) ;
42
+ } ) ;
75
43
} ) ;
76
- } ) ;
77
44
78
- _ . chain ( [ 'bold' , 'dim' , 'italic' , 'inverse' , 'strikethrough' , 'underline' ] )
79
- . each ( function ( modifier ) {
80
- Object . defineProperty ( chalk , modifier , {
81
- get : function ( ) {
82
- return chalk . wrap ( style [ modifier ] . open , style [ modifier ] . close ) ;
83
- }
45
+ _ . chain ( [ 'black' , 'blue' , 'cyan' , 'green' , 'magenta' , 'red' , 'white' , 'yellow' ] )
46
+ . each ( function ( color ) {
47
+ Object . defineProperty ( chalk , color , {
48
+ get : function ( ) {
49
+ return chalk . wrap ( chalk . theme [ color ] , style . color . close ) ;
50
+ }
51
+ } ) ;
84
52
} ) ;
85
- } ) ;
86
53
54
+ _ . chain ( [ 'bold' , 'dim' , 'italic' , 'inverse' , 'strikethrough' , 'underline' ] )
55
+ . each ( function ( modifier ) {
56
+ Object . defineProperty ( chalk , modifier , {
57
+ get : function ( ) {
58
+ return chalk . wrap ( style [ modifier ] . open , style [ modifier ] . close ) ;
59
+ }
60
+ } ) ;
61
+ } ) ;
62
+ } ;
63
+
64
+ chalk . init ( ) ;
87
65
module . exports = chalk ;
0 commit comments