Commit graph

85 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
dfc14dfff3 Re-enabled almost all of the old reporting code, which means it compiles now
within the new scheme.
2008-08-02 23:34:28 -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
ea3b386062 Added a new 'format' debugging command, which dissects the formatting
expression in its argument.
2008-08-01 03:44:22 -04:00
John Wiegley
567902b173 Simplified the format_t code so that it no longer references any particulars
about journal objects.  This is all done through value expressions now.
2008-08-01 01:37:58 -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
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
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
713f896790 A large body of work to get the register report printing again, but still
fails due to the fact that 2.x value expression syntax is not restored.
2008-07-27 00:10:35 -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
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
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
f9b874e1cb Added elision styles. 2008-04-13 02:41:32 -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
2964dd15b2 *** empty log message *** 2008-04-13 02:41:30 -04:00
John Wiegley
82d0ee869b Added --ansi and --ansi-invert options. 2008-04-13 02:41:30 -04:00
John Wiegley
47e2a34176 *** empty log message *** 2008-04-13 02:41:29 -04:00
John Wiegley
e32d9e64a7 Added much better error location. 2008-04-13 02:41:29 -04:00
John Wiegley
b737cd8e6d Added a DATETIME value type. 2008-04-13 02:41:29 -04:00
John Wiegley
7acc1306d9 *** empty log message *** 2008-04-13 02:41:29 -04:00
John Wiegley
9db08c4c7d (read_binary_journal): Fixed a tiny memory leak when reading from a
binary cache.
2008-04-13 02:41:28 -04:00
John Wiegley
7901598f1d Checked in all major updates. 2008-04-13 02:41:27 -04:00
John Wiegley
2df14a5b86 Transactions now track their beginning and ending position, as do
entries.  The new format strings %xB %xE %xb %xe can be used to
display those values relative to a transaction.  The Emacs module now
relies on this support to exactly determine where a transaction is,
rather than the Elisp logic it relied on previously.
2008-04-13 02:41:24 -04:00
John Wiegley
a8012940f4 Removed Python integration support. 2008-04-13 02:41:21 -04:00
John Wiegley
eb0525e315 See ChangeLog 2008-04-13 02:41:19 -04:00
John Wiegley
a53f44ecda Support has been added for clearing of individual transactions. Set
`ledger-clear-whole-entries' in Emacs to revert to the old behavior.
2008-04-13 02:41:19 -04:00
John Wiegley
66b4147958 (class format_account): Fixed initialization order 2008-04-13 02:41:14 -04:00
John Wiegley
b5726ac831 (struct element_t): Added BEG_LINE and END_LINE. 2008-04-13 02:41:12 -04:00
John Wiegley
c0285de46b Moved `format_xml_entries' to xml.cc. 2008-04-13 02:41:03 -04:00
John Wiegley
3ddd46c307 (format_xml_entries): Moved the stream finalization to flush(), where
it belongs.
2008-04-13 02:41:03 -04:00
John Wiegley
16e449dc05 Added pystream_handler_wrap class, which wraps an item_handler taking
a std::ostream so that it can take a PyObject* instead.  Relies on
pyfstream.h, which allows Python file objects to be treating as I/O
streams.
2008-04-13 02:41:02 -04:00
John Wiegley
4fda551752 (parse_elements): Added %S, %B and %E elements, for printing the
source path, beginning and ending positions of an entry.
2008-04-13 02:40:54 -04:00
John Wiegley
c9fb11bd60 updated to version 2.0 2008-04-13 02:40:47 -04:00
John Wiegley
a32173ace6 changes 2008-04-13 02:40:47 -04:00
John Wiegley
ba2c04072c fixed several segfaults (using new option-scrambler test harness) 2004-09-27 18:08:48 -04:00
John Wiegley
d110df6741 added a custom transaction formatter, format_entries, used by "print" 2004-09-24 06:29:01 -04:00
John Wiegley
84259bde51 changed ledger.h to journal.h; moved adding of autoxact hook 2004-09-23 21:37:39 -04:00
John Wiegley
a7ea33a8ec passing --enable-python to configure is now required for python support 2004-09-20 04:07:02 -04:00
John Wiegley
5429792edc the "bal" command mostly works now in main.py; added a finalize_entry hook 2004-09-20 03:25:28 -04:00
John Wiegley
18879bbe85 some changes in the way formatting strings are handled; for simplicity 2004-09-18 02:33:51 -04:00
John Wiegley
79b664f6f0 changed the management of "xdata" in walk.h 2004-09-17 04:38:24 -04:00
John Wiegley
061e19e302 make config_t visible to Python; almost possible to implement main.cc in main.py 2004-09-14 06:25:29 -04:00
John Wiegley
ff4589caae added support for ValueExpr objects to python. 2004-09-10 20:08:07 -04:00
John Wiegley
435b9ed779 added python support for Format() objects. see main.py 2004-09-10 19:52:51 -04:00
John Wiegley
63367e3aac the amount/balance/value logic is now a library, completely separate from ledger 2004-08-29 23:32:29 -04:00
John Wiegley
032afa5657 a bit of a reorg; still much more to go 2004-08-29 03:23:55 -04:00