Skip to content
A RubyGem for parsing todo.txt files.
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Remove tags when getting item text Jun 6, 2017
spec
.gemtest Added a Rakefile and a .gemtest, updated the README a little and rena… Aug 20, 2011
.gitignore Ignore generated *.gem packages Apr 4, 2016
.rubocop.yml
.travis.yml Update Travis config to latest JRuby Jun 13, 2017
Gemfile
LICENSE Added a Rakefile and a .gemtest, updated the README a little and rena… Aug 20, 2011
README.md Improve README docs Apr 4, 2016
Rakefile Tidy Gemfile and Rakefile with new symbol-hash syntax Jun 2, 2016
todo-txt.gemspec
todo.txt Pass options as an instance rather than relying on global module Aug 17, 2016

README.md

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.

You can’t perform that action at this time.