Skip to content
This repository was archived by the owner on Mar 8, 2022. It is now read-only.

Commit 201bae1

Browse files
committed
1.1.0 - hex colors and level call function
1 parent 54c2619 commit 201bae1

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

loggaby/__init__.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from time import localtime, strftime
2+
from re import match
23

34
class Loggaby:
45
def __init__(self, debug=True, levels=[]):
@@ -32,11 +33,21 @@ def __init__(self, debug=True, levels=[]):
3233
]
3334

3435
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)
3740

3841
def create_level(self, level):
3942
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'))
4051
attribs = {
4152
'reset': '\x1b[0m',
4253
'bold': '\x1b[1m',
@@ -70,10 +81,16 @@ def _level(msg):
7081
'bright-magenta': '\x1b[95m',
7182
'bright-cyan': '\x1b[96m'
7283
}
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)
7586
print(formatted)
7687
return _level
7788

7889
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

Comments
 (0)