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