todo.txt
Version:
A todo.txt-format parser and generator
63 lines (47 loc) • 3.02 kB
Markdown
# todotxt.js
master: [![Build Status][travisci-img-master]][travisci] develop: [![Build Status][travisci-img-develop]][travisci]
A JavaScript parser and container for the TODO files in the [todo.txt format][format].
## From CLI to JavaScript
A mapping of what to do for each CLI command (and an implementation status).
- **Multiple lists** - multiple in-memory lists are supported through multiple
instances of `TodoList`. Todo: Ability to persist and retrieve from a file.
- `add|a` - Implemented. `TodoList.add(task)`
- `addm` - Will be implemented as a file reader. Call `TodoList.add` lots.
- `addto` - Call `TodoList.add` on the correct `TodoList` instance.
- `append|app` - Implemented: `TodoList.append(id, text)`, `TodoItem.append(text)`.
- `archive` - Todo with file management.
- `deduplicate` - Implemented: `TodoList.deduplicate()`
- `del|rm` - Implemented: `TodoList.remove(id)`
- `depri|dp` - Implemented: `TodoList.deprioritise(1)`, `TodoItem.deprioritise()`
- `do` - Implemented: `TodoList.findById(id).complete()`, `TodoList.complete(1, 2, 3)`
- `list|ls` - Implemented: `TodoList.list(term, priority, case_sensitive, completed)`. Todo: helpers/aliases (below)
- `listall|lsa` - Implemented: `TodoList.listAll([term], [priority], [case])`
- `listcon|lsc` - Implemented: `TodoList.contexts()`
- `listproj|lsprj` - Implemented: `TodoList.projects()`
- `move` - Todo with file management.
- `prepend|prep` - Implemented: `TodoList.prepend(id, text)`, `TodoItem.prepend(text)`.
- `pri|p` - `TodoItem.priority = "A"`, `TodoList.prioritise(1, "A")`
- `replace` - `TodoList.replace(1, "New task text")`.
- `report` - Todo.
## Support
This library aims to be both `<script>` and module compatible (so you can use it
with node/rhino). I *think* it's CommonJS compatible at the moment - if it's not
and you know how to make it so - please send a PR! Finding good information on
this has been difficult.
## Testing
Tested with Jasmine - these can be run using SpecRunner.html which runs them in
the browser, or by node using [node-jasmine][node-jasmine] (`npm test`).
## About
This project does things quite similarly to [jsTodoTxt][jsTodoTxt]; it also:
- Has a list container that allows for actions on the list (such as add, append, pri, sorting etc.) from the CLI tool.
- Should be both client and server compatible.
- Contains an EBNF notation.
> Why not fork? I wanted to have a bash at building a JS lib from scratch :)
Primarily developed for a [todotxt-demo][todotxt-demo] app.
[format]: https://github.com/ginatrapani/todo.txt-cli/wiki/The-Todo.txt-Format
[jsTodoTxt]: https://github.com/jmhobbs/jsTodoTxt
[todotxt-demo]: https://github.com/rmasters/todotxt-demo
[travisci-img-master]: https://travis-ci.org/rmasters/todotxt.js.png?branch=master
[travisci-img-develop]: https://travis-ci.org/rmasters/todotxt.js.png?branch=develop
[travisci]: https://travis-ci.org/rmasters/todotxt.js
[node-jasmine]: https://npmjs.org/package/jasmine-node