mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 05:12:45 +00:00
Support 256-color terminals (#17750)
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import re
|
||||
import sys
|
||||
|
||||
from ansible import constants as C
|
||||
@@ -66,11 +67,28 @@ codeCodes = {
|
||||
'normal': u'0' ,
|
||||
}
|
||||
|
||||
def parsecolor(color):
|
||||
"""SGR parameter string for the specified color name."""
|
||||
matches = re.match(r"color(?P<color>[0-9]+)"
|
||||
r"|(?P<rgb>rgb(?P<red>[0-5])(?P<green>[0-5])(?P<blue>[0-5]))"
|
||||
r"|gray(?P<gray>[0-9]+)", color)
|
||||
if not matches:
|
||||
return codeCodes[color]
|
||||
if matches.group('color'):
|
||||
return u'38;5;%d' % int(matches.group('color'))
|
||||
if matches.group('rgb'):
|
||||
return u'38;5;%d' % (16 + 36 * int(matches.group('red'))
|
||||
+ 6 * int(matches.group('green'))
|
||||
+ int(matches.group('blue')))
|
||||
if matches.group('gray'):
|
||||
return u'38;5;%d' % (232 + int(matches.group('gray')))
|
||||
|
||||
def stringc(text, color):
|
||||
"""String in color."""
|
||||
|
||||
if ANSIBLE_COLOR:
|
||||
return "\n".join([u"\033[%sm%s\033[0m" % (codeCodes[color], t) for t in text.split('\n')])
|
||||
color_code = parsecolor(color)
|
||||
return "\n".join([u"\033[%sm%s\033[0m" % (color_code, t) for t in text.split('\n')])
|
||||
else:
|
||||
return text
|
||||
|
||||
|
||||
Reference in New Issue
Block a user