Commit Graph

600 Commits

Author SHA1 Message Date
Stephen Morgan
ba59fed6b2 lib: Replace more instances of fromIntegral with safer versions. 2020-08-30 22:20:58 +10:00
Stephen Morgan
ca2e55c954 lib: Replace some fromIntegral with toInteger. 2020-08-30 22:20:58 +10:00
Stephen Morgan
b5ed2067d9 lib: Make aprecision and DigitGroupStyle use Word8 instead of Int. exponentp now parses an Integer rather than an Int. 2020-08-30 22:20:53 +10:00
Stephen Morgan
371b349b2e lib,cli: Replace parsedate and mkdatespan with direct applications of fromGregorian, transaction now takes Day instead of a date string. 2020-08-29 15:08:28 -07:00
Stephen Morgan
2fd678e415 lib,cli,ui: Remove old CPP directives made redundant by version bounds. 2020-08-29 15:08:28 -07:00
Simon Michael
a3c749f9e7 csv: fix inferring separator from .ssv/.tsv file extensions
This was documented but untested and may have never worked.
2020-08-21 08:59:55 -07:00
Simon Michael
108c548240 journal: when an account alias contains a bad regexp, show details
lib: accountNameApplyAliases, accountNameApplyAliasesMemo are now
total
2020-08-06 15:27:40 -07:00
Simon Michael
3f55c23603 ;review, tag all error calls with an easier to find PARTIAL: comment (#1312) 2020-08-05 16:08:33 -07:00
Simon Michael
242c05fc9a lib, journal: parseQuery, modifyTransactions are now total (#1312)
modifyTransactions now also requires a reference date, for parsing queries.
Relative dates are now permitted in auto posting rules.
2020-08-05 13:44:04 -07:00
Stephen Morgan
dc41cee2b0 lib: datep now requires years to be at least four digits. 2020-07-31 17:22:27 -07:00
Stephen Morgan
ffb5cf0773 lib: Ensure parsed years have at least 4 digits. 2020-07-31 17:22:27 -07:00
Stephen Morgan
7b9f9ae49c lib: Refactor reportingintervalp to be more compact and do less backtracking. 2020-07-31 17:22:27 -07:00
Stephen Morgan
081ee390ab lib: Change skipMany spacenonewline to takeWhileP Nothing isNonNewlineSpace. 2020-07-22 14:58:53 -07:00
Simon Michael
fd9171df07 journal: account types: add Cash, tweak fallback regexp, rewrite docs 2020-07-17 08:02:12 -07:00
Michael Sanders
5ec0a518da csv: Add support for & operators in conditional blocks 2020-07-07 12:51:01 -07:00
Simon Michael
765fb732c9 debug: move command parsing debug output down to level 8 2020-07-03 11:37:01 -07:00
Dmitry Astapov
21349c161e lib: only memoize in csv reader when there are more than 15 cond. blocks 2020-06-22 12:10:47 -07:00
Dmitry Astapov
8844ef1b5f lib: put conditionalblockp pasrser first as it is a more common case 2020-06-22 12:10:47 -07:00
Dmitry Astapov
ed01e57b23 lib: tabular rules separator cannot be space 2020-06-22 12:10:47 -07:00
Dmitry Astapov
c397b90b5b lib: memoize "if blocks that assign filed f" for 50% CSV reader speedup 2020-06-22 12:10:47 -07:00
Dmitry Astapov
834e9ec104 lib: condition tables in csv rules + tests 2020-06-22 12:10:47 -07:00
Martin Michlmayr
7310951178 doc: fix typos 2020-06-16 19:13:18 -07:00
Simon Michael
684cb45e1a tweak debug levels, document some guidelines
Beginnings of a project-wide policy for what output to show at
each debug level, for now. Later we'll want more flexibility,
eg filtering by topic.
2020-06-14 17:17:09 -07:00
Simon Michael
00e9e844ac journal: the include directive now accepts a file format prefix
This works with glob patterns too, applying the prefix to each path.
This can be useful when included files don't have the standard file
extension, eg:

include timedot:2020*.md
2020-06-04 13:59:26 -07:00
Simon Michael
97f2235bca ;lib: refactor amount cost functions
Rename costOfAmount -> amountCost, costOfMixedAmount -> mixedAmountCost,
drop amountToCost, mixedAmountToCost.
2020-05-31 15:48:08 -07:00
Simon Michael
660ba7e1d9 lib: clarify zero-checking function names
isZeroAmount                -> amountLooksZero
isReallyZeroAmount          -> amountIsZero
isZeroMixedAmount           -> mixedAmountLooksZero
isReallyZeroMixedAmount     -> mixedAmountIsZero
isReallyZeroMixedAmountCost dropped
2020-05-29 18:57:22 -07:00
Simon Michael
e1ddfc3a1b lib: also infer market prices from transactions, like Ledger (#1239) (WIP) 2020-05-25 17:45:31 -07:00
Simon Michael
40c296a446 lib: rename finaliseJournal -> journalFinalise 2020-05-23 09:45:35 -07:00
Simon Michael
2c1cbb7956 ;csv: remove a comment breaking doctests 2020-05-12 18:01:05 -07:00
Simon Michael
6b2dfad98c ;csv: clarify that whitespace is not stripped when matching 2020-05-09 15:43:44 -07:00
Vladimir Sorokin
5b88bfb834 csv: Increase maximum number of postings in CSV reader from 9 to 99.
The ordering of journalfieldnames is changed in order to comply with the requirement stated in the comment:
"Names must precede any other name they contain, for the parser".
If left unchanged, "account1" would precede "account11", "account12", and so on, which would break the parsing.
With the new ordering, "account11" precedes "account1".
2020-04-26 14:52:02 -07:00
Simon Michael
784d882e01 csv: combine amount assignments better, fix 1.17.1 regression (#1226) 2020-04-16 19:04:36 -07:00
Simon Michael
b149c0ba0c ;csv: tweak the too-many-amounts error more 2020-04-16 12:59:19 -07:00
Simon Michael
3693fd4eb6 ;csv: mention doc url in too many amounts error (#1226) 2020-04-16 08:36:04 -07:00
Simon Michael
1428291dd6 don't let case of file extension break file format detection (#1225) 2020-04-15 11:31:28 -07:00
Simon Michael
3ad2e50ec5 journal: also parse Ledger-style "virtual posting costs" - (@), (@@) 2020-04-08 20:22:03 -07:00
Simon Michael
847f924828 journal: comment fix 2020-04-08 20:00:18 -07:00
Simon Michael
f4a1a31712 journal: also support lot dates ([DATE]) 2020-04-08 19:55:55 -07:00
Simon Michael
fedde7fab1 journal: also support the total lot price variants ({{}}, {{=}}) 2020-04-08 19:18:39 -07:00
Simon Michael
ea3b290dd0 journal: more flexible, Ledger-compatible parsing of lot prices
We now accept (but still ignore) a fixed or nonfixed ({=} or {}) lot
price following a posting amount, and it may appear before or after a
transaction price (@ or @@). And it may no longer appear after a
balance assertion.

Also: fixedlotpricep renamed to lotpricep, now also parses non-fixed
lot prices. A bit of amount parsers cleanup.
2020-04-08 15:26:18 -07:00
Simon Michael
3cc79a67f2 csv: don't discard explicit assignments of a 0 amount
Eg: an `amount1  $0.00` assignment was generating a posting1 with
missing amount.
2020-04-05 14:19:02 -07:00
Simon Michael
f219bba494 allow spaces between sign and number, when parsing 2020-04-04 14:18:04 -07:00
Simon Michael
9868d7f20d ;lib: update emacs code-folding config
orgstruct-mode was dropped from org 9.2, and I shouldn't have been
forcing it on anyway.

The new config allows its "replacement", outshine-mode, to do similar
code folding when you press tab on any of the lines matching
outline-regexp. But only if you patch it as mentioned at
https://github.com/alphapapa/outshine/issues/77.
Enable it by, eg: (add-hook 'haskell-mode-hook 'outshine-mode)
2020-03-28 17:09:47 -07:00
Simon Michael
e15eabdf15 csv: ignore amount if any amountN's are assigned; improve error msg
The change for hledger 1.17.1 broke one of my csv rules, where I used
`amount` but then tried to override it with `amountN`s in a
conditional block; the two clashed. Now in that situation any
`amountN`s take precedence, causing `amount` to be ignored entirely.

Also clarified the "too many non-zero amounts" error message a bit.
2020-03-25 18:09:41 -07:00
Simon Michael
4e7a893efc ;csv: cleanup 2020-03-17 17:55:32 -07:00
Simon Michael
84165f5a0c ;journal: fix tests 2020-03-17 17:48:17 -07:00
Simon Michael
2cec32cebe journal: a more verbose commodity error message with examples 2020-03-17 13:36:48 -07:00
Simon Michael
6a01b1f438 ;lib, journal: fix some "decimal point" mentions 2020-03-17 13:36:19 -07:00
Simon Michael
a1361ecc04 csv: don't force a second posting with amount1
A rewrite and simplification of the posting-generating code. The
"special handling for pre 1.17 rules" should now be less noticeable.
amount1/amount2 no longer force a second posting or explicit amounts
on both postings. (Only amount/amount-in/amount-out do that.)
Error messages and handling of corner cases may be more robust, also.
2020-03-16 16:18:58 -07:00
Stephen Morgan
e0dde6fe57 lib: Remove non-law-abiding Monoid instance for Journal. 2020-03-02 12:45:30 -08:00