#tsv #json #read-write #bcheckbook

bcheck

一个可以读取和写入由iOS和Mac的BCheckbook生成的bcheck和tsv文件的库

8个版本

0.3.3 2023年11月13日
0.3.2 2023年5月18日
0.3.0 2022年1月14日
0.2.2 2021年7月26日
0.1.0 2021年7月18日

#766 in 编码

MIT许可证

38KB
563

=bcheck=

'''作者:''' Bryce Campbell

'''许可证:''' 请参阅LICENSE

'''描述:''' 一个Rust的crate,允许用户读取和写入由BCheckbook生成的bcheck文件。

'''版本:''' 0.3.3

==注意==

此crate已在macOS上的Rust 1.59.0和Windows上的Rust上进行了测试。不知道它是否会在更早的版本中工作,尽管如果依赖项也向后兼容,它应该会。

===创建此库的原因===

在制作了一个可以作为账本的应用程序之后,我想创建一种在Rust中读取和写入保存的方法,这样我就可以创建除macOS和iOS以外的应用程序,并学习更多关于serde的知识,看看我是否可以像在Swift中使用Codable一样定制序列化和反序列化,并希望节省他人查找正确读取这些文件的时间。

由于当前Rust的GUI编程状态以及我在iOS上遇到的问题,我可能需要一段时间才能实际使用此代码,但应该非常有用。

===版本历史===

0.1
首次发布。发布于2021年7月18日
0.2

使创建记录对象更容易,这样就不需要暴露依赖项,并删除不需要的重新导出。

发布于2021年7月19日

0.2.1

使从字符串中解析交易类型成为可能。发布于2021年7月23日

0.2.2

添加扩展trait,为String和str添加方法以简化日期获取。发布于2021年7月26日

0.3

更新交易模型以反映bcheck格式的当前状态。

发布于2022年1月13日

0.3.1

添加TSV导入和导出支持,通过实现使用制表符分隔的字符串创建项的方法。

发布于2023年5月17日

0.3.2

修复TSV支持,由于找不到方法。

发布于2023年5月18日

0.3.3

修复文档并确保TSV支持按预期运行。

请注意,单元测试可能需要运行两次,因为如果没有文件,TSV读取测试会失败,并且测试是随机完成的。

发布于2023年11月13日

===用法===

要使用此库,请将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
bcheck = "0.3"

之后,如果您只需要Record类型,可以像这样简单使用

use bcheck::Record;

在需要时还可以使用其他两个类型,它们是 TransactionTransactionType

这三个应该提供解析 bcheck 文件所需的一切,并在代码中对它们进行操作。

====保存数据====

要保存数据,除了 Record 类型外,还需要导入 Save 特性,这将为类型 Vec 的向量启用保存方法。

可以这样操作

use bcheck::{ Record, Save }

之后,可以这样调用

let records = vec![Record::new()];

if let Err(error) = records.save("/Users/bob/Documents/example.bcheck") {
    println!("{}", error)
}

TSV 数据可以通过使用 save_tsv() 方法来保存,与上面看到的方法类似。

====加载数据====

要加载数据,只需要加载记录类型并使用以下方法之一

if let Ok(records) = Record::from_file("/Users/bob/Documents/example.bcheck") {
    print!("{}", records[0])
}

这将从 JSON 文件中加载。

if let Ok(records) = Record::from_tsv_file("/Users/bob/Documents/example.bcheck") {
    print!("{}", records[0])
}

这将从 TSV 文件中加载记录。

请注意,TSV 支持是以期望总共有 9 列的方式编写的,尽管某些字段可以为空。

因此,建议您在 MS Excel 或 LibreOffice 中生成 TSV,以便您可以验证是否具有适当的标签数量。

===创建日期对象===

如果您导入了 LocalDateTimeStringExt 特性,日期可以创建如下所示

"2021-7-26".local_dateime().unwrap()

===贡献===

如果您认为可以帮助改进这个项目,请随时fork此项目并提交拉取请求。

类似于 BCheckbook 程序,我将测试这些更改,看看它们是否按预期工作。

===支持===

由于我的 Rust 经验有限,与我的 Rust 经验相比,我无法提供太多支持,因此请自行处理。

然而,我可以尝试解决问题,因此请随时通过以下电子邮件联系我

[email protected]

依赖项

~4–6.5MB
~115K SLoC