Commit graph

148 commits

Author SHA1 Message Date
John Wiegley
bbdab79302 Rearranged the code a bit, breaking walk.cc into several different files:
compare         compare_items<T>
  handler         item_handler<T>
  iterators       used to iterators sets of journal objects
  filters         derived from item_handler, they morph the result set
  output          derived from item_handler, these do the printing

Also, created a new 'help' files which contains just Ledger's help text.
2008-08-03 21:38:53 -04:00
John Wiegley
3e4b016940 Added several missing copyright notices. 2008-08-03 20:56:43 -04:00
John Wiegley
5a90fe7357 Moved xact_xdata_t into xact_t itself, as a set of "extended data" that might
be gathered during reporting.

Removed the references to accounts and such from the mask logic, which means
that the value expression "acount =~ /foo/" is needed in place of just
"/foo/".
2008-08-02 22:45:35 -04:00
John Wiegley
e52a6a9bd8 More infrastructure work toward getting journal objects to provide their own
information in an abstract manner.
2008-08-02 16:32:16 -04:00
John Wiegley
9a9e06554e Formatting now relies exclusively on value expressions.
What this means is that the utility code, basic math, value expressions,
string formatting and option handling are now entirely decoupled from the rest
of the code.  This decoupling not only greatly simplifies the more basic parts
of Ledger, but makes it much easier to test and verify its completeness.

For example, when the formatting code %X is seen by the format parser, it
turns into a call to the expression function fmt_X, which must be defined when
the format string is first compiled against an object.  If that object is a
transaction, the transaction's scope will be the first to have a chance at
providing a definition.  If an account is being reported, it will.  If neither
does, the next scope in sequence -- soon to be the current report -- will, and
then the session object that "owns" the current Ledger session.

In 2.6, the formatting code new everything about transaction and accounts, and
relied on flags to communicate special details between them.  Now the
transaction will offer the details for its own reporting, while the formatter
worries only about strings and how to output them.
2008-08-02 06:42:36 -04:00
John Wiegley
858978de89 Journal data structures now use date_t instead of datetime_t.
This means transactions can only have day-level granularity -- which has
always been the case from an data file point of view.  The advantage to this
restriction is that reports will now be immune from daylight savings related
bugs, where a transaction falls to the wrong side of a --monthly report, for
example.
2008-08-01 17:37:22 -04:00
John Wiegley
e5048ec71b Change many uses of for+iterator to use Boost.Foreach. 2008-07-31 17:48:29 -04:00
John Wiegley
99313ebc6c Revised the way that exceptions are thrown around. Instead of context being a
complicated string of pointers, it's now just a global block of text that gets
appended to as the error is being thrown up, and can be displayed at the catch
point if desired.  There are almost no cases where a thrown exception will not
result in an error message being displayed to the user.
2008-07-31 06:24:45 -04:00
John Wiegley
8afd926a27 Cleaned up some method names and documentation relating to values. 2008-07-31 05:05:24 -04:00
John Wiegley
2aff35215f Enabled a huge number of warning flags for g++ in acprep, and fixed them all
except for several unused parameter warnings (because there is so much code
still #if 0'd out), and one implicit conversion from long long to long which
still has to be dealt with.
2008-07-30 05:12:46 -04:00
John Wiegley
1bb29cdbb7 The register report has begun printing real data, although not all the pieces
are in place yet and the formatting is still off.
2008-07-29 21:44:21 -04:00
John Wiegley
42e1d725aa The next value expression scheme is working, but the individual accessor
functions for each of the journal objects has yet to be ported.
2008-07-29 21:05:08 -04:00
John Wiegley
ea27d1b45a Moved around and renamed a very large amount of code in order to rationalize
the way that value expressions extract information from journal objects.
2008-07-29 20:10:03 -04:00
John Wiegley
4518ea9540 Value expression architecture is now rewritten, but the functionality of the
old system (for example, the meaning of 'a') has yet to be restored.  In the
new scheme, this will be done by definition a function outside of the value
expression logic, rather than the tight coupling between journal innards and
value expressions that occurred in 2.x.
2008-07-29 05:59:38 -04:00
John Wiegley
0c76ac5b8f Merge branch 'master' into v2.7a 2008-07-27 19:50:25 -04:00
John Wiegley
c93175183e Added the concept of "balance setting transactions". 2008-07-27 18:37:55 -04:00
John Wiegley
9e9f25b566 'make check' is now working again. Also, conversion from amount_t to/from
double has been disabled, because I am no longer packaging the gdtoa library
with Ledger (because double conversion really has nothing to do with what
Ledger does).  If you wish to use it, you can find gdtoa in cpp-rewrite-2006,
under a sub-directory of the same name.
2008-07-27 01:03:41 -04:00
John Wiegley
162d982b0c The --verify option is now working properly again. Use "--verify --verbose"
if you wish to see memory usage statistics along with a top-level trace.
2008-07-26 05:06:06 -04:00
John Wiegley
961b30926b --verify works again, but the memory totals at the end still need work. 2008-07-26 04:08:55 -04:00
John Wiegley
643f2d33cf More work toward getting the textual parser working again. Since this means
that value expressions must work, there are a lot of details involved.
2008-07-24 09:02:47 -04:00
John Wiegley
7409b050be More fixes to restore parsing capability. 2008-07-23 19:40:01 -04:00
John Wiegley
f0f2b34ea9 More work toward getting my ledger data to parse. 2008-07-22 03:48:35 -04:00
John Wiegley
4bc29e1351 A great deal of reorganization to restore the old parsing code (since the
newer XML stuff was pulled).
2008-07-22 02:23:45 -04:00
John Wiegley
d86a91d45b The new XPath parser has been integrated, although I have removed the
XML-related bits -- I just wanted the better infrastructure that had been
created during the rewrite.  It doesn't work, but it compiles and links now.
This means that all of the previous 3.0 code has been moved over, although
there are still snippets of code in pending/old that need to be restored.
2008-07-20 23:12:04 -04:00
John Wiegley
b85e9ba95f Everything but main.cc is compiling again (but with much #if 0'd code). 2008-07-20 06:00:06 -04:00
John Wiegley
20e35aa6f5 I have walked further along the road less compiled by... 2008-07-20 05:32:09 -04:00
John Wiegley
52fc9f2e44 Brought in the final round of 3.0 code, although it does not compile yet:
report, session, parts of xpath, main, journal, option.
2008-07-20 05:03:54 -04:00
John Wiegley
59f6ffb863 Added a tracing statement. 2008-07-19 23:28:54 -04:00
John Wiegley
88634973a2 Some basic fixes to get things almost running, although we still can't parse
my personal ledger file yet.
2008-07-19 23:10:37 -04:00
John Wiegley
d568319495 Merged in bug fixes from master (done for 2.6.1b) 2008-07-19 21:36:34 -04:00
John Wiegley
8e49f5242f Erroneously compared a character position to NUL, rather than setting it. 2008-07-19 21:31:36 -04:00
John Wiegley
56cfd84576 Disabled an error check that has no real value in 2.6. 2008-07-17 21:37:19 -04:00
John Wiegley
595452e332 Protect against a case where xact->entry may legitimately be NULL. 2008-07-17 20:55:15 -04:00
John Wiegley
ed0deb95c2 Strip \r from all lines read. 2008-07-17 18:31:36 -04:00
John Wiegley
a210e8ba56 Fixed several issues with clocking out in a timelog, which was leading to an
invalid memory access.
2008-07-17 18:08:22 -04:00
John Wiegley
95f323f137 Added several more date/time fixes from Nathan Jones. Fixes #49. 2008-07-17 06:19:40 -04:00
John Wiegley
f3b182ca80 Patch from Nathan Jones so that trailing whitespace after account names in a
transaction with no amount is not parsed as a special name.  Fixes #3.
2008-07-16 03:54:50 -04:00
Nathan Jones
780135281d Fix compile errors with gcc 4.3 2008-05-20 17:13:34 -06:00
John Wiegley
2ead28363a Most things are building, but not the Python code 2008-05-12 05:10:08 -04:00
John Wiegley
d159501993 The code is compiling again, but it's far from being able to run yet. 2008-05-08 02:50:19 -04:00
John Wiegley
e3aacac7f0 Improvements to the position calculation logic during parsing. 2008-04-13 05:08:55 -04:00
John Wiegley
9ec136db90 *** empty log message *** 2008-04-13 02:41:32 -04:00
John Wiegley
5a93d4819e Reworked the way date/times are handled. 2008-04-13 02:41:32 -04:00
John Wiegley
c3c401ac0f *** empty log message *** 2008-04-13 02:41:32 -04:00
John Wiegley
a5aff9eee9 Several fixes to lot price handling. 2008-04-13 02:41:31 -04:00
John Wiegley
44561c1c1d Further refinement of commodity lot information. 2008-04-13 02:41:31 -04:00
John Wiegley
32bdfe20d9 Tons of corrections and fixes to value expressions and lot figures. 2008-04-13 02:41:31 -04:00
John Wiegley
9800e3febc *** empty log message *** 2008-04-13 02:41:31 -04:00
John Wiegley
b1a04923fe *** empty log message *** 2008-04-13 02:41:30 -04:00
John Wiegley
2964dd15b2 *** empty log message *** 2008-04-13 02:41:30 -04:00