--- a/t.py Thu Sep 01 22:29:33 2011 +0530
+++ b/t.py Tue Sep 20 18:52:15 2011 -0400
@@ -54,7 +54,7 @@
if taskline.strip().startswith('#'):
return None
elif '|' in taskline:
- text, _, meta = taskline.partition('|')
+ text, _, meta = taskline.rpartition('|')
task = { 'text': text.strip() }
for piece in meta.strip().split(','):
label, data = piece.split(':')
@@ -195,6 +195,17 @@
task = self.tasks.pop(self[prefix]['id'])
self.done[task['id']] = task
+ def remove_task(self, prefix):
+ """Remove the task from tasks list.
+
+ If more than one task matches the prefix an AmbiguousPrefix exception
+ will be raised, if no tasks match it an UnknownPrefix exception will
+ be raised.
+
+ """
+ task = self.tasks.pop(self[prefix]['id'])
+
+
def print_list(self, kind='tasks', verbose=False, quiet=False, grep=''):
"""Print out a nicely formatted list of unfinished tasks."""
tasks = dict(getattr(self, kind).items())
@@ -237,6 +248,8 @@
help="edit TASK to contain TEXT", metavar="TASK")
actions.add_option("-f", "--finish", dest="finish",
help="mark TASK as finished", metavar="TASK")
+ actions.add_option("-r", "--remove", dest="remove",
+ help="Remove TASK from list", metavar="TASK")
parser.add_option_group(actions)
config = OptionGroup(parser, "Configuration Options")
@@ -258,6 +271,9 @@
output.add_option("-q", "--quiet",
action="store_true", dest="quiet", default=False,
help="print less detailed output (no task ids, etc)")
+ output.add_option("--done",
+ action="store_true", dest="done", default=False,
+ help="list done tasks instead of unfinished ones")
parser.add_option_group(output)
return parser
@@ -273,6 +289,9 @@
if options.finish:
td.finish_task(options.finish)
td.write(options.delete)
+ elif options.remove:
+ td.remove_task(options.remove)
+ td.write(options.delete)
elif options.edit:
td.edit_task(options.edit, text)
td.write(options.delete)
@@ -280,12 +299,13 @@
td.add_task(text)
td.write(options.delete)
else:
- td.print_list(verbose=options.verbose, quiet=options.quiet,
+ kind = 'tasks' if not options.done else 'done'
+ td.print_list(kind=kind, verbose=options.verbose, quiet=options.quiet,
grep=options.grep)
except AmbiguousPrefix, e:
- sys.stderr.write('The ID "%s" matches more than one task.' % e.prefix)
+ sys.stderr.write('The ID "%s" matches more than one task.\n' % e.prefix)
except UnknownPrefix, e:
- sys.stderr.write('The ID "%s" does not match any task.' % e.prefix)
+ sys.stderr.write('The ID "%s" does not match any task.\n' % e.prefix)
if __name__ == '__main__':
--- a/tests/finished.t Thu Sep 01 22:29:33 2011 +0530
+++ b/tests/finished.t Tue Sep 20 18:52:15 2011 -0400
@@ -8,6 +8,7 @@
$ xt Sample two.
$ xt Sample three.
$ xt Sample four.
+ $ xt 'this | that'
Finish and test .test.done:
@@ -29,4 +30,11 @@
Sample one. | id:329950673481cb1c19102c982bfc63e745ab4a6f
Sample two. | id:7a4dc18c23f3b890602da09da1690ccfb4c87bd1
Sample three. | id:90cf0626ca134e0aa6453b3562dc1c8bb34f1568
+ $ xt -f 4
+ $ cat .test.done
+ Sample four. | id:1dd56b09a9ca0fdf4f2a8c0959a298098eb8f7de
+ Sample one. | id:329950673481cb1c19102c982bfc63e745ab4a6f
+ this | that | id:48ad7c827191fa3c896d13b47f618ff1732e911e
+ Sample two. | id:7a4dc18c23f3b890602da09da1690ccfb4c87bd1
+ Sample three. | id:90cf0626ca134e0aa6453b3562dc1c8bb34f1568