TaskPaperDaily
TaskPaperDaily copied to clipboard
Extension for TaskPaper to handle absolute and relative dates.
TaskPaperDaily
Extension for TaskPaper (and TodoPaper) to handle @due-tags and get them up-to-date.
Preconditions:
- ruby >= 1.9
- gem 'chronic'
- *.taskpaper files, of course ;)
- an alway-on device (dropbox + uberspace for example)
The problem:
TaskPaper uses duetags, for example: @today or @due(2013-10-21). But these due-dates will not update automaticly. @today will be @today, as long as you change it manually. I wanted to get an @overdue if I tag an item with @today and don't close it until tomorrow. Automagicly.
I would like to start my workday with opening my TaskPaper without getting through all tags and getting the actual date for them.
The solution:
TaskPaperDaily, a little rubyscript which does the trick.
simple dates
The Script:
- replaces @today and @tomorrow with their absolute days, e.g. @due(2013-10-21)
- replaces relative weekdays with their absolute days, like @due(2013-10-21) for @monday...@friday
- adds @today @tomorrow and @overdue based on the new absolute dates
calendar weeks
for my job I mostly use calendar weeks, therefor TaskPaperDaily is aware of them too: @due(kw43) is the appropriate tag for this. On the sunday before the start of the given week @tomorrow will be added. Through the whole week @today will be added. After the week a @overdue-tag will be added as normal.
All these actions will not apply to tasks which have a @done tag.
Example
- getting milk @today
after running the script the same day:
- getting milk @due(2013-10-20) @today
and if you don't get the milk today, tomorrow it will look like this:
- getting milk @due(2013-10-20) @overdue
How to use:
The script schould at least run once a day over all your TaskPaper files, and this schould be done before you start the new day. You can run it as often as you like. In my setup it runs every hour via chronjob. Because I am using TaskPaper and TodoPaper on three different machines, my files are located in my dropbox and sync across all devices. The Script is running on my uberspace, where dropbox is running too.
Don't forget to set the correct path to your *.taskpaper-files:
files = Dir["/path/to/your/TaskPaperFiles/*.taskpaper"]
##ToDo:
- I would like to have reminders for a special time, getting an iOS-Push or mail. The tag could look like @reminder(tomorrow,9:00)
##Comments, Bugs and Kudos: Twitter @ausminternet Mail [email protected]