Jason R. Coombs avatar Jason R. Coombs committed fe26e5e

Improved argument parsing and greatly simplified CombinedFilter

Comments (0)

Files changed (1)


 	spec_date = date_parser.parse(date_string)
 	return lambda entry: op(datetime.datetime(*entry.updated_parsed[:6]), spec_date)
-class CombinedFilter(object):
-	def __init__(self, filters):
-		self.filters = filters
+class CombinedFilter(list):
+	"""
+	A list of callables that can be applied to a filter call.
+	"""
 	def __call__(self, subject):
-		results = [filter(subject) for filter in self.filters]
-		return reduce(operator.and_, results, True)
-def _parse_filters(args):
-	filters = map(parse_filter, args.date_filter)
-	args.date_filter = CombinedFilter(filters)
+		return all(filter(subject) for filter in self)
 def _parse_args(parser=None):
 	parser = parser or argparse.ArgumentParser()
 	parser.add_argument('-f', '--date-filter',
-		help="add a date filter such as 'before 2006'", default=[],
-		action="append")
+		help="add a date filter such as 'before 2006'",
+		default=CombinedFilter(), action="append", type=parse_filter)
 	args = parser.parse_args()
-	_parse_filters(args)
 	return args
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.