Commit Graph

27 Commits

Author SHA1 Message Date
Simon Michael
0f5ee154c4 lib: simplify parsers; cleanups (#275)
The journal/timeclock/timedot parsers, instead of constructing (opaque)
journal update functions which are later applied to build the journal,
now construct the journal directly (by modifying the parser state). This
is easier to understand and debug. It also removes any possibility of
the journal updates being a space leak. (They weren't, in fact memory
usage is now slightly higher, but that will be addressed in other ways.)

Also:

Journal data and journal parse info have been merged into one type (for
now), and field names are more consistent.

The ParsedJournal type alias has been added to distinguish being-parsed
and finalised journals.

Journal is now a monoid.

stats: fixed an issue with ordering of include files

journal: fixed an issue with ordering of included same-date transactions

timeclock: sessions can no longer span file boundaries (unclocked-out
sessions will be auto-closed at the end of the file).

expandPath now throws a proper IO error (and requires the IO monad).
2016-05-23 00:44:19 -07:00
Simon Michael
207922a023 lib: Commodity now has a CommoditySymbol and style 2016-05-08 08:07:27 -07:00
Simon Michael
b22cb66319 refactor amount filtering helpers 2014-05-23 13:10:36 -07:00
Simon Michael
2844333857 less debug output from some low-level functions 2014-04-03 18:49:57 -07:00
Simon Michael
46d594bada balance, register now filter more strongly by sym: 2014-02-27 17:47:47 -08:00
Simon Michael
4567e91409 refactor: move amount display settings out of commodity, simplify amount construction 2012-11-19 21:20:10 +00:00
Simon Michael
00f22819ae balance report speedup
This refactoring fixes an O(n^2) slowdown in the balance command with
large numbers of accounts. It's now speedy, and the implementation is
clearer. To facilitate this, the Account type now represents a tree of
accounts which can easily be traversed up or down (and/or flattened
into a list).

Benchmark on a 2010 macbook:

    +-------------------------------------------++--------------+------------+--------+
    |                                           || before:      | after:     |        |
    |                                           || hledger-0.18 | hledgeropt | ledger |
    +===========================================++==============+============+========+
    | -f data/100x100x10.journal     balance    ||         0.21 |       0.07 |   0.09 |
    | -f data/1000x1000x10.journal   balance    ||        10.13 |       0.47 |   0.62 |
    | -f data/1000x10000x10.journal  balance    ||        40.67 |       0.67 |   1.01 |
    | -f data/10000x1000x10.journal  balance    ||        15.01 |       3.22 |   2.36 |
    | -f data/10000x1000x10.journal  balance aa ||         4.77 |       4.40 |   2.33 |
    +-------------------------------------------++--------------+------------+--------+
2012-10-21 17:18:18 +00:00
Simon Michael
294a350993 promote Hledger.Query to second level 2012-05-16 07:57:10 +00:00
Simon Michael
3ee6a351f3 big query/tests/show refactoring
- use new query system for command line too, filterspec is no more
- move unit tests near the code they test, run them in bottom up order, add more
- more precise Show instances, used for debugging not ui
2012-05-27 18:14:20 +00:00
Simon Michael
88212f26e8 simplify journal parser names 2012-05-09 15:34:05 +00:00
Simon Michael
c010448935 drop little-used clashing Ledger accessors 2012-05-09 15:33:16 +00:00
Simon Michael
e1b1b8bce8 rename Matcher to Query, simplify constructors 2012-05-16 07:12:49 +00:00
Simon Michael
a27eb7c29f more matcher -> query renaming 2012-05-16 07:37:24 +00:00
Simon Michael
43d78398bb Hledger.Data.Matching -> Hledger.Data.Query 2012-05-16 06:50:08 +00:00
Simon Michael
77ca58269a misc helpers 2011-08-07 15:31:36 +00:00
Simon Michael
8d0b42e1d5 web: an "a" parameter specifies a query expression for filtering the accounts sidebar
Useful for ui experiments, at least
2011-06-28 22:34:45 +00:00
Simon Michael
5084280879 imports, api cleanup 2011-05-28 04:11:44 +00:00
Simon Michael
dd9e78a67a reorganize tests 2010-12-27 20:26:22 +00:00
Simon Michael
7d7159609b refactor: much renaming of ledger -> journal, hopefully the right amount 2010-07-13 06:30:06 +00:00
Simon Michael
bf5ee88a30 refactor: clarify the roles of Journal (primary data) and Ledger (derived report) 2010-05-23 17:41:25 +00:00
Simon Michael
70576e87d1 refactor: move post-parse processing into parseJournal 2010-05-22 23:35:34 +00:00
Simon Michael
10c0a9a958 refactor: take an axe to canonicaliseAmounts 2010-05-22 20:23:36 +00:00
Simon Michael
11d354d426 refactor: renames and cleanups 2010-05-22 22:05:12 +00:00
Simon Michael
a3e5e7ce93 refactor: more ledger cleanup 2010-05-22 19:01:11 +00:00
Simon Michael
5982460782 refactor: clarify ledger construction a bit 2010-05-22 16:14:30 +00:00
Simon Michael
557746da5e remove redundant imports revealed by ghc 6.12 2010-05-22 15:33:51 +00:00
Simon Michael
7d4593cee9 move Ledger.* to Hledger.Data.* 2010-05-19 23:08:53 +00:00