Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5fca8a1

Browse files
committed
Adapted to new "regex" module.
Introduced egrep() and emgrep() variants. Use '==' for equality test. .,
1 parent 9f39fbb commit 5fca8a1

2 files changed

Lines changed: 44 additions & 20 deletions

File tree

Lib/grep.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,36 @@
11
# 'grep'
22

3-
import regexp
3+
import regex
4+
from regex_syntax import *
45
import string
56

6-
def grep(expr, filename):
7-
match = regexp.compile(expr).match
7+
def grep(pat, filename):
8+
return ggrep(RE_SYNTAX_GREP, pat, filename)
9+
10+
def egrep(pat, filename):
11+
return ggrep(RE_SYNTAX_EGREP, pat, filename)
12+
13+
def emgrep(pat, filename):
14+
return ggrep(RE_SYNTAX_EMACS, pat, filename)
15+
16+
def ggrep(syntax, pat, filename):
17+
syntax = regex.set_syntax(syntax)
18+
try:
19+
prog = regex.compile(pat)
20+
finally:
21+
syntax = regex.set_syntax(syntax)
822
fp = open(filename, 'r')
923
lineno = 0
1024
while 1:
1125
line = fp.readline()
1226
if not line: break
1327
lineno = lineno + 1
14-
res = match(line)
15-
if res:
16-
#print res
17-
start, end = res[0]
18-
if line[-1:] = '\n': line = line[:-1]
28+
if prog.search(line) >= 0:
29+
if line[-1:] == '\n': line = line[:-1]
1930
prefix = string.rjust(`lineno`, 3) + ': '
2031
print prefix + line
21-
if 0:
32+
if 0: # XXX
33+
start, end = prog.regs()[0]
2234
line = line[:start]
2335
if '\t' not in line:
2436
prefix = ' ' * (len(prefix) + start)
@@ -27,6 +39,6 @@ def grep(expr, filename):
2739
for c in line:
2840
if c <> '\t': c = ' '
2941
prefix = prefix + c
30-
if start = end: prefix = prefix + '\\'
42+
if start == end: prefix = prefix + '\\'
3143
else: prefix = prefix + '^'*(end-start)
3244
print prefix

Lib/lib-old/grep.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,36 @@
11
# 'grep'
22

3-
import regexp
3+
import regex
4+
from regex_syntax import *
45
import string
56

6-
def grep(expr, filename):
7-
match = regexp.compile(expr).match
7+
def grep(pat, filename):
8+
return ggrep(RE_SYNTAX_GREP, pat, filename)
9+
10+
def egrep(pat, filename):
11+
return ggrep(RE_SYNTAX_EGREP, pat, filename)
12+
13+
def emgrep(pat, filename):
14+
return ggrep(RE_SYNTAX_EMACS, pat, filename)
15+
16+
def ggrep(syntax, pat, filename):
17+
syntax = regex.set_syntax(syntax)
18+
try:
19+
prog = regex.compile(pat)
20+
finally:
21+
syntax = regex.set_syntax(syntax)
822
fp = open(filename, 'r')
923
lineno = 0
1024
while 1:
1125
line = fp.readline()
1226
if not line: break
1327
lineno = lineno + 1
14-
res = match(line)
15-
if res:
16-
#print res
17-
start, end = res[0]
18-
if line[-1:] = '\n': line = line[:-1]
28+
if prog.search(line) >= 0:
29+
if line[-1:] == '\n': line = line[:-1]
1930
prefix = string.rjust(`lineno`, 3) + ': '
2031
print prefix + line
21-
if 0:
32+
if 0: # XXX
33+
start, end = prog.regs()[0]
2234
line = line[:start]
2335
if '\t' not in line:
2436
prefix = ' ' * (len(prefix) + start)
@@ -27,6 +39,6 @@ def grep(expr, filename):
2739
for c in line:
2840
if c <> '\t': c = ' '
2941
prefix = prefix + c
30-
if start = end: prefix = prefix + '\\'
42+
if start == end: prefix = prefix + '\\'
3143
else: prefix = prefix + '^'*(end-start)
3244
print prefix

0 commit comments

Comments
 (0)