1 unstable release
0.1.0 | Aug 23, 2024 |
---|
#2428 in Parser implementations
39KB
671 lines
libdonow
A rust library for the todo.txt format. The library supports all of the features of format, including priorities, contexts, projects, and due dates. This library is the basis for the donow application which is a native todo.txt application written using the Tauri Framework.
libdonow is has various features that make it easy to work with todo.txt files.
You can simply open up a todo.txt file using the custom TodoFile
wrapper struct that has
various methods to interact with the file.
use libdonow::file::TodoFile;
fn main(){
let file = TodoFile::new("todo.txt");
file.rearrange();
file.save();
println!("{}", file);
let todo = file[0];
todo.toggle_status();
println!("{}", todo);
}
The TodoFile struct also has various implementations and methods to feel like a Vec struct, but with some extra features.
The library also has powerful features to work with a single todo item.
Each todo item is parsed using some fancy regex features and is stored in a struct called Todo
.
the Todo
struct follows a only what's needed approach so you have various functions and utilities to retrieve only what is necessary
without having to parse the entire todo item.
For example, the get_projects
method in the TodoFile struct returns a Vec of all the projects in the todo.txt file.
To do this, it only parses the projects in the todo.txt file and returns them.
for todo in &self.todos {
if let Ok(Some(project)) = todo.parse_project() {
projects.push(project);
}
}
More information about the library can be found in the docs.
Contributing
If you would like to contribute to the project, feel free to fork the repository and submit a pull request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Dependencies
~3.5–5MB
~81K SLoC