This post originated from an RSS feed registered with Python Buzz
by Richard Jones.
Original Post: Listing TODO items in your source
Feed Title: Richard's stuff
Feed URL: http://mechanicalcat.net/cgi-bin/log?flav=rss
Feed Description: Stuff I'm interested in
This afternoon is TODO time (since my main job of the day - generating
nice little help tooltips - was solved by
the very cool overlib.) So,
in usual fashion I avoid the job
for a while and write a script to help me. The following is the result,
finding all TODO items in source trees and printing them out with some
context:
#! /usr/bin/env python2.3
import sys, os
def walker(args, path, filenames):
for filename in filenames:
joined = os.path.join(path, filename)
if os.path.isdir(joined):
continue
# find lines to display, at least 2 either side of a TODO marker
lines = open(joined).readlines()
display = {}
for i, line in enumerate(lines):
if 'TODO' not in line:
continue
for n in range(i-2, i+3):
display[n] = 1
if not display:
continue
# organise the lines to display
display = [n for n in display.keys() if n >= 0 and n < len(lines)]
display.sort()
# print them
print '**', joined
last = None
for n in display:
if last is not None and n > last+1:
print '---'
last = n
sys.stdout.write(lines[n])
print '*'*75
if __name__=='__main__':
for arg in sys.argv[1:]:
os.path.walk(arg, walker, None)
Yes, I took the time to have a look at some new python 2.3 features too
(see if you can spot them :)