Tree


.gitignorecommits | blame
Cargo.tomlcommits | blame
LICENSES/
README.mdcommits | blame
README.md.licensecommits | blame
assets/
contrib/
examples/
src/
tests/

README.md

# todotxt_parser

A (WIP) parsing and manipulation library for the todo.txt format. It supports some tag
extensions.

This library is currently a work in progress. Version numbers are not updated
and breaking changes will be made quite often. Use with caution.

Parsing is done with [nom](https://lib.rs/crates/nom), enabling zero-copy
parsing from the input wherever no new types are created (e.g. dates are parsed
into
[`NaiveDate`](https://docs.rs/chrono/0.4.23/chrono/naive/struct.NaiveDate.html)
structs). Should a task be created or modified, a new copy will be created.

## Features

The following features are currently supported:

- Creating, reading and modifying tasks
- Recognised tag extensions (see below)

The following features are planned, in no particular order:

- [`Read`](https://doc.rust-lang.org/stable/std/io/trait.Read.html) support
  [(#3)](https://todo.sr.ht/~witcher/todotxt/3)
- Archived priority support [(#1)](https://todo.sr.ht/~witcher/todotxt/1)
- Filtering tasks [(#6)](https://todo.sr.ht/~witcher/todotxt/6)

## Tag Extensions

The following tag extensions are supported. The format for each tag is given as
a regular expression:

- `due:\d{4}-\d{2}-\d{2}`: Specify a due date in YYYY-MM-DD format
- `rec:\+?\d+[dwmy]`: Allow recurring tasks. `+` marks strict, `d`, `w`, `m`, and
  `y` resemble day, week, month, and year.

The following tag extensions are planned:

- `t`: Threshold in the same format as `due` that only shows tasks that passed
  the specified date (achieved with filters)
- `tmr`, `spent`: Keeping track of time spent on a task

## Resources

Send patches to
[~witcher/todotxt-devel@lists.sr.ht](https://lists.sr.ht/~witcher/todotxt-devel).

Instructions for preparing a patch are available at
[git-send-email.io](https://git-send-email.io/).

Discussion happens at
[~witcher/todotxt-discuss](https://lists.sr.ht/~witcher/todotxt-discuss).

Announcements are posted on
[~witcher/todotxt-announce](https://lists.sr.ht/~witcher/todotxt-announce).

Bugs and todo can be found at
[~witcher/todotxt](https://todo.sr.ht/~witcher/todotxt).