Skip to content

Instantly share code, notes, and snippets.

@nsabine
Forked from MosheBerman/Toodles.py
Last active December 18, 2015 10:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nsabine/5766426 to your computer and use it in GitHub Desktop.
Save nsabine/5766426 to your computer and use it in GitHub Desktop.
import os
import keyword
import sys
# key phrase to look for
needle = 'todo'
# file extensions to be searched for todo statements
extensions_to_include = ('.py', '.c', '.m', '.h', '.txt')
# directories to skip
exclude_directories = ('.git')
class Todos:
def __init__(self, needle='todo', extensions_to_include=('.py','.txt'), exclude_directories=('.git')):
self.needle = needle
self.extensions_to_include = extensions_to_include
self.exclude_directories = exclude_directories
def walk_and_list(self, directory):
"""Find filenames to be searched"""
for dirname, dirnames, filenames in os.walk(directory):
for filename in filenames:
if filename.endswith(self.extensions_to_include):
self.list_occurences_in_file(filename)
# recurse into subdirectories
for dir in dirnames:
if dir not in self.exclude_directories:
self.walk_and_list(os.path.join(dirname, dir))
def list_occurences_in_file(self, filename):
"""Print occurences of needle in a file."""
with open(filename) as f:
for line_number, line in enumerate(f, 1):
line_lowered = line.lower()
if (self.needle in line_lowered):
print("%s (%d) %s" % (filename, line_number, line.strip()))
if ( __name__ == "__main__"):
a = Todos(needle, extensions_to_include, exclude_directories)
a.walk_and_list('.')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment