home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
pyth_os2.zip
/
python-1.0.2
/
Demo
/
scripts
/
eptags.py
< prev
next >
Wrap
Text File
|
1992-10-02
|
1KB
|
51 lines
#! /usr/local/bin/python
# eptags
#
# Create a TAGS file for Python programs, usable with GNU Emacs (version 18).
# Tagged are:
# - functions (even inside other defs or classes)
# - classes
# Warns about files it cannot open.
# No warnings about duplicate tags.
import sys
import regex
def main():
outfp = open('TAGS', 'w')
args = sys.argv[1:]
for file in args:
treat_file(file, outfp)
expr = '^[ \t]*\(def\|class\)[ \t]+\([a-zA-Z0-9_]+\)[ \t]*[:(]'
matcher = regex.compile(expr)
def treat_file(file, outfp):
try:
fp = open(file, 'r')
except:
print 'Cannot open', file
return
charno = 0
lineno = 0
tags = []
size = 0
while 1:
line = fp.readline()
if not line: break
lineno = lineno + 1
if matcher.search(line) >= 0:
(a, b), (a1, b1), (a2, b2) = matcher.regs[:3]
name = line[a2:b2]
pat = line[a:b]
tag = pat + '\177' + `lineno` + ',' + `charno` + '\n'
tags.append(name, tag)
size = size + len(tag)
charno = charno + len(line)
outfp.write('\f\n' + file + ',' + `size` + '\n')
for name, tag in tags:
outfp.write(tag)
main()