#txt-file #context #date #parser #regex #projects #struct

libdonow

一个高效的解析和操作 todo.txt 文件的 Rust 库

1 个不稳定版本

0.1.0 2024 年 8 月 23 日

8#txt-file

MIT 许可证

39KB
671

libdonow

一个针对 todo.txt 格式的 Rust 库。该库支持该格式的所有功能,包括优先级、上下文、项目和到期日期。该库是 donow 应用的基础,这是一个使用 Tauri 框架编写的原生 todo.txt 应用程序。

libdonow 具有多种功能,可以轻松地处理 todo.txt 文件。您可以使用自定义的 TodoFile 包装结构体打开 todo.txt 文件,该结构体具有各种与文件交互的方法。

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);
}

TodoFile 结构体还具有各种实现和方法,感觉像 Vec 结构体,但有一些额外功能。

该库还具有强大的功能来处理单个 todo 项。每个 todo 项都使用一些复杂的正则表达式功能进行解析,并存储在名为 Todo 的结构体中。该 Todo 结构体采用“仅所需”的方法,因此您有各种函数和实用程序来检索所需的内容,而无需解析整个 todo 项。

例如,TodoFile 结构体中的 get_projects 方法返回 todo.txt 文件中所有项目的 Vec。为此,它仅解析 todo.txt 文件中的项目,并返回它们。

for todo in &self.todos {
    if let Ok(Some(project)) = todo.parse_project() {
        projects.push(project);
    }
}

有关该库的更多信息,请参阅 文档

贡献

如果您想为该项目做出贡献,请随意fork 仓库并提交 pull request。

许可证

本项目受 MIT 许可证许可 - 有关详细信息,请参阅 LICENSE 文件。

依赖项

~5.5–7.5MB
~133K SLoC