Commit graph

568 commits

Author SHA1 Message Date
John Wiegley
eb364f4183 Improved the way that entries are balanced 2009-02-24 03:03:04 -04:00
John Wiegley
267b2ba5d8 Made commodity reduction during parsing consistent 2009-02-24 02:40:28 -04:00
John Wiegley
2422838005 Restored the price conversion text directive (C) 2009-02-24 02:34:48 -04:00
John Wiegley
625b94cf04 Switched from using POST_AUTO to ITEM_GENERATED 2009-02-24 02:23:20 -04:00
John Wiegley
cb751913ef Fixed a minor bug in handling of automated xacts
There was a if statement with an inverse boolean meaning, which caused
some automated transaction postings to have a null amount.
2009-02-23 19:20:57 -04:00
John Wiegley
944c63e6f2 The Great Renaming, Part II
The last commit did not contain the majority of changes because of a
slight mishap.  This contains the real changeset.
2009-02-23 19:07:30 -04:00
John Wiegley
72a5e972c7 Always free memory at the end of a run
It turns out this is needed in order to properly close the pager
subprocess.
2009-02-23 17:28:13 -04:00
John Wiegley
4a43c22172 Restore the --gain option, for showing gain/loss 2009-02-23 15:47:09 -04:00
John Wiegley
f440fcd8b0 rounded() and quantity() act on the first value 2009-02-23 15:44:19 -04:00
John Wiegley
371fc62eec If interactive_t wants S, also accept bare values 2009-02-23 15:42:20 -04:00
John Wiegley
17fe4b752c If handle_value sees a sequence, make it compound 2009-02-23 15:39:18 -04:00
John Wiegley
a576842865 Added --revalued-total option, used by --gain
This option sets the total by which revalued transactions are
determined.  Only needed if the display total is not appropriate.
2009-02-23 15:37:39 -04:00
John Wiegley
aff7b56673 Added get_at and is_seq valexpr functions
These are for dealing with sequences.
2009-02-23 15:27:06 -04:00
John Wiegley
1406cbe853 Changed the constness of interactive_t::get<T> 2009-02-23 15:22:05 -04:00
John Wiegley
49d79045a5 Removed unused member keep_details_t::keep_base 2009-02-23 15:15:33 -04:00
John Wiegley
e919f53c99 Renamed O_COMMA to O_CONS, and changed semantics
In the old scheme, nested values would simply flatten and concatenate,
so that '((1, 2), 3) = (1, 2, 3)'.  Now sublists are preserved, so that
sequences may be passed as arguments to functions.
2009-02-23 15:04:07 -04:00
John Wiegley
9a44b8a547 Allow sequences to be compared to 0
It is true if every member of the sequence passes the test.
2009-02-23 14:49:03 -04:00
John Wiegley
f96daf5fde Corrects to code that compares balances to zero 2009-02-23 14:46:30 -04:00
John Wiegley
4ab50df564 Don't report collapsed subtotal if no xacts seen 2009-02-23 14:44:10 -04:00
John Wiegley
7b7814d466 Expr (a,b)+(c,d) is now equivalent to (a+c,b+d) 2009-02-23 14:41:11 -04:00
John Wiegley
27fc3a3d43 A sequence is false if all it contains is false 2009-02-23 14:38:36 -04:00
John Wiegley
bc1a196f02 Added non-const value_t::begin and value_t::end 2009-02-23 14:25:09 -04:00
John Wiegley
30005d1ba5 Push a sequence onto a sequence only appends now
Previously, it would merge sequences A and B.
2009-02-23 14:14:22 -04:00
John Wiegley
9f53efbf5f Many fixes to both --market and --exchange 2009-02-23 01:51:23 -04:00
John Wiegley
de6de07bac Many fixes to --market and --exchange
Also, --exchange now accepted multiple, comma-separated commodities.
2009-02-22 22:23:02 -04:00
John Wiegley
ea418c7fbc Allow date and datetime values to inter-convert 2009-02-22 22:22:54 -04:00
John Wiegley
f6b14cc34a The entry command no longer inherits item state 2009-02-22 19:00:55 -04:00
John Wiegley
25d62b63a2 Fixed bug: -- was not stopping option processing 2009-02-22 18:36:54 -04:00
John Wiegley
b01eb4a72f Accept #ARG or "code ARG" as a report query term 2009-02-22 17:55:01 -04:00
John Wiegley
ea75613760 --exchange option now accepts multiple commodities
They must be separated by a comma, and all whitespace is ignored.
2009-02-22 17:51:11 -04:00
John Wiegley
9e0d66610c Renamed acconf.h to config.h, for included gettext 2009-02-22 16:21:22 -04:00
John Wiegley
81f57ecc41 Correctly accept "false" as a keyword 2009-02-22 04:51:11 -04:00
John Wiegley
e124811d8a Added --exchange (-x) option
This is like -V, except it lets you specify the goal commodity to report
in terms of, for example:

    reg -x CAD
2009-02-22 04:51:11 -04:00
John Wiegley
04fd1ae24c Fixed the way values are justified for printing 2009-02-22 04:51:11 -04:00
John Wiegley
640279c65d Allow balances to be rounded and unrounded 2009-02-22 04:51:11 -04:00
John Wiegley
3e543d187c Changed --colors to --color, to match Git 2009-02-22 04:51:11 -04:00
John Wiegley
cebc1da256 Restored the --invert option 2009-02-22 04:51:08 -04:00
John Wiegley
3c5b5fbc0a Fix for systems that don't build with gettext 2009-02-22 01:40:45 -04:00
John Wiegley
348aae7478 Removed unused --totals option
This option was for outputting <total> elements in 2.x's XML output.
2009-02-22 01:29:34 -04:00
John Wiegley
eb4aa87843 Added a new --colors option, for terminal fun
The following colors are applied in the balance and register reports:

    GREEN   To a date, if it occurs in the future
    BOLD    If a payee name relates to an uncleared entry
    BLUE    For account names
    RED     For negative values
2009-02-21 22:04:01 -04:00
John Wiegley
8ca91c1196 Allow balance values to be compared < or > 0 2009-02-21 22:00:00 -04:00
John Wiegley
018c812fda Fixed a bug with interactive_t's arg validation 2009-02-21 21:58:53 -04:00
John Wiegley
c6d2420d09 Fixed an accumulator bug that was mangling errors 2009-02-21 21:57:55 -04:00
John Wiegley
b902894284 Added support for using GNU gettext 2009-02-21 20:21:13 -04:00
John Wiegley
66c5cd4427 Use a "format accumulator" for error strings
This makes it possible to internationalize strings while still using
I/O streams.  For example:

    std::cout << ACCUM(_("Hello to %1 and %2!") << "me" << "you")
              << std::endl;
2009-02-21 20:20:57 -04:00
John Wiegley
a577e8c48e Added a new --raw option, for use with print 2009-02-21 19:45:13 -04:00
John Wiegley
dc63429785 Removed an unused class: format_entries 2009-02-21 19:22:55 -04:00
John Wiegley
6b9c83b156 Use more general scrub valexpr function in formats 2009-02-21 19:05:30 -04:00
John Wiegley
1f39d4148e Create a new interactive_t helper class
The purpose of this class is much like Emacs' (interactive) form: it
allows a value expression function to declare exactly how many
arguments, and of what type, it intends to receive.  It then offers
type-safe access to theese arguments in a consistent manner.

An example value expression function definition in C++:

    value_t fn_foo(call_scope_t& scope) {
      // We expect a string, an integer, and an optional date
      interactive_t args(scope, "sl&d");

      std::cout << "String  = " << args.get<string>(0)
                << "Integer = " << args.get<long>(1) << std::endl;

      if (args.has(2)) // was a date provided?
        std::cout << "Date    = " << args.get<date_t>(2) << std::endl;

      return NULL_VALUE;
    }

There is also an in_context_t<T> template, which finds the context type
T in the current scope hierarchy.  The in_context_t then also acts as a
smart pointer to reference this context object, in addition to serving
the same duty as interactive_t.  This combination of intent is solely
for the sake of brevity.

    value_t fn_bar(call_scope_t& scope) {
      in_context_t<account_t> env(scope, "sl&d");
      std::cout << "Account name = " << env->fullname()
                << "String arg   = " << env.get<string>(0)
                << std::endl;
      return NULL_VALUE;
    }

As you can see here, 'env' acts as a smart pointer to the required
context, and an object to extract the typed arguments.
2009-02-21 18:49:43 -04:00
John Wiegley
067f512e94 The --help (-h, -H) options now visit the man page 2009-02-21 16:24:10 -04:00