1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
from __future__ import absolute_import
import re
import sys
from ansicolor.ansicolor import Colors
from ansicolor.ansicolor import colorize
from ansicolor.ansicolor import colordiff
from ansicolor.ansicolor import get_highlighter
from ansicolor.ansicolor import highlight_string
from ansicolor.ansicolor import write_out
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")
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)
def demo_highlight():
_demo_highlight()
def demo_highlight_reverse():
_demo_highlight(reverse=True)
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()
elif action == '--highlight':
demo_highlight()
elif action == '--highlight-reverse':
demo_highlight_reverse()
elif action == '--diff':
demo_diff()
|