1
1
from time import localtime , strftime
2
+ from re import match
2
3
3
4
class Loggaby :
4
5
def __init__ (self , debug = True , levels = []):
@@ -32,11 +33,21 @@ def __init__(self, debug=True, levels=[]):
32
33
]
33
34
34
35
for level in levels :
35
- _level = self .create_level (level )
36
- setattr (self , level ['name' ].lower (), _level )
36
+ _levelfunc = self .create_level (level )
37
+ if level .get ('call' ): funcname = level .get ('call' )
38
+ else : funcname = self .make_valid (level ['name' ].lower ())
39
+ setattr (self , funcname , _levelfunc )
37
40
38
41
def create_level (self , level ):
39
42
def _level (msg ):
43
+ if match (r'#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$' , level .get ('color' )) is not None :
44
+ i = int (level .get ('color' )[1 :], 16 )
45
+ r = (i >> 16 ) & 255
46
+ g = (i >> 8 ) & 255
47
+ b = i & 255 ;
48
+ color = self .rgb (r , g , b )
49
+ else :
50
+ color = '{%s}' % (level .get ('color' ))
40
51
attribs = {
41
52
'reset' : '\x1b [0m' ,
42
53
'bold' : '\x1b [1m' ,
@@ -70,10 +81,16 @@ def _level(msg):
70
81
'bright-magenta' : '\x1b [95m' ,
71
82
'bright-cyan' : '\x1b [96m'
72
83
}
73
- if level .get ('level ' ) == True : formatted = ('{gray}%s {bold}{underline}{%s}%s{underline-off} {white}> {underline}%s{reset}' % (self .time (), level ['color' ], level ['name' ], msg )).format (** attribs )
74
- else : formatted = ('{gray}%s {%s} %s {reset}> %s' % (self .time (), level [ ' color' ] , level ['name' ], msg )).format (** attribs )
84
+ if level .get ('fatal ' ) == True : formatted = ('{gray}%s {bold}{underline}{%s}%s{underline-off} {white}> {underline}%s{reset}' % (self .time (), level ['color' ], level ['name' ], msg )).format (** attribs )
85
+ else : formatted = ('{gray}%s %s %s {reset}> %s' % (self .time (), color , level ['name' ], msg )).format (** attribs )
75
86
print (formatted )
76
87
return _level
77
88
78
89
def time (self ):
79
- return strftime ('%I:%M:%S %p' , localtime ())
90
+ return strftime ('%I:%M:%S %p' , localtime ())
91
+
92
+ def rgb (self , r , g , b ):
93
+ return '\x1b [38;2;%s;%s;%am' % (r , g , b )
94
+
95
+ def make_valid (self , name ):
96
+ return '' .join (name .split ())
0 commit comments