rebuild and enhance the structure of package color

This commit is contained in:
minghu6 2016-05-28 16:16:57 +08:00
parent d6fc4af203
commit c183d1143f
3 changed files with 115 additions and 87 deletions

View File

@ -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
@ -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})

View File

@ -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')

View File

@ -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('')