Double-entry accounting ledger file format converter
Perl 6
Switch branches/tags
Nothing to show
Failed to load latest commit information.
bin s/returns/--> Mar 29, 2017
lib s/returns/--> Mar 29, 2017
t plan 1 Sep 4, 2016
.gitignore Initial import Sep 1, 2016
.hgignore Initial import Sep 1, 2016
.travis.yml update libxxhash to 0.6.3, -DBUILD_SHARED_LIBS=ON Sep 12, 2017 replace panda with zef Aug 11, 2017
META6.json Use SPDX identifier in license field of META6.json Apr 21, 2017 add cmdline readme, module stubs Sep 1, 2016
UNLICENSE Initial import Sep 1, 2016


Double-entry accounting ledger file format converter



read TXN from stdin, write JSON to stdout:

cat sample.txn | txn-remarshal -if=txn -of=json

read TXN from sample.txn, write JSON to sample.json:

txn-remarshal -i=sample.txn -if=txn -of=json -o=sample.json


use TXN::Remarshal;

my Str $txn = Q:to/EOF/;
2014-01-01 "I started the year with $1000 in Bankwest"
  Assets:Personal:Bankwest:Cheque    $1000 USD
  Equity:Personal                    $1000 USD

# convenience wrappers
my TXN::Parser::AST::Entry @entry = from-txn($txn);
my Str $s = to-txn(@entry);

# txn ↔ entry
my TXN::Parser::AST::Entry @entry = remarshal($txn, :if<txn>, :of<entry>);
my Str $ledger = remarshal(@entry, :if<entry>, :of<txn>);

# entry ↔ hash
my Hash @a = remarshal(@entry, :if<entry>, :of<hash>);
my TXN::Parser::AST::Entry @e = remarshal(@a, :if<hash>, :of<entry>);

# hash ↔ json
my Str $json = remarshal(@a, :if<hash>, :of<json>);
my Hash @b = remarshal($json, :if<json>, :of<hash>);



Test Dependencies

To run the tests:

$ git clone && cd txn-remarshal
$ peru --file=.peru.yml --sync-dir="$PWD" sync
$ PERL6LIB=lib prove -r -e perl6


This is free and unencumbered public domain software. For more information, see or the accompanying UNLICENSE file.