diff --git a/src/you_get/util/color/color.py b/src/you_get/util/color/color.py index 7888aee8..53a14c1e 100644 --- a/src/you_get/util/color/color.py +++ b/src/you_get/util/color/color.py @@ -3,6 +3,9 @@ """ ################################################################################ Establish a Unified Color print across all kinds of os + +However, you should care about that + we only implemented 8^1=8 kind of basic color in color_sh ################################################################################ """ @@ -13,83 +16,62 @@ if islinux(): elif iswin(): from . import color_cmd as cmd +def _remove_key(dic,keys): + return {_key:dic[_key] for _key in dic if _key not in set(keys)} + +def print_color(*objs,**kwargs): + + _end=kwargs.get('end' ,'\n') + _sep=kwargs.get('sep' ,' ') + _color=kwargs.get('color','blank') + kwargs=_remove_key(kwargs,['end','sep','color']) -def printWhite(obj): if iswin(): - with cmd.printWhite(): - print(obj) + with cmd.print_color(color=_color): + [print(obj, end=_sep, sep='',**kwargs) for obj in objs] + print(end=_end) + elif islinux(): - print(sh.UseStyle(obj,'white')) + [print(sh.UseStyle(obj,fore=_color), end=_sep, sep='',**kwargs) + for obj in objs] + + print(end=_end) else: - print(obj) -def printDarkPink(obj): - if iswin(): - with cmd.printDarkPink(): - print(obj) - elif islinux(): - print(sh.UseStyle(obj,'purple')) + [print(obj, end=_sep, sep='',**kwargs) for obj in objs] + print(end=_end) - else: - print(obj) +def printWhite(*objs,**kwargs): + print_color(*objs,color='white',**kwargs) -def printBlue(obj): + +def printDarkPink(*objs,**kwargs): + print_color(*objs,color='darkpink',**kwargs) + +def printBlue(*objs,**kwargs): """ Belive it ,It's an ugly print-color. Blue makes you blue :( :param obj: :return: """ - if iswin(): - with cmd.printBlue(): - print(obj) - elif islinux(): - print(sh.UseStyle(obj,'blue')) + print_color(*objs,color='blue',**kwargs) - else: - print(obj) +def printDarkRed(*objs,**kwargs): + print_color(*objs,color='darkred',**kwargs) -def printDarkRed(obj): - if iswin(): - with cmd.printDarkRed(): - print(obj) - elif islinux(): - print(sh.UseStyle(obj,'red')) +def printDarkSkyBlue(*objs,**kwargs): + print_color(*objs,color='darkblue',**kwargs) - else: - print(obj) +def printDarkGreen(*objs,**kwargs): + print_color(*objs,color='darkgreen',**kwargs) +def printDarkYellow(*objs,**kwargs): + print_color(*objs,color='darkyellow',**kwargs) -def printDarkSkyBlue(obj): - if iswin(): - with cmd.printDarkSkyBlue(): - print(obj) - elif islinux(): - print(sh.UseStyle(obj,'cyan')) - - else: - print(obj) - -def printDarkGreen(obj): - if iswin(): - with cmd.printDarkGreen(): - print(obj) - elif islinux(): - print(sh.UseStyle(obj,'green')) - - else: - print(obj) - -def printDarkYellow(obj): - if iswin(): - with cmd.printDarkYellow(): - print(obj) - elif islinux(): - print(sh.UseStyle(obj,'yellow')) - - else: - print(obj) +def printBlank(*objs,**kwargs): + print_color(*objs,color='blank',**kwargs) ################################################################################ # Application layer encapsulation @@ -103,18 +85,18 @@ def printDarkYellow(obj): # #You can also configure them with color_dict and print_map ################################################################################ -color_dict={'green' : printDarkGreen, +color_dict={'green' : printDarkGreen, 'skyblue' : printDarkSkyBlue, - 'yellow' : printDarkYellow, - 'red' : printDarkRed, - 'blue':printBlue, - 'white':printWhite, - 'purple':printDarkPink} + 'yellow' : printDarkYellow, + 'red' : printDarkRed, + 'blue' : printBlue, + 'white' : printWhite, + 'purple' : printDarkPink} -print_map={'info' : color_dict['skyblue'], - 'ok' : color_dict['green'], +print_map={'info' : color_dict['skyblue'], + 'ok' : color_dict['green'], 'warning' : color_dict['yellow'], - 'error' : color_dict['red']} + 'error' : color_dict['red']} def print_info(obj):print_map['info'](obj) def print_ok(obj):print_map['ok'](obj) @@ -131,8 +113,8 @@ if __name__ == '__main__': print('isLinux?%r'%islinux()) print('isWindows?%r'%iswin()) - printDarkRed({'a':1,'b':2}) - printDarkGreen([1,2,3]) + printDarkRed({'a':1,'b':2}, {'c':3}, end='') + printDarkGreen([1,2,3], 4, sep='*', end='\n') printDarkSkyBlue((1,2,3)) printDarkYellow({1,2,3}) diff --git a/src/you_get/util/color/color_cmd.py b/src/you_get/util/color/color_cmd.py index cd7dae4d..8ced7f84 100644 --- a/src/you_get/util/color/color_cmd.py +++ b/src/you_get/util/color/color_cmd.py @@ -39,8 +39,8 @@ FOREGROUND_WHITE = 0x0f # white. # Windows CMD命令行 背景颜色定义 background colors -BACKGROUND_BLUE = 0x10 # dark blue. -BACKGROUND_GREEN = 0x20 # dark green. +BACKGROUND_DARKBLUE = 0x10 # dark blue. +BACKGROUND_DARKGREEN = 0x20 # dark green. BACKGROUND_DARKSKYBLUE = 0x30 # dark skyblue. BACKGROUND_DARKRED = 0x40 # dark red. BACKGROUND_DARKPINK = 0x50 # dark pink. @@ -205,57 +205,100 @@ class printYellowRed(printColor): def __enter__(self): set_cmd_text_color(BACKGROUND_YELLOW | FOREGROUND_RED) +#原样输出 +#write origin text +class printBlank(printColor): + def __enter__(self): + pass + +################################################################################ +# Application layer encapsulation +# +# with print_color('xxx'): +# print(xxx) +################################################################################ +print_map={'darkblue' : printDarkBlue, + 'darkgreen' : printDarkGreen, + 'darkskyblue' : printDarkSkyBlue, + 'darkred' : printDarkRed, + 'darkpink' : printDarkPink, + 'darkyellow' : printDarkYellow, + 'darkwhite' : printDarkWhite, + 'darkgray' : printDarkGray, + + 'blue' : printBlue, + 'green' : printGreen, + 'skyblue' : printSkyBlue, + 'red' : printRed, + 'pink' : printPink, + 'yellow' : printYellow, + 'white' : printWhite, + + 'blank' : printBlank} -############################################################## + +def print_color(color='darkwhite'): + """ + + Args: + color: default darkwhite/printDarkWhite + + Returns: an printColor instance + + """ + return print_map.get(color,printDarkWhite)() + if __name__ == '__main__': - with printDarkBlue(): + with print_color('darkblue'): print(u'printDarkBlue:暗蓝色文字\n') - with printDarkGreen(): + with print_color('darkgreen'): print(u'printDarkGreen:暗绿色文字\n') - with printDarkSkyBlue(): + with print_color('darkblue'): print(u'printDarkSkyBlue:暗天蓝色文字\n') - with printDarkRed(): + with print_color('darkred'): print(u'printDarkRed:暗红色文字\n') - with printDarkPink(): + with print_color('darkpink'): print(u'printDarkPink:暗粉红色文字\n') - with printDarkYellow(): + with print_color('darkyellow'): print(u'printDarkYellow:暗黄色文字\n') - with printDarkWhite(): + with print_color('darkwhite'): print(u'printDarkWhite:暗白色文字\n') - with printDarkGray(): + with print_color('darkgray'): print(u'printDarkGray:暗灰色文字\n') - with printBlue(): + with print_color('blue'): print(u'printBlue:蓝色文字\n') - with printGreen(): + with print_color('green'): print(u'printGreen:绿色文字\n') - with printSkyBlue(): + with print_color('skyblue'): print(u'printSkyBlue:天蓝色文字\n') - with printRed(): + with print_color('red'): print(u'printRed:红色文字\n') - with printPink(): + with print_color('pink'): print(u'printPink:粉红色文字\n') - with printYellow(): + with print_color('yellow'): print(u'printYellow:黄色文字\n') - with printWhite(): + with print_color('white'): print(u'printWhite:白色文字\n') + with print_color('blank'): + print(u'printBlank:原生颜色') with printWhiteBlack(): print(u'printWhiteBlack:白底黑字输出\n') @@ -264,3 +307,4 @@ if __name__ == '__main__': with printYellowRed(): print(u'printYellowRed:黄底红字输出\n') + diff --git a/src/you_get/util/color/color_sh.py b/src/you_get/util/color/color_sh.py index a03b3f99..9e1e0af5 100644 --- a/src/you_get/util/color/color_sh.py +++ b/src/you_get/util/color/color_sh.py @@ -49,6 +49,7 @@ STYLE = { 'purple' : 35, # 紫红色 'cyan' : 36, # 青蓝色 'white' : 37, # 白色 + 'blank' : 0, #原生色 }, 'back' : @@ -121,6 +122,7 @@ def TestColor( ): print(UseStyle('紫红色', fore = 'purple'), end=' ') print(UseStyle('青蓝色', fore = 'cyan'), end=' ') print(UseStyle('白色', fore = 'white')) + print(UseStyle('原生色', fore = 'blank')) print('')