Commit graph

1302 commits

Author SHA1 Message Date
John Wiegley
5fd91d26ce Corrected syntax errors found by Clang 2010-10-07 01:51:38 -04:00
John Wiegley
ab24901b9d Made -> have higher precedence than comma 2010-09-06 01:01:20 -04:00
John Wiegley
84780270f9 Added initial support for lambda functions 2010-09-06 00:56:00 -04:00
John Wiegley
e162455ebb Minor simplifications to valexpr parser
The most significant change is the way CONS sequences are parsed, and
that now instead of =/:=, the operators are ==/=.
2010-09-05 01:38:47 -04:00
John Wiegley
9fcf484826 Moved up to Boost 1.44 2010-08-24 00:03:52 -04:00
John Wiegley
48a5823181 Based symbol_needs_quotes an invalid_chars (#386) 2010-07-29 03:45:01 -04:00
John Wiegley
9edf413d9d Boost.Python fixes now that item_t is abstract 2010-07-29 03:36:54 -04:00
John Wiegley
03912a44ab The "source" command now accepts code from stdin 2010-06-26 01:09:07 -04:00
John Wiegley
61fcfd0698 The "print" valexpr function no longer adds spaces 2010-06-26 01:08:23 -04:00
John Wiegley
bd5a136ad0 Move balance divider right by prepend-width 2010-06-26 00:36:55 -04:00
John Wiegley
8a29c03490 Added "format" value expression function
This function evaluates formatting strings, returning a string.  For
example:

  format("%(amount)")

This is equivalent to "to_string(amount)".
2010-06-24 20:37:31 -04:00
John Wiegley
011bf030a2 Generalized the semantics of FOO.BAR in valexprs
Previously, FOO was evaluated to return a scope, and BAR was an
identifier looked up in that scope.  However, this prevented scope-local
functions from being called (since that is a CALL, not a plain IDENT).

Now the meaning of the "." operator is that it evaluates the left
operand in a scope type context, pushes that scope as the current object
context, and then evaluates BAR in that context.

Thus the bare word "amount" in an account context calls the same
function that "account.amount" would if evaluated in a posting context.
2010-06-24 20:37:12 -04:00
John Wiegley
35da9ad466 Added "source" command, for executing valexpr files 2010-06-24 20:29:20 -04:00
John Wiegley
024fb4f3e0 Fixed how valexpr function defs and calls work 2010-06-24 20:22:11 -04:00
John Wiegley
2f50e30b89 Scopes can now provide a description of themselves
This isn't being used yet, but it likely will to improve the information
presented to users if their value expressions fail to compile or
evaluate.
2010-06-24 19:53:59 -04:00
John Wiegley
bc51cd4651 Value scopes now take a parent scope for chaining 2010-06-24 19:40:16 -04:00
John Wiegley
129b2de901 "only" now a report query modifier for --only
This fits with "show" and "bold", etc.
2010-06-24 00:30:18 -04:00
John Wiegley
e8e28c794b Added report query modifiers: for, since, until
Now instead of ledger reg expense -p "this month", you can say:

  ledger reg expense for this month

And as a shorthand for "for until this month", you can just say "until
this month" or "since this month".
2010-06-22 21:56:19 -04:00
John Wiegley
266dee564f Price annotation no longer inject an implied cost
Consider the following transaction:

  2010-06-22 Sample
      Assets:Brokerage       10 AAPL {$30}
      Assets:Brokerage

Previously, this would have been equivalent to:

  2010-06-22 Sample
      Assets:Brokerage       10 AAPL @ $30
      Assets:Brokerage

However, this is not always what the user expects to happen.  When @ is
not being used, the transaction should reflect a mere transfer of
commodities.  This is now how it works, and thus the above transaction
is now equivalent to the following instead:

  2010-06-22 Sample
      Assets:Brokerage       10 AAPL {$30}
      Assets:Brokerage      -10 AAPL {$30}
2010-06-22 20:56:35 -04:00
John Wiegley
1f3dba7756 Don't do cost finalization for auto/period xacts 2010-06-22 20:53:05 -04:00
John Wiegley
205dd3a1ee Added has_date() method to item_t 2010-06-22 20:51:18 -04:00
John Wiegley
26a94fb1ed The notions of "now" and "today" now use local time 2010-06-22 17:19:35 -04:00
John Wiegley
3f899c93e6 Added new "bold" modifier to query expressions
For example:

  ledger bal assets bold checking

Or you can use expressions:

  ledger bal assets bold '=total > 1000'

This last is identical to saying:

  ledger bal -l 'account =~ /assets/' --bold-if='total > 1000'
2010-06-22 03:20:24 -04:00
John Wiegley
81bf38584e Added new --bold-if option 2010-06-22 01:27:05 -04:00
John Wiegley
7d005b8d98 Balances and sequences can be compared to amounts 2010-06-22 01:27:05 -04:00
John Wiegley
963161a817 bal was sometimes reporting empty accounts 2010-06-21 18:32:03 -04:00
John Wiegley
2f1b1c8ced Change weighting of account-name abbreviation
Parent accounts are abbreviated even more, so that child accounts can
show more text.
2010-06-21 18:05:26 -04:00
John Wiegley
d792cc0ffc Corrected a major flaw in the transaction finalizer
When a transaction has two commodities, but also a null posting, no
attempt should be made to resolve the costs in terms of the primary
commodity.
2010-06-21 17:44:19 -04:00
John Wiegley
fcfa491485 Improvements to time period parsing
Things like "since last month" and "4 weeks ago", and "since 4 weeks
ago" are now all working.
2010-06-21 17:02:48 -04:00
John Wiegley
9d9a8bd83d Corrected a compilation warning 2010-06-21 13:20:44 -04:00
John Wiegley
1ee16304b4 Transactions no longer needed for budget/forecast
This means you can forecast or budget against a file containing only
periodic transactions.
2010-06-20 20:58:07 -04:00
John Wiegley
7b6cc4c365 Output budget even if no postings directly matched 2010-06-20 20:55:24 -04:00
John Wiegley
d15bb66ee4 Added missing call to resolve_end() in find_period 2010-06-20 20:29:56 -04:00
John Wiegley
c5714a81e3 Factored out some unused local variables 2010-06-20 20:29:56 -04:00
John Wiegley
3a5653e365 Rename dow_posts to day_of_week_posts, to be clearer 2010-06-20 20:29:56 -04:00
John Wiegley
82e43fe125 If fixated price commodities are mixed, show them
For example, if a Ledger file contains transactions with the use of both
EUR and EUR {=PRICE}, then regular reports will always show the
{=PRICE}, disabling the by-name commodity merging that takes place.  In
brief, fixated and non-fixated commodities are now non-mergable.

If a file contains all of one, or all of the other, they will still be
merged, since these separate usages do not conflict the way that fixated
and non-fixated together do.
2010-06-20 20:29:53 -04:00
John Wiegley
6420390d36 If a posting's price has an annotation tag, save it 2010-06-20 18:50:44 -04:00
John Wiegley
470730c92d --input-date-format now affects dates with times 2010-06-20 18:37:14 -04:00
John Wiegley
fc7e67f403 Do not record market values for fixated exchanges
Do not record commodity exchanges where amount's commodity has a fixated
price, since this does not establish a market value for the base
commodity.
2010-06-20 18:02:19 -04:00
John Wiegley
b95818026f When anonymizing posts, remove the transaction code 2010-06-20 17:13:59 -04:00
John Wiegley
9ce498f890 Added debug print for commodity.prices.find 2010-06-20 17:10:50 -04:00
John Wiegley
135d997293 If a periodic posting terminates, stop forecasting with it 2010-06-20 17:08:27 -04:00
John Wiegley
6770380b6d Subsantial fixes and improvements to budgeting
1. A bounded budget "from DATE to DATE" will now generate entries
    throughout that entire range, if it is triggered.

 2. An unbounded budget begins, as before, in the timeframe of the
    reported posting which triggered it, but now continues until the
    present date.
2010-06-19 16:07:59 -04:00
John Wiegley
7995e16762 Corrected a bug in report query parsing 2010-06-19 14:02:44 -04:00
John Wiegley
9b905f2b44 query command's parsing behavior sensitive to -n
With -n, the first argument is parsed as a string containing
subarguments.  Otherwise, each argument is parsed as a separate
argument.

In short, the -n mode mimicks what happens when the query expr after "="
is parsed for automated expressions.  The non -n mode mimicks what
happens at the command line for users.
2010-06-19 14:02:33 -04:00
John Wiegley
627162acc0 Made amount_t::value a bit safer 2010-06-19 13:34:15 -04:00
John Wiegley
4bbce6dc7b When --inject is used for a tag, convert to an amount 2010-06-18 19:44:10 -04:00
John Wiegley
b7ea365bfc Renamed the "Rounding" account to "Adjustment" 2010-06-18 08:29:14 -04:00
John Wiegley
66de7e3055 Filename globs now surrounded by ^$ 2010-06-18 07:28:11 -04:00
John Wiegley
a961f15f00 Fixed bug that had broken any() and all() 2010-06-18 07:27:53 -04:00