| Crates.io | ledger-parser |
| lib.rs | ledger-parser |
| version | 7.0.0 |
| created_at | 2018-10-22 10:30:12.706357+00 |
| updated_at | 2024-06-06 16:15:43.766345+00 |
| description | Rust library for parsing ledger cli (https://www.ledger-cli.org/) input files. |
| homepage | |
| repository | https://github.com/marek-g/rust-ledger-parser |
| max_upload_size | |
| id | 91954 |
| size | 103,939 |
Rust library for parsing Ledger-cli input files.
Only a subset of the ledger-cli's file format is implemented.
Supported elements:
Line comments (starting with: ; # % | *)
Inline comments (starting with ;)
Transaction headers with format (minimum two spaces or one tab between DESC and NOTE):
DATE[=EDATE] [*|!] [(CODE)] DESC [; NOTE]
Transaction postings with format (minimum two spaces or one tab between ACCOUNT and AMOUNT):
ACCOUNT [AMOUNT] [= BALANCE] [; NOTE]
Virtual accounts are supported
Posting comments with dates, effective dates, and metadata tags are supported
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 can be combined with lot and commodity prices ({}, {{}}, @, @@)
Commodity prices with format:
P DATE SYMBOL PRICE
Command directives: include
Parsing:
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()?;
Serializing:
use ledger_parser::{ Serializer, SerializerSettings };
println!("{}", ledger);
println!("{}", ledger.to_string_pretty(&SerializerSettings::default().with_indent("\t")));