from __future__ import absolute_import
import re
import sys
from ansicolor.ansicolor import Colors
from ansicolor.ansicolor import colorize
from ansicolor.ansicolor import colorize_v2
from ansicolor.ansicolor import colordiff
from ansicolor.ansicolor import get_highlighter
from ansicolor.ansicolor import highlight_string
from ansicolor.ansicolor import write_out
[docs]def demo_color():
width = 10
lst = []
lst.extend([[], [">>> Without colors"], []])
line = []
line.append(colorize("Standard".ljust(width), None))
line.append(colorize("Bold".ljust(width), None, bold=True))
line.append(colorize("Reverse".ljust(width), None, reverse=True))
line.append(
colorize("Bold & Rev".ljust(width), None, bold=True, reverse=True)
) # noqa
lst.append(line)
lst.extend([[], [">>> Using colors"], []])
for color in Colors.iter():
line = []
line.append(colorize(color.__name__.ljust(width), color))
line.append(colorize(color.__name__.ljust(width), color, bold=True)) # noqa
line.append(colorize(color.__name__.ljust(width), color, reverse=True)) # noqa
line.append(
colorize(color.__name__.ljust(width), color, bold=True, reverse=True)
) # noqa
lst.append(line)
lst.extend([[], [">>> Using highlighting colors"], []])
for color in Colors.iter():
color = get_highlighter(color.id)
line = []
line.append(colorize(color.__name__.ljust(width), color))
line.append(colorize(color.__name__.ljust(width), color, bold=True)) # noqa
line.append(colorize(color.__name__.ljust(width), color, reverse=True)) # noqa
line.append(
colorize(color.__name__.ljust(width), color, bold=True, reverse=True)
) # noqa
lst.append(line)
for line in lst:
for item in line:
write_out("%s " % item)
write_out("\n")
[docs]def demo_color_v2():
width = 10
lst = []
lst.extend([[], [">>> Without colors"], []])
line = []
line.append(colorize_v2("Standard".ljust(width), None))
line.append(colorize_v2("Bold".ljust(width), None, bold=True))
line.append(colorize_v2("Underline".ljust(width), None, underline=True))
line.append(colorize_v2("Blink".ljust(width), None, blink=True))
line.append(colorize_v2("Reverse".ljust(width), None, reverse=True))
line.append(
colorize_v2(
"Bold & Rev".ljust(width), None, bold=True, underline=True, reverse=True
)
) # noqa
lst.append(line)
lst.extend([[], [">>> Using colors_v2"], []])
for color in Colors.iter():
line = []
line.append(colorize_v2(color.__name__.ljust(width), color))
line.append(colorize_v2(color.__name__.ljust(width), color, bold=True)) # noqa
line.append(
colorize_v2(color.__name__.ljust(width), color, underline=True)
) # noqa
line.append(colorize_v2(color.__name__.ljust(width), color, blink=True)) # noqa
line.append(
colorize_v2(color.__name__.ljust(width), color, reverse=True)
) # noqa
line.append(
colorize_v2(
color.__name__.ljust(width),
color,
bold=True,
underline=True,
reverse=True,
)
) # noqa
lst.append(line)
lst.extend([[], [">>> Using highlighting colors_v2"], []])
for color in Colors.iter():
color = get_highlighter(color.id)
line = []
line.append(colorize_v2(color.__name__.ljust(width), color))
line.append(colorize_v2(color.__name__.ljust(width), color, bold=True)) # noqa
line.append(
colorize_v2(color.__name__.ljust(width), color, underline=True)
) # noqa
line.append(colorize_v2(color.__name__.ljust(width), color, blink=True)) # noqa
line.append(
colorize_v2(color.__name__.ljust(width), color, reverse=True)
) # noqa
line.append(
colorize_v2(
color.__name__.ljust(width),
color,
bold=True,
underline=True,
reverse=True,
)
) # noqa
lst.append(line)
for line in lst:
for item in line:
write_out("%s " % item)
write_out("\n")
def _demo_highlight(reverse=False):
rxs = [
"(b+).*\\1",
"(c+).*\\1",
"(d+).*\\1",
"(e+).*\\1",
]
s = """\
aaabbbcccdddeeefffeeedddcccbbbaaa
fffeeedddcccbbbaaabbbcccdddeeefff
"""
def display(rxs, s):
spanlists = []
colors = []
for i, rx in enumerate(rxs):
spanlist = []
for m in re.finditer(rx, s):
spanlist.append(m.span())
spanlists.append(spanlist)
colors.append(get_highlighter(i))
if reverse:
colors.reverse()
s = highlight_string(s, *spanlists, colors=colors)
for (i, rx) in enumerate(rxs):
color = get_highlighter(i)
color = colorize(color.__name__.ljust(10), color)
write_out("Regex %s: %s %s\n" % (i, color, rx))
write_out(s)
for i in range(0, len(rxs) + 1):
write_out("\n")
display(rxs[:i], s)
[docs]def demo_highlight():
_demo_highlight()
[docs]def demo_highlight_reverse():
_demo_highlight(reverse=True)
[docs]def demo_diff():
def display_diff(s, t):
(s_fmt, t_fmt) = colordiff(s, t)
write_out(">>> %s\n" % s_fmt)
write_out(" %s\n\n" % t_fmt)
display_diff("first last", "First Last")
display_diff("the the boss", "the boss")
display_diff("the coder", "the first coder")
display_diff("agcat", "gac")
display_diff("XMJYAUZ", "MZJAWXU")
display_diff("abcdfghjqz", "abcdefgijkrxyz")
if __name__ == "__main__":
try:
action = sys.argv[1]
except IndexError:
print("Usage: %s [ --color | --highlight | --diff ]" % sys.argv[0])
sys.exit(1)
if action == "--color":
demo_color()
demo_color_v2()
elif action == "--highlight":
demo_highlight()
elif action == "--highlight-reverse":
demo_highlight_reverse()
elif action == "--diff":
demo_diff()