Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Added a "range" member to date_interval_t | John Wiegley | 2009-11-18 | 2 | -30/+34 |
| | | | | | | This is used to define the beginning/ending ranges of the time period, before it becomes fixed (by calling stabilize()) and then sets the values of start and end. | ||||
* | Added several new types for working with dates and ranges | John Wiegley | 2009-11-17 | 2 | -0/+615 |
| | | | | | | | | | | | | | | | | | | | | | | | | date_specifier_t :: This is like a plain date_t, except it knows what wasn't specified. For example, if 2008/06 is parsed, it becomes date_specifier_t which knows that no day was given. If you ask for the begin() date of the specifier, it will be 2008/06/01; the end() date (which is exclusive) will be 2008/07/01. date_range_t :: A date range is a range of two specifiers, either of which (but not both) may be omitted. This makes it possible to represent expressions like "from june to july", where no day or year is given. The exact dates will be inferred by using the current year, and fixing the range from YEAR/06/01 to YEAR/07/01. That is, the range goes from the begin() of one date specifier to the begin() of the other. date_specifier_or_range_t :: A variadic type that can be either a date_specifier_t or a date_range_t. It's just a wrapper to represent the fact that ranges can be implicit via specifiers (such as, "in june"), or explicit via ranges ("since 2008"). | ||||
* | Moved date_interval_t::duration_t to date_duration_t | John Wiegley | 2009-11-17 | 2 | -108/+106 |
| | |||||
* | Added a date_traits_t type | John Wiegley | 2009-11-17 | 2 | -26/+68 |
| | |||||
* | Renamed date_interval_t::end to finish | John Wiegley | 2009-11-17 | 6 | -52/+52 |
| | |||||
* | Some reformatting in query.h | John Wiegley | 2009-11-17 | 1 | -35/+37 |
| | |||||
* | Added ledger::string(Iter, Iter) constructor | John Wiegley | 2009-11-17 | 1 | -0/+5 |
| | |||||
* | Fixed several time and date duration type uses | John Wiegley | 2009-11-17 | 2 | -9/+16 |
| | |||||
* | Made the account and tag directives more rational | John Wiegley | 2009-11-15 | 1 | -69/+81 |
| | | | | | Now you must specify "account / end account", and "tag / end tag". For backwards compatability, plain "end" is the same as "end account". | ||||
* | Corrected parsing of the 'expr' report query term | John Wiegley | 2009-11-15 | 2 | -10/+14 |
| | |||||
* | Made the transaction date parser a bit more strict | John Wiegley | 2009-11-15 | 1 | -10/+13 |
| | |||||
* | Made the amount_t::bigint_t refcount holder 32-bits | John Wiegley | 2009-11-14 | 1 | -6/+2 |
| | | | | It was overflowing on a full register report of just 3M of data. | ||||
* | Changed a use of balance_error to amount_error | John Wiegley | 2009-11-14 | 1 | -1/+1 |
| | |||||
* | Added another catch handler for Python exceptions | John Wiegley | 2009-11-14 | 1 | -0/+4 |
| | |||||
* | Fixed an internal reference issue with Python | John Wiegley | 2009-11-14 | 2 | -13/+29 |
| | |||||
* | Removed post_t::xdata_t::ptr, which is not used | John Wiegley | 2009-11-14 | 1 | -4/+1 |
| | |||||
* | Memoize results from the fast predicate matcher | John Wiegley | 2009-11-14 | 2 | -1/+18 |
| | | | | | This gains another 15% for the parser, again with a very simple change that has no impact if the fast predicate matcher fails to work. | ||||
* | Spot optimization for simple automated xact exprs | John Wiegley | 2009-11-14 | 2 | -5/+70 |
| | | | | | | This reduces parsing time in the optimized build by 25%, and was a safe, easy patch. If the "quick predicate evaluator" fails, we disable it from that point on go back to what the standard code does. | ||||
* | Removed the virtual marker on several filter methods | John Wiegley | 2009-11-14 | 1 | -4/+4 |
| | |||||
* | Added historical support for single-letter valexprs | John Wiegley | 2009-11-14 | 4 | -3/+90 |
| | |||||
* | Optimization in the formatting of string values | John Wiegley | 2009-11-14 | 2 | -3/+9 |
| | |||||
* | Break up multiple commodities in equity report | John Wiegley | 2009-11-14 | 2 | -11/+18 |
| | |||||
* | Don't bold the payee for virtual or temporary xacts | John Wiegley | 2009-11-13 | 1 | -1/+1 |
| | |||||
* | Stylistic change: assert(0) -> assert(false) | John Wiegley | 2009-11-13 | 6 | -11/+11 |
| | |||||
* | Fixed some debug output | John Wiegley | 2009-11-13 | 1 | -0/+5 |
| | |||||
* | --data shouldn't modify the underlying item | John Wiegley | 2009-11-12 | 2 | -7/+1 |
| | |||||
* | Move a typedef in utils.h | John Wiegley | 2009-11-12 | 1 | -4/+4 |
| | |||||
* | Added a Journal.collect method to Python | John Wiegley | 2009-11-12 | 1 | -0/+106 |
| | | | | | | | | | | | | | | | | | | | | This lets you run standard report queries against a Ledger journal and get back a collection of postings, for example: import ledger journal = ledger.Journal("sample.dat") posts = journal.collect("-M assets") for post in posts: print post.account However, this code is not really working yet for a large variety of reasons, having to do with object life-time, shallow copying, and lack of reference counting where it should be. For instance, calling ledger.Journal().collect() fails because the temporary journal object is destroyed and the collection now has a host of bad pointers. Using "for post in journal.collect()" fails too with other bad pointers. And the whole lot of it crashes on exit at the moment. | ||||
* | Removed unnecessary code | John Wiegley | 2009-11-12 | 1 | -1/+1 |
| | |||||
* | Set call policies for accessing post.xdata.account | John Wiegley | 2009-11-12 | 1 | -2/+4 |
| | |||||
* | Added a collect_posts handler | John Wiegley | 2009-11-12 | 1 | -0/+29 |
| | |||||
* | Reordered the export_ calls in pyinterp.cc | John Wiegley | 2009-11-12 | 1 | -6/+6 |
| | |||||
* | Reorganized a bit of the reporting code | John Wiegley | 2009-11-12 | 2 | -48/+55 |
| | |||||
* | Added has_xdata() methods for journal_t and xact_t | John Wiegley | 2009-11-12 | 8 | -2/+45 |
| | |||||
* | Made ~post_t virtual | John Wiegley | 2009-11-12 | 1 | -1/+1 |
| | |||||
* | session_t now holds a std::auto_prt<journal_t> | John Wiegley | 2009-11-12 | 4 | -19/+19 |
| | |||||
* | Moved report normalization into report.cc | John Wiegley | 2009-11-12 | 4 | -174/+174 |
| | |||||
* | Removed unused code | John Wiegley | 2009-11-12 | 1 | -2/+0 |
| | |||||
* | Renamed the pricesdb command to pricedb | John Wiegley | 2009-11-12 | 2 | -7/+7 |
| | |||||
* | Added new value expressions for value conversion | John Wiegley | 2009-11-11 | 2 | -0/+90 |
| | | | | | | | | | | | | | | They are: to_boolean to_int to_datetime to_date to_amount to_balance to_string to_mask to_sequence | ||||
* | Transactions now verified after applying auto xacts | John Wiegley | 2009-11-11 | 2 | -1/+59 |
| | | | | | This way you cannot violate the balancing rules, not even by adding a stray posting via an automated transaction. | ||||
* | Added --date, similar to --account and --payee | John Wiegley | 2009-11-11 | 7 | -5/+31 |
| | | | | | | | This lets you do things like store a date as the value of a tag, then run: ledger --date='has_tag("Foo") ? to_date(tag("Foo")) : date' reg | ||||
* | Did away with the "finalizer" abstraction | John Wiegley | 2009-11-11 | 7 | -245/+11 |
| | | | | | This was from an earlier time, when it was intended to be used by Python. But it's not needed anymore. | ||||
* | Use ledger::string only if VERIFY_ON or BOOST_PYTHON | John Wiegley | 2009-11-11 | 2 | -0/+12 |
| | |||||
* | Restore the Doxygen documentation build | John Wiegley | 2009-11-11 | 1 | -5/+5 |
| | |||||
* | Value.to_sequence returns a valid Python sequence | John Wiegley | 2009-11-11 | 2 | -0/+5 |
| | |||||
* | Added some missing calls to add_post | John Wiegley | 2009-11-11 | 2 | -0/+3 |
| | |||||
* | Added floor() value expression function | John Wiegley | 2009-11-11 | 2 | -0/+9 |
| | |||||
* | Automated postings defer amount expression calculation | John Wiegley | 2009-11-11 | 8 | -67/+93 |
| | | | | | | | | | | | | | | | | | This allows for value expressions to be used which reference the incoming posting, for example: = Income:Clients: (Liabilities:Taxes:VAT1) (floor(amount) * 1) (Liabilities:Taxes:VAT2) 0.19 2009/07/27 * Invoice Assets:Bank:Checking $1,190.45 Income:Clients:ACME_Inc The automated posting for VAT1 will use the floored amount multiplied by a factor, while the posting for VAT2 multiples the whole amount as before. | ||||
* | Added floored() and in_place_floor() methods | John Wiegley | 2009-11-11 | 8 | -93/+169 |
| |