ledgerjournal
ledgerjournal is a Ruby gem to read and write ledger accounting files. For parsing, it uses the ledger xml command. For outputting, it formats the ledger data as String in Ruby. The ledger binary needs to be installed to parse and pretty-print.
Usage
Parsing a ledger journal file:
journal = Ledger::Journal.new(path: "example_journal.dat")
journal.transactions.each do |tx|
puts tx.date, tx.payee
end
Creating a ledger file from scratch:
journal = Ledger::Journal.new()
journal.transactions << Ledger::Transaction.new(
date: Date.new(2020, 1, 2),
payee: 'Example Payee',
metadata: { "Foo" => "Bar", "Description" => "Example Transaction" },
postings: [
Ledger::Posting.new(account: "Expenses:Unknown", currency: "EUR", amount: BigDecimal('1234.56'), metadata: { "Foo" => "Bar", "Description" => "Example Posting" }),
Ledger::Posting.new(account: "Assets:Checking", currency: "EUR", amount: BigDecimal('-1234.56'))
]
)
puts(journal.to_s)
Appending to a ledger journal:
journal = Ledger::Journal.new(path: "example_journal.dat")
journal.transactions << Ledger::Transaction.new(
date: Date.new(2020, 1, 2),
payee: 'Example Payee',
postings: [
Ledger::Posting.new(account: "Expenses:Unknown", currency: "EUR", amount: BigDecimal('1234.56')),
Ledger::Posting.new(account: "Assets:Checking", currency: "EUR", amount: BigDecimal('-1234.56'))
]
)
journal.save!
Running ledger commands:
puts Ledger.defaults.run('--version')
Locale-specific settings
By default ledgerjournal expects the date format '%Y/%m/%d' and amounts with decimal point (1234.56). This is configurable:
Ledger.defaults = Options.new(date_format: '%d.%m.%Y', decimal_comma: true)
or:
Ledger.defaults = Ledger::Options.for_locale(:de)
Installation
Add this line to your application's Gemfile:
gem 'ledgerjournal'
Or install it yourself as:
$ gem install ledgerjournal
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/ralfebert/ledgerjournal.
License
ledgerjournal is released under the MIT License. See LICENSE.md.