14 个稳定版本 (6 个主要版本)
7.0.0 | 2024年6月6日 |
---|---|
6.0.0 | 2024年3月5日 |
5.1.1 | 2022年4月21日 |
5.1.0 | 2022年1月24日 |
1.0.1 | 2018年10月22日 |
#264 在 解析器实现
每月31次 下载
在 ledger-utils 中使用
100KB
2.5K SLoC
ledger-parser
Rust 库,用于解析 Ledger-cli 输入文件。
文件格式
仅实现了 ledger-cli 文件格式的一部分。
支持元素
-
行注释(以:
; # % | *
开始) -
内联注释(以
;
开始) -
具有(在
DESC 和
NOTE
之间至少有两个空格或一个制表符)格式的交易标题DATE[=EDATE] [*|!] [(CODE)] DESC [; NOTE]
-
具有(在
ACCOUNT 和
AMOUNT
之间至少有两个空格或一个制表符)格式的交易分录ACCOUNT [AMOUNT] [= BALANCE] [; NOTE]
-
支持虚拟账户
-
支持带有日期、生效日期和元数据标签的记账注释
ACCOUNT [AMOUNT] [= BALANCE] ; [YYYY-MM-DD] ACCOUNT [AMOUNT] [= BALANCE] ; [=YYYY-MM-DD] ACCOUNT [AMOUNT] [= BALANCE] ; :TAG1:TAG2: ACCOUNT [AMOUNT] [= BALANCE] ; Tag: String Value ACCOUNT [AMOUNT] [= BALANCE] ; Tag:: -1 ACCOUNT [AMOUNT] [= BALANCE] ; Tag:: 1.0 ACCOUNT [AMOUNT] [= BALANCE] ; Tag:: [YYYY-MM-DD]
-
-
AMOUNT
可以与批次和商品价格 ({}, {{}}, @, @@) 结合 -
具有格式的商品价格
P DATE SYMBOL PRICE
-
命令指令:
include
示例
解析
let ledger: ledger_parser::Ledger = r#"; Example 1
2018-10-01=2018-10-14 ! (123) Description
; Transaction comment
TEST:Account 123 $1.20
; Posting comment
TEST:Account 345 -$1.20"#
.parse()?;
序列化
use ledger_parser::{ Serializer, SerializerSettings };
println!("{}", ledger);
println!("{}", ledger.to_string_pretty(&SerializerSettings::default().with_indent("\t")));
另请参阅
- ledger-utils - ledger-cli 文件处理 Rust 库,用于计算余额、创建报告等。
依赖关系
~3MB
~55K SLoC