SYNOPSIS

     use Ledger::Parser;
     my $ledgerp = Ledger::Parser->new(
         # year              => undef,        # default: current year
         # input_date_format => 'YYYY/MM/DD', # or 'YYYY/DD/MM',
     );
    
     # parse a file
     my $journal = $ledgerp->read_file("$ENV{HOME}/money.dat");
    
     # parse a string
     $journal = $ledgerp->read_string(<<EOF);
     ; -*- Mode: ledger -*-
     09/06 dinner
     Expenses:Food          $10.00
     Expenses:Tips         5000.00 IDR ; 5% tip
     Assets:Cash:Wallet
    
     2013/09/07 opening balances
     Assets:Mutual Funds:Mandiri  10,305.1234 MFEQUITY_MANDIRI_IAS
     Equity:Opening Balances
    
     P 2013/08/01 MFEQUITY_MANDIRI_IAS 1,453.8500 IDR
     P 2013/08/31 MFEQUITY_MANDIRI_IAS 1,514.1800 IDR
     EOF

    See Ledger::Journal for available methods for the journal object.

DESCRIPTION

    EARLY RELEASE, SOME THINGS ARE NOT IMPLEMENTED YET.

    This module parses Ledger journal into Ledger::Journal object.

    See http://ledger-cli.org/ for more on Ledger, the command-line
    double-entry accounting system software.

    Ledger 3 can be extended with Python, and this module only supports a
    subset of Ledger syntax, so you might also want to take a look into the
    Python extension. However, this module can also modify/write the
    journal, so it can be used e.g. to insert transactions programmatically
    (which is my use case and the reason I first created this module).

    This is an inexhaustive list of things that are not yet supported:

      * Costs & prices

      For example, things like:

       2012-04-10 My Broker
          Assets:Brokerage            10 AAPL @ $50.00
          Assets:Brokerage:Cash

      * Automated transaction

      * Periodic transaction

      * Expression

      * Various command directives

      Including but not limited to: assert, C (currency conversion), ...

ATTRIBUTES

 input_date_format => str ('YYYY/MM/DD' or 'YYYY/DD/MM')

    Ledger accepts dates in the form of yearless (e.g. 01/02, 3-12) or with
    4-digit year (e.g. 2015/01/02, 2015-3-12). Month and day can be single-
    or double-digits. Separator is either - or /.

    When year is omitted, year will be retrieved from the year attribute.

    The default format is month before day (YYYY/MM/DD), but you can also
    use day before month (YYYY/DD/MM).

 year => int (default: current year)

    Only used when encountering a date without year.


METHODS

 new(%attrs) => obj

    Create a new parser instance. Return parser object.

 $ledgerp->read_file($filename) => obj

    Parse a journal file. Return Ledger::Journal document object.

 $ledgerp->read_string($str) => obj

    Parse a journal string. Return Ledger::Journal document object.