Commit graph

182 commits

Author SHA1 Message Date
John Wiegley
c8641a6de6 Added support for Boost.Regex w/ ICU
This allows for correct searching of UTF-8 encoded strings, such as
lower-case versions of Russian words to find mixed-case words.
2009-11-07 08:34:13 -05:00
John Wiegley
a05d39b722 Renamed --set-reported-account to just --account
This fits better with the --amount and --total options, which both
change the amount and total used for calculation.  Same with --account:
it happens after filtering, but before calculation so that balance
reports look as you'd expect.
2009-11-06 02:39:30 -05:00
John Wiegley
deb674586c Added new account_total value expression
This is used for accessing an account's current total within one's
Ledger file.
2009-11-05 05:11:39 -05:00
John Wiegley
3dc200983d Moved xdata clearing code into each type proper 2009-11-05 02:27:39 -05:00
John Wiegley
78e6770c4c Segregated symbols into 5 separate namespaces
The different namespaces are:

  Function      Value expression functions, which receive a "context"
  Option        Command-line options
  Precommand    Commands which are invoked before reading the journal
  Command       Commands which are invoked after reading the journal
  Directive     Directives that occur at column 0 in a data file

This greatly eases the ability for Python uses to add intercept hooks to
change how the basic Ledger module functions.  An example of what should
be possible soon:

  import ledger

  def my_foo_handler(value):
      print "--foo received:", value

  ledger.add_handler(ledger.Option, "foo=", my_foo_handler)
2009-11-04 20:40:48 -05:00
John Wiegley
a77d9fc261 Added error message if a predicate query is invalid 2009-11-03 15:34:08 -05:00
John Wiegley
449c7ca790 New: --set-reported-account, --set-reported-payee 2009-11-01 21:15:11 -05:00
John Wiegley
3909d2678e Removed most #if 0 blocks and callout comments 2009-10-31 04:50:07 -04:00
John Wiegley
4427016b1b Improved arg checking for several valexpr functions 2009-10-31 04:07:33 -04:00
John Wiegley
77c9d7b1ff Add valexpr functions for lot dates, prices and tags 2009-10-31 03:22:38 -04:00
John Wiegley
b0f12c600c Added a --forecast-years option
This sets how many years of forecasting Ledger will do before it
terminates the attempt.
2009-10-31 03:07:15 -04:00
John Wiegley
63aa8992a8 Moved ownership of master account into journal_t
The journal_t now completely represents the data part of a session.
2009-10-30 19:03:28 -04:00
John Wiegley
55f5868380 Setting --date-format in ~/.ledgerrc works again 2009-10-29 00:52:51 -04:00
John Wiegley
52433e56e5 Fixed "show" keywords, and added // syntax 2009-10-28 23:44:57 -04:00
John Wiegley
218a333e83 Fixes to the new query expression parser 2009-10-28 23:07:03 -04:00
John Wiegley
47df7dd60e Rewrote the report query parser
It is now a full parser that parses report queries directly into value
expression trees.  These then get rendered into text so that other
options may extend the expression.
2009-10-28 18:40:31 -04:00
John Wiegley
0a6f1a6328 -D now means --daily, not --deviation
Because --daily is more commonly desired, and fits the pattern of the
other periodic switches:

  -D  --daily
  -W  --weekly
  -M  --monthly
  -Y  --yearly

Only --quarterly doesn't have its own short option.
2009-10-28 01:19:16 -04:00
John Wiegley
559566751d Sort by default unless --unsorted is selected 2009-10-28 01:17:10 -04:00
John Wiegley
432be9e989 Removed unnused parameter to value_t::print 2009-10-27 22:25:13 -04:00
John Wiegley
828a1e8bf9 Added --actual-dates, for overriding --effective
This is so that if someone has --effective in their .ledgerrc, they can
force the use of actual dates.
2009-10-27 21:34:08 -04:00
John Wiegley
ab433d28e0 Support a --now option, for testing purposes
This sets Ledger's notion of the "current time" to the given date.  This
makes it possible to have stable output from budgeting and forecasting
reports, for the sake of baseline tests.
2009-10-27 21:32:55 -04:00
John Wiegley
fd23b56a21 Added a new "cleared" report
This is a balance report with three columns:

  Current balance | Cleared balance | Last cleared date
2009-10-27 08:30:59 -04:00
John Wiegley
88460db2fb Added a new "budget" report
This is a balance report with four columns:

  Amount spent |  Budgeted Amount | Difference | Percentage
2009-10-27 08:30:59 -04:00
John Wiegley
f20b6a3b9e Fixed a data lifetime bug
This was causing budget totals not to appear in balance reports.

Fixes 8254755E-7B61-47C8-B48E-A2A7FD79EB80
2009-10-27 05:23:24 -04:00
John Wiegley
4f11ded5bc Added t and T as valexpr synonyms
t = display_amount, T = display_total
2009-10-26 18:52:43 -04:00
John Wiegley
151a8d87ee Fixed sorting in bal reports when --flat is used
Note that sorting on the "total" is not the same thing as sorting on the
"display_total" when multiple commodities are in use and the -X flag is
selected!  One should always sort on display_total, since that's the
value which is shown in the report.  'T' is a synonym for display_total.
2009-10-26 18:52:26 -04:00
John Wiegley
1ed22646f1 Added an "echo" command, for REPL testing 2009-10-26 17:17:23 -04:00
John Wiegley
fc84eeb358 Rewrote the way date and time I/O is managed 2009-10-25 05:01:47 -04:00
John Wiegley
588f2ef2f5 Fixed many compiler warnings from g++ 4.4 2009-10-25 05:01:39 -04:00
John Wiegley
2ef1934bb0 Restored --price option, added baseline test
This option reports only in terms of the annotated price of the
commodities involved, otherwise it reports the amounts themselves.  It
can be used in conjunction with other reports, as it applies to the
displayed amounts, not the actual amounts being calculated.
2009-06-26 17:15:35 +01:00
John Wiegley
4574c30fcf The --download option is now fully restored 2009-06-26 16:52:41 +01:00
John Wiegley
1fad2ec7c1 More refactoring for --download 2009-06-24 18:08:56 +01:00
John Wiegley
440124eacc Restored --download, although not done yet
The problem at this point is that it's recording prices in the price
database multiple times; it should only need to download a price for
each commodity once per day.
2009-06-24 02:44:07 +01:00
John Wiegley
407d057f4d Added a --no-color option, to disable --color 2009-06-22 00:27:00 +01:00
John Wiegley
7d5f02f5cc Restored option --period-sort
This option is just an alias for --sort-xacts.
2009-06-21 20:48:27 +01:00
John Wiegley
521b935aa8 Restored --percent option, added baseline test 2009-06-21 18:07:27 +01:00
John Wiegley
dabbd2c974 Fixes to the 'xact' command (used to be 'entry') 2009-06-19 00:00:57 +01:00
John Wiegley
83c93fdb73 Commented out an internal-only option 2009-06-18 18:58:37 +01:00
John Wiegley
86dfc1e0be The -X option now accepts price settings
For example, if you had 100 AU (onces of gold) and wanted to report it
in dollars, but at a price of $997 per ounce, you could now easily say:

  ledger bal -X '$,AU=$997'
2009-06-18 18:50:49 +01:00
John Wiegley
3a926da4cb When --end is used, set a "terminus" date
This means that final balance valuations (with -V or -X) will be done in
terms of the date given to --end, rather than based on the current day.

Fixes 647D5DB9-DBBB-47C8-80CE-F3F70E3B0253
2009-06-16 18:49:27 +01:00
John Wiegley
298a4faef3 Move amount colorization deeper into the core
This is necessary in order to redden negative amounts correctly under
all circumstances, such as component amounts of a multi-commodity
balance.

Fixes 727B2DF8-A2A1-4716-9C15-547F20D5F933
2009-06-16 16:57:10 +01:00
John Wiegley
c79fd9e72d Added new debug option --options
This reports which options are in place before invoking a command, and
where exactly each option value came from.
2009-06-02 19:14:46 +01:00
John Wiegley
110f0b8023 Enabled use of pre-compiled headers by default 2009-03-10 17:02:03 -04:00
John Wiegley
f340d50362 Revised the ways statistics are computed
It is no longer done in calc_posts, but recursively on each account.
This allows value expressions to ask statistical questions, like
"earliest cleared posting?" (TBD) from any specific account, computed
lazily.
2009-03-06 04:07:25 -04:00
John Wiegley
dd23edd5ce Implemented --unround using value expressions 2009-03-06 00:27:16 -04:00
John Wiegley
fb9af0f111 Removed the --totals option 2009-03-05 23:26:21 -04:00
John Wiegley
c11d325712 Reduced the #include dependency tree to a minimum 2009-03-04 23:53:43 -04:00
John Wiegley
eb45a0a4f4 Normalized how account totals are calculated 2009-03-03 17:08:11 -04:00
John Wiegley
4af1bfdde3 Allow special %{} formatting sequence
Although %(amount) inserts an item's amount, it only does exactly that.
There is no special consideration like stripping of lot details, or
reduction to the base commodity, etc.  For those things, and to make
sure it was display in red if negative, the canonical form would be:

  %(ansify_if(justify(scrub(amount), 12, -1, true), red if amount < 0))

You can now use the special %{} form as an alternate to this:

  %12{amount, red if amount < 0}

The two expand to the same underlying expression.
2009-03-03 15:06:15 -04:00
John Wiegley
de3bafc0d7 Made all the ANSI color names into valexpr names 2009-03-03 14:59:56 -04:00