Commit Graph

480 Commits

Author SHA1 Message Date
Dmitry Astapov
d62f84bec2 lib: csv reader does not generate postings if account="" 2019-11-05 21:16:42 +00:00
Dmitry Astapov
8d24a40150 lib: csv parser fills out amounts on all postings, if possible 2019-11-05 21:16:42 +00:00
Dmitry Astapov
637741a755 lib: amount1 is no longer magical 2019-11-05 21:16:42 +00:00
Dmitry Astapov
977592e49c lib: typo fix, "expense:unknown" -> "expenses:unknown" 2019-11-05 21:16:42 +00:00
Dmitry Astapov
3c7d5d466d lib, doc, test: csv parser gains "end" command for "if" block 2019-11-05 21:16:42 +00:00
Dmitry Astapov
f92590f92c lib: allow zero postings in csv reader 2019-11-05 21:16:42 +00:00
Dmitry Astapov
1ab8631264 lib: change default rules file text to mention "amount1" 2019-11-05 21:16:42 +00:00
Dmitry Astapov
32cbe4c7b3 lib: better inference for unknown account names in csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
b5d4918c16 lib: allow recursive interpolation of fields with underscores in names 2019-11-05 21:16:42 +00:00
Dmitry Astapov
38db7eb24d lib: implement skip end in csv reader 2019-11-05 21:16:42 +00:00
Dmitry Astapov
b2ba1086b6 lib: fixed validation rules for minimul viable csv rules to include account1 etc 2019-11-05 21:16:42 +00:00
Dmitry Astapov
f1ab107400 lib, doc: extended "skip" in "if" body to "skip N" 2019-11-05 21:16:42 +00:00
Dmitry Astapov
f108b52171 lib: fix for #1001 - empty field assignment consumes next line 2019-11-05 21:16:42 +00:00
Dmitry Astapov
5dac141a7e lib: implement conditional line skips in csv (fixes #1076) 2019-11-05 21:16:42 +00:00
Dmitry Astapov
f74df08e98 lib: fix accidental switch of income:unknown and expence:unknown in csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
77fa81ea4d lib: fix error message formatting (header displayed twice) 2019-11-05 21:16:42 +00:00
Dmitry Astapov
825b9ce5b3 lib: fixed amount vs amount1 conflict detection in csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
881422cd0f lib: fix recursive interpolation in CSV parser for fields with dashes 2019-11-05 21:16:42 +00:00
Dmitry Astapov
e4476dd2f1 lib: more robust "unknown" account assignment in csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
28ca65b99a lib: more explicit conditions for using legacy csv parser 2019-11-05 21:16:42 +00:00
Dmitry Astapov
e4add6df83 lib: fix for multiline descriptions in csv (fixes #841, #416) 2019-11-05 21:16:42 +00:00
Dmitry Astapov
9aab476d53 lib: csv parser supports up to 9 postings. Fixes #570, #627 2019-11-05 21:16:42 +00:00
Mykola Orliuk
78146978f4 ;lib: store raw opts unquoted
It looks like we only need quote when we build query and in some
messages.

Fixes simonmichael/hledger#1079
2019-10-19 14:44:08 -07:00
Simon Michael
eff1b31c86 csv: allow csv records with varying lengths, padding with empties
Sometimes trailing empty fields are omitted entirely (including the
commas) in CSV records. (I see this in exported Google spreadsheets.)
Now we don't raise an error in this case, instead we automatically pad
any "short" records with empty fields. Not yet well tested.
2019-10-07 14:54:36 -10:00
Simon Michael
9967ead4c5 ;lib: let commodityStylesFromAmounts & co. return an error (#793, #1091)
And if they did, the stats command would now throw an error.

Changed:
journalApplyCommodityStyles
journalInferCommodityStyles
commodityStylesFromAmounts
2019-09-27 15:09:39 -10:00
Simon Michael
64f49a8c02 ;doc: journal: rewrite Amounts; switch to "digit group mark" term (#1091) 2019-09-27 14:25:32 -10:00
Simon Michael
7ffe38677a ;lib: parseAndFinaliseJournal: note txns order issue (#1091) 2019-09-25 23:07:22 -10:00
Simon Michael
6037d701b6 ;lib: document RawNumber, AmbiguousNumber, DigitGrp (#1091) 2019-09-25 21:26:06 -10:00
Simon Michael
f92b2fe6ef ;lib: csv: refactor: clarify, get rid of some IO/ExceptT
Rule parsing doesn't need IO (since we are doing expandIncludes as a
pre-parsing step).
2019-09-14 03:45:37 -07:00
Simon Michael
3c05662ce2 ;lib: csv: clarify confusing imports 2019-09-13 18:11:40 -07:00
Simon Michael
46caa1d4ef ;lib: csv: rename error-prone default rules 2019-09-13 17:51:14 -07:00
Simon Michael
499e20c0b2 lib, cli, ui: start using Control.Monad.Fail, allow base-compat 0.11
fail is moving out of Monad and into it's own MonadFail class.
This will be enforced in GHC 8.8 (I think).

base-compat/base-compat-batteries 0.11.0 have adapted to this,
and are approaching stackage nightly
(https://github.com/commercialhaskell/stackage/issues/4802).

hledger is now ready to build with base-compat-batteries 0.11.0, once
all of our deps do (eg aeson). We are still compatible with the older
0.10.x and GHC 7.10.3 as well.

For now we are using both fails:

- new fail (from Control.Monad.Fail), used in our parsers, imported
  via base-compat-batteries Control.Monad.Fail.Compat to work with
  older GHC versions.

- old fail (from GHC.Base, exported by Prelude, Control.Monad,
  Control.Monad.State.Strict, Prelude.Compat, ...), used in easytest's
  Test, since I couldn't find their existing fail implementation to update.

To reduce (my) confusion, these are imported carefully, consistently,
and qualified everywhere as Fail.fail and Prelude.fail, with clashing
re-exports suppressed, like so:

import Prelude hiding (fail)
import qualified Prelude (fail)
import Control.Monad.State.Strict hiding (fail)
import "base-compat-batteries" Prelude.Compat hiding (fail)
import qualified "base-compat-batteries" Control.Monad.Fail.Compat as Fail
2019-09-08 17:13:47 -07:00
Simon Michael
1cbbe8f43d memoise market valuation, making it fast (#999) 2019-08-19 02:16:39 +01:00
Simon Michael
6e3a264f17 lib: export aliasnamep for hledger-check (#1072) 2019-07-16 23:30:15 +01:00
Caleb Maclennan
11d9e5eb6a code: Strip extraneous trailing whitespace from Haskell sources 2019-07-15 16:40:49 +01:00
Simon Michael
0a3af8d9ee csv: strip outer whitespace when interpolating CSV values (#1051)
This removes a potential snag in amount field assignments, and
hopefully is harmless and acceptable otherwise.
2019-06-14 16:43:12 -07:00
Simon Michael
d2b3185062 csv: don't show invalid inter-field spaces in CSV error messages
Errors involving a record like:

2000-01-01,a,"1"

displayed the record with extra spaces:

the CSV record is:       "2000-01-01", "a", "1"

which was not accurate or valid RFC-4180.
2019-06-14 16:17:40 -07:00
Simon Michael
692620180e ;lib: refactor: change AmountPrice to a Maybe
I've wanted to do this for a long time; now that prices are in flux,
seems a good time.
2019-06-13 15:50:01 -07:00
Simon Michael
adb6ee40eb lib: clarify price types (#131)
dropped journalPrices

renamed Price to AmountPrice,  AKA "transaction price"

renamed MarketPrice to PriceDirective.

added new MarketPrice (more pure form of PriceDirective without the amount style information)

Prices is now a more efficient data structure, but not used yet.
2019-06-13 15:50:01 -07:00
Simon Michael
90af360792 csv: fix parse error printing, broken since 1.11 (#1038) 2019-06-06 23:10:31 -07:00
Simon Michael
61e8ccbf88 csv: accept a balance field assignment instead of an amount (#1000) 2019-04-03 10:46:26 -07:00
Dmitry Astapov
3c3200fa66 lib: csv parser support for 'balance2', 'balance' renamed to 'balance1' 2019-03-15 16:18:43 -07:00
Simon Michael
c5df73910f csv: update some parse errors which weren't in human format
cf
https://www.reddit.com/r/plaintextaccounting/comments/axekse/hledger_how_to_create_curved_brackets_with_rule/
2019-03-05 06:23:11 -08:00
Simon Michael
8789a442a8 lib: inclusive balance assertions (=* and ==*) 2019-02-20 09:14:30 -08:00
Simon Michael
3b47b58aec lib: clarify transaction balancing & balance assertion checking 2019-02-20 09:14:30 -08:00
Simon Michael
d1f122f15e refactor: clarify, note issues (#893) 2019-02-01 15:35:33 -08:00
Simon Michael
d6e075dacd refactor journalModifyTransactions, modifyTransactions
API changes:

Hledger.Data.TransactionModifier
-transactionModifierToFunction
+modifyTransactions

Hledger.Read.Common.applyTransactionModifiers -> Hledger.Data.Journal.journalModifyTransactions
2019-02-01 11:31:04 -08:00
Simon Michael
550e33a558 journal: fix balance assertions/assignments & prices (#824)
Hopefully this is will do it. This restores the past behaviour:

- parsing prices in balance assertions/assignments
- ignoring them in assertions
- using them in assignments
- and printing them

and clarifies tests and docs.
2019-01-25 12:41:10 -08:00
Simon Michael
94d5c6f111 journal: allow prices in balance assertions, but ignore (#824, #958) 2019-01-25 08:59:37 -08:00
Simon Michael
b02f81572c lib: comment
[ci skip]
2019-01-25 08:51:45 -08:00