Project

todo-txt

0.04
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Allows for simple parsing of todo.txt files, as per Gina Trapani's todo.txt project.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Todo.txt

Gem Version Build Status

This is a Ruby client library for Gina Trapani's todo.txt. It allows for easy management of task lists and tasks in the todo.txt format.

Find the project on GitHub: http://github.com/samwho/todo-txt-gem.

Find the full API docs on Rubydoc.info: http://www.rubydoc.info/gems/todo-txt.

Installation

Installation is very simple. The project is packaged as a Ruby gem and can be installed by running:

gem install todo-txt

Usage

Todo::List

A Todo::List object encapsulates your todo.txt file. You initialise it by passing the path to your todo.txt to the constructor:

require 'todo-txt'

list = Todo::List.new "path/to/todo.txt"

Todo::List subclasses Array so it has all of the standard methods that are available on an array. It is, basically, an array of Todo::Task items.

Filtering

You can filter your todo list by priority, project, context or a combination of all three with ease.

require 'todo-txt'

list = Todo::List.new "path/to/todo.txt"

list.by_priority "A"
# => Contains a Todo::List object with only priority A tasks.

list.by_context "@code"
# => Returns a new Todo::List with only tasks that have a @code context.

list.by_project "+manhattan"
# => Returns a new Todo::List with only tasks that are part of the
#    +manhattan project (see what I did there?)

# And you can combine these, like so
list.by_project("+manhattan").by_priority("B")

Todo::Task

A Todo::Task object can be created from a standard task string if you don't want to use the Todo::List approach (though using Todo::List is recommended).

require 'todo-txt'

task = Todo::Task.new "(A) This task is top priority! +project @context"

task.priority
# => "A"

task.contexts
# => ["@context"]

task.projects
# => ["+project"]

task.text
# => "This task is top priority!"

task.orig
# => "(A) This task is top priority! +project @context"

Comparable

The Todo::Task object includes the Comparable mixin. It compares with other tasks and sorts by priority in descending order.

task1 = Todo::Task.new "(A) Priority A."
task2 = Todo::Task.new "(B) Priority B."

task1 > task2
# => true

task1 == task2
# => false

task2 > task1
# => false

Tasks without a priority will always be less than a task with a priority.

Requirements

The todo-txt gem requires Ruby 2.0 or higher.