Simon Michael
be5fc09ebb
;csv: refactor: more transactionFromCsvRecord cleanups
2020-02-27 00:41:10 -08:00
Simon Michael
93358d72b4
;csv: refactor transactionFromCsvRecord
2020-02-27 00:30:45 -08:00
Simon Michael
02f2e3bd9b
csv: refine unknown accounts more thoroughly, a better fix for #1192
2020-02-26 22:45:49 -08:00
Simon Michael
58bb0df5ab
csv: undo failed #1192 fix, causing "_unknown_" accounts; refactor
...
Restore the old logic, while also trying to clarify this
transaction-generating code, and add some tests.
See also #1198 .
2020-02-26 21:46:11 -08:00
Simon Michael
fb788a64e8
;csv: cleanups, drop match operator for now
2020-02-26 11:52:47 -08:00
Simon Michael
a33a9d61c2
json: use a simpler, more consumable number representation ( #1195 )
...
Amounts in JSON are now rendered as simple Numbers with up to 10
decimal places, instead of Decimal objects which would in some cases
have 255 digits, too many for most JSON parsers to handle.
A provisional fix, see the comment in Json.hs for more detail.
2020-02-26 11:48:09 -08:00
Simon Michael
d537f1fe07
csv: allow single field matching; more docs and tests
2020-02-26 08:55:55 -08:00
Simon Michael
becd891dd1
;csv: Matcher type, simplify
2020-02-25 13:44:45 -08:00
Simon Michael
1cbce98a68
;csv: refactor, ConditionalBlock ADT
2020-02-25 13:44:45 -08:00
Simon Michael
2a5f7819af
bs,cf,is,bal,print,reg: support json output format
2020-02-24 17:49:53 -08:00
Simon Michael
7f16d23898
;refactor: extract --value=then error message
2020-02-24 17:49:53 -08:00
Simon Michael
7ec25da13a
web: edit/upload: normalise line endings, avoiding parse errors ( #1194 )
...
Renamed: writeValidJournal -> writeJournalTextIfValidAndChanged
Added comments clarifying line ending behaviour of:
add, import, appendToJournalFileOrStdout, readFilePortably,
writeFileWithBackupIfChanged, writeJournalTextIfValidAndChanged
Summary of current behaviour:
- hledger add and import commands will append with (at least some)
unix line endings, possibly causing the file to have mixed line
endings
- hledger-web edit and upload forms will write the file with
the current system's native line endings, ie changing all
line endings if the file previously used foreign line endings.
2020-02-24 14:04:44 -08:00
Simon Michael
2d90074b2e
;csv: avoid a potential display of internal placeholder ( #1192 )
...
With a multicommodity amount, the unknown account name will always be
"expenses:unknown".
2020-02-15 14:02:53 -08:00
Simon Michael
017d3355f8
csv: allow manual assignment of "expenses:unknown" again ( fix #1192 )
2020-02-15 13:52:59 -08:00
Simon Michael
86ffef1057
;doc:journal: edits, Amount display format -> Amount display style ( #1187 )
...
Drop occasional use of "display format", prefer "display style".
[ci skip]
2020-02-11 10:23:52 -08:00
Simon Michael
e4a0bdff8d
journal: default commodity (D) limits display precision too ( #1187 )
...
D directives are now fully equivalent to commodity directives for
setting a commodity's display style. (Previously it was equivalent to
a posting amount, so it couldn't limit the number of decimal places.)
When both kinds of directive exist, commodity directives take precedence.
When there are multiple D directives in the journal, only the last one
affects display style.
2020-02-11 09:47:26 -08:00
Simon Michael
1741b607e2
lib: more cleanup of amount canonicalisation helpers ( #1187 )
...
Stop exporting journalAmounts, overJournalAmounts, traverseJournalAmounts.
Rename journalAmounts helper to journalStyleInfluencingAmounts.
D directives are now a little better at influencing amount
canonicalisation, eg in the updated test case.
2020-02-11 09:23:04 -08:00
Simon Michael
926b01f2eb
;lib: try to clarify this amount traversing stuff ( #1187 )
2020-02-11 08:34:22 -08:00
Simon Michael
ae9d8d6e56
;add then and t to --value's error message
...
[ci skip]
2020-02-10 12:40:02 -08:00
Simon Michael
aa96b41efe
print, register: add --value=then, valuing at each posting's date
...
Currently this will give an error with other kinds of report.
2020-02-10 08:20:39 -08:00
Jakob Schöttl
50acfc9119
Fix documentation, make ISO date format standard in some places
2020-02-09 07:26:54 -08:00
Simon Michael
bb6e1e3ce2
;lib: export textQuoteIfNeeded
...
[ci skip]
2020-02-03 10:10:46 -08:00
Simon Michael
56b51c1961
;lib: couple of doctests
...
[ci skip]
2020-02-03 10:10:32 -08:00
Simon Michael
e0a46a6523
;lib: update doctests for ISO 8601 date output
...
[ci skip]
2020-02-03 08:03:44 -08:00
Simon Michael
b3711488a7
lib: apply canonical display styles to auto posting amounts too
2020-01-31 06:00:06 -08:00
Simon Michael
fccd88149d
;lib: refactor, clarify finaliseJournal a bit
2020-01-31 05:39:16 -08:00
Simon Michael
5f7ae2ced6
;lib: Amount: export mixedAmountStripPrices
2020-01-22 11:57:42 -08:00
Simon Michael
64546cd54a
lib: export mapMixedAmount
2020-01-20 18:01:33 -08:00
Simon Michael
80ab45984b
csv: also recognise .tsv, .ssv extensions; document thoroughly ( #1179 )
2020-01-20 12:58:47 -08:00
Jakob Schöttl
c7a88b50fb
Fix timeclock format parsing
...
Fix presumably copy-paste errors
timeclock format has only timeclock lines or empty/comment lines
Update test format to v3, add new tests
Throw error on unexpected clock codes in timeclock format
Fix missing case in pattern matching
2020-01-12 13:17:36 -08:00
Brian Wignall
ab12ff916f
Update "showPeriod" to use yyyy-mm-dd formatting
2020-01-07 15:58:54 -08:00
Brian Wignall
00eb0b3c8f
Make "stack test" pass again
2020-01-07 15:58:22 -08:00
Brian Wignall
35481a665b
Change Date output to yyyy-mm-dd
2020-01-07 15:58:22 -08:00
Aleksandar Dimitrov
3ead97975c
Inline function, add debug statement
2020-01-05 14:45:57 -08:00
Aleksandar Dimitrov
9011aaa5ba
Refactor getSeparator
2020-01-05 14:45:57 -08:00
Aleksandar Dimitrov
92f680875f
Parse reserved words case insensitively
2020-01-05 14:45:57 -08:00
Aleksandar Dimitrov
8df4e1ed83
Remove --separator command line argument
2020-01-05 14:45:57 -08:00
Aleksandar Dimitrov
02d9205af7
Allow separator to be overridden from command line
...
This also fixes that parsing separators on the command line and the
rules file was not handled the same way.
2020-01-05 14:45:57 -08:00
Aleksandar Dimitrov
b524a088c7
Implement getting separator from rules
2020-01-05 14:45:57 -08:00
Aleksandar Dimitrov
32ccc3a2b2
Add directive
2020-01-05 14:45:57 -08:00
Aleksandar Dimitrov
ec0f55d18e
Add missing type signature
2020-01-05 14:45:57 -08:00
Aleksandar Dimitrov
b104b3b8a3
Explictly discard result
2020-01-05 14:45:57 -08:00
Aleksandar Dimitrov
42d585d20b
Refactor: rename variable
2020-01-05 14:45:57 -08:00
Aleksandar Dimitrov
63cda87e86
Whitespace
2020-01-05 14:45:57 -08:00
Simon Michael
ce5eccfbc0
;spelling fix
...
[ci skip]
2020-01-04 21:17:50 -08:00
Stephen Morgan
228edf6ba6
Don't store leaf name in PeriodReport.
...
Calculate at the point of consumption instead.
2020-01-04 21:15:42 -08:00
Stephen Morgan
2e20d0717f
lib: Generalise PeriodicReport to be polymorphic in the account labels.
2020-01-04 17:23:17 -08:00
Stephen Morgan
88dc619257
lib: Use records instead of tuples in PeriodicReport.
2020-01-04 17:23:17 -08:00
Stephen Morgan
beb8b6d7c8
lib: Use PeriodicReport in place of MultiBalanceReport.
2020-01-04 17:23:17 -08:00
Stephen Morgan
74778efcf5
Use nubSort instead of nub . sort.
2020-01-04 08:31:10 -08:00
Stephen Morgan
38904372b2
Calculate MultiReportBalance columns more efficiently.
...
Only calculate posting date once for each posting, and calculate their
columns instead of checking each DateSpan separately.
2020-01-03 16:11:46 -08:00
Simon Michael
0b734be445
; silence safe 0.3.18's deprecation warnings for now
...
(max|min)imum(By)?Def are being replaced by (max|min)imumBound(By)?
but the old functions have the semantics I want and
I don't understand the new ones yet.
This can hide other deprecation warnings in this file,
and presumably the old functions will be removed later,
so this is temporary.
Cf https://github.com/ndmitchell/safe/issues/26
2019-12-28 15:52:32 -08:00
Simon Michael
c5537cedb5
;lib: drop more unnecessary toJSON calls
2019-12-27 15:49:42 -08:00
Stephen Morgan
b9b16da8ed
Correct finding latest date in queryEndDate Or queries and simplify date
...
comparison code.
2019-12-24 05:04:51 -08:00
Brian Wignall
2852f9dbee
Fix typos
2019-12-21 12:09:05 -08:00
Simon Michael
7fa7ccc033
ToJSON instances for all (?) remaining data types, up to Ledger
2019-12-16 17:17:00 -08:00
Simon Michael
46d516e7a3
move JSON instances from hledger-web to hledger-lib
2019-12-16 17:17:00 -08:00
Simon Michael
47567cd770
;fix some warnings with GHC 8.10 alpha
...
hledger is GHC 8.10 ready!
2019-12-14 17:30:19 -08:00
Simon Michael
c759c9b3de
;lib: fix some more warnings in Transaction
2019-12-09 06:08:03 -08:00
Simon Michael
13e6c7dfdf
lib: drop "assertion" alias for nullassertion
...
Perhaps we'll stick with the null* convention. Fixes a warning in Transaction.hs.
2019-12-09 06:08:03 -08:00
Jacek Generowicz
29211868bb
Fix issue 457
...
Issue #457 pointed out that commands such as
hledger ui 'amt:>200'
failed. This was becasue the process of dispatching from `hledger ui`
to `hledger-ui` (note addition of `-`) lost the quotes around
`amt:>20` and the `>` character was interpreted as a shell redirection
operator, rather than as part of the argument.
The machinery for quoting or escaping arguements which cointain
characters which require quoting or escaping (thus far whitespace and
quotes) already existed. This solution simply adds shell stdio
redirection characters to this set.
Fixes #457
2019-12-08 18:33:43 +01:00
Simon Michael
62a9e1aa62
;lib: clarify Hledger.Read imports a little
2019-12-02 08:21:06 -08:00
Simon Michael
a0b92e02b9
Revert "remove old fail compatibility imports that are obsolete ?"
...
They are needed with ghc <8.4, not for fail but for <> I think.
Try cleaning up again another time.
This reverts commit 318ce7eb07 .
2019-12-01 11:32:51 -08:00
Simon Michael
318ce7eb07
remove old fail compatibility imports that are obsolete ?
2019-12-01 08:31:50 -08:00
Simon Michael
279e9624ed
;lib: clarify docs for setFullPrecision, setNaturalPrecision
2019-11-30 16:56:45 -08:00
Simon Michael
2b2a0b3cf8
;tests: use "test" alias for testCase everywhere
...
Easier to type and read, and a little clearer to my eyes;
"testCase" implies a single case, but it can contain many assertions.
2019-11-28 15:33:33 -08:00
Simon Michael
030b633cd6
;fix build issues with old GHC versions
2019-11-28 15:22:12 -08:00
Simon Michael
5dac8af2ef
;ui: fix build error due to tests rewrite
2019-11-27 21:54:31 -08:00
Simon Michael
b36f6df110
tests: port all unit tests to tasty, second pass ( #1090 )
...
Hledger.Util.Tests helpers have been cleaned up, and test names are
now shown.
Tests have been cleaned up a bit. Some groups of unnamed tests have
been collapsed into a single named test containing a sequence of
assertions. The test command counts named tests, not assertions, so
the reported unit test count has dropped from 199 to 188.
2019-11-27 13:17:34 -08:00
Simon Michael
13a3542464
tests: port all unit tests to tasty, first cut ( #1090 )
...
easytest is not actively maintained and requires an old version of
hedgehog which does not support base-compat 0.11 & ghc 8.8.
This is still using the old easytest helpers, and not displaying test
names properly.
2019-11-27 12:43:43 -08:00
Simon Michael
3f0892556d
;lib: clarify choiceopt doc
2019-11-23 13:03:26 -08:00
Dmitry Astapov
aa051a05cf
lib: support generation of (un)balanced virtual postings in csv reader
2019-11-23 10:28:10 -08:00
Simon Michael
332624f9fa
ui: B and V keys toggle display of cost, value
2019-11-21 17:33:04 -08:00
Brian Wignall
f8269e21ab
Fix some simple typos
2019-11-20 13:33:33 -08:00
Mykola Orliuk
2a36ac0d62
;lib: fix doctest for RawOptions
2019-11-19 20:43:19 +01:00
Mykola Orliuk
097486a247
;lib: re-enable doctests
2019-11-19 03:58:56 -08:00
Mykola Orliuk
5287fe671b
;all: hide RawOpts internals
...
This way we can ensure we always use only functions from RawOptions.
2019-11-18 17:38:39 -08:00
Mykola Orliuk
31ae3d3aaf
;lib: drop SystemString left from GHC pre 7.2
...
We are relying on base-4.9 or newer. Thus we don't compile anymore with
GHC version lower than 8.0.1.
2019-11-18 17:38:39 -08:00
Simon Michael
68b1cacf0f
lib: refactor, prepare to drop showTransactionUnelided functionality
...
It seems we don't use it at all, and ony says it's not robust with
prices either.
Merge remote-tracking branch 'ony/chores/drop-elide-in-showTransaction'
2019-11-18 17:27:30 -08:00
Simon Michael
4cb2a03f7f
;lib: more docs for unifyMixedAmount
...
[ci skip]
2019-11-18 17:22:42 -08:00
Michael Kainer
79ca4a767e
cli: Add -% to compound balance commands
...
This commit introduces the commandline argument -%/--percent to show
percentages of the column's total instead of the absolute amounts for
each account in reports. The signs of the values are preserved.
This option is especially useful for the balance and incomestatement
commands.
If there are multiple commodities involved in a report hledger bails
with an error message. This can be avoided by using --cost. Also note
that if one uses -% with the balance command the chances are high that
all numbers are 0. This is due to the fact that by default balance sums
up to zero. If one wants to use -% in a meaningful way with balance one
has to add a query.
In order to keep the implementation as simple as possible --tree has no
influence over how the percentages are calculated, i.e., the percentages
always represent the fraction of the columns total. If one wants to know
the percentages relative to a parent account, one has to use a query to
narrow down the accounts.
2019-11-18 17:10:59 -08:00
Mykola Orliuk
aca214b0ac
lib: drop amount elision in showing last posting
...
This behavior is highly depends on journal. If we want to re-introduce
it we'd better re-consider how transaction entry can be "simplified".
I.e. besides dropping last amount we may drop prices that can be assumed
implicitly.
Note that there is no need to knit it into showTransaction since it
easily achievable with pre-processing (similar to implicit balances
etc).
2019-11-16 12:53:07 +01:00
Dmitry Astapov
c4d650e6ad
lib: balance-style -> balance-type
2019-11-13 09:06:25 -08:00
Dmitry Astapov
39bc183340
lib: csv reader gets balance-style directive
2019-11-13 09:06:25 -08:00
Simon Michael
fb3c1a132c
csv: fix parsing of whitespace on line after an if block ( fix #1120 )
2019-11-13 05:41:32 -08:00
Dmitry Astapov
94f912e558
lib: better resolution of csv field aliases ("balance" vs "balance1", etc)
2019-11-12 12:20:09 -08:00
Simon Michael
c4d7cc198a
csv: finalise and check journals generated from CSV ( #1000 )
...
Invalid transactions generated from CSV will now be rejected.
I updated some csv tests to avoid this, except for 21, which
probably needs more cleanup.
2019-11-07 18:58:12 -08:00
Simon Michael
5264a7ebc1
;lib: refactor, split out finaliseJournal
2019-11-07 18:08:41 -08:00
Dmitry Astapov
fc001da1ef
lib: expenses:unknown is a much better default account name
2019-11-05 21:16:42 +00:00
Dmitry Astapov
c66ccc5cee
lib: do not try to balance transaction in csv reader
2019-11-05 21:16:42 +00:00
Dmitry Astapov
95ec5715cc
lib: better compatibility code in csv reader
2019-11-05 21:16:42 +00:00
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
24bba96ea2
lib: more robust multi-line joining 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
Simon Michael
312e772468
prices: style price amounts; always show full precision
2019-10-20 07:09:34 -07:00
Simon Michael
b598f30a8a
;lib: styleAmountExceptPrecision
2019-10-20 07:08:45 -07:00
Simon Michael
2e3b51c03f
;lib: journalConvertAmountsToCost -> journalToCost
2019-10-19 19:58:27 -07:00
Simon Michael
54e1caebf1
;lib: refactor journalConvertAmountsToCost
2019-10-19 19:53:05 -07:00
Simon Michael
905149df86
;lib: transaction valuation helpers
2019-10-19 19:41:21 -07:00
Simon Michael
de0a6b1e62
;lib: Transaction: as Map -> as M
2019-10-19 19:17:35 -07: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
6dcddadd9f
;journal: in generated-transaction:/posting: tags, add a space before the value
2019-10-07 14:54:36 -10:00
Simon Michael
16973ce296
;lib: fix journalInferCommodityStyles debug message
2019-09-27 18:51:37 -07:00
Simon Michael
58a313165c
;journal: infer amount styles more carefully, fix wrong output ( #1091 )
...
Certain journal entries could trigger a bug where we displayed amounts
with the same character for digit group mark and decimal mark. Now if
a comma or period digit group mark is detected, that forces the
decimal mark to be the other character.
2019-09-27 15:40: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
b754abc36b
;lib: commodityStylesFromAmounts: simplify, disable #1091 test
2019-09-26 18:06:22 -10:00
Simon Michael
4884213a3e
;lib: commodityStylesFromAmounts: a failing unit test for #1091
2019-09-25 23:08:00 -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
180f4baedb
;lib: csv: note cause of #1087
...
[ci skip]
2019-09-14 03:45:37 -07: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
Dmitry Astapov
568cb32677
lib: more runPeriodicTransaction tests (lifted from #1085 and spanIntervalIntersect)
2019-09-11 16:09:28 -07:00
Dmitry Astapov
e9d300bef3
lib: dont raise when there is neither budget nor transactions in the report period
2019-09-11 16:09:28 -07:00
Dmitry Astapov
cf74972148
bin: improve debug output for budger report (show budget txns)
2019-09-11 16:09:28 -07:00
Dmitry Astapov
cf4029a5ed
lib: fix generation of periodic transactions with days/months/... repeat
2019-09-11 16:09:28 -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
c7746131fc
;lib: clarify parser monad transformers a little
...
[ci skip]
2019-09-08 10:40:47 -07:00
Simon Michael
a7f172b085
valuation: -V/-X respects report end date, code/doc cleanups ( #1083 )
...
-V (and -X) now respects a report end date set with -e/-p/date: when
choosing the valuation date, similar to hledger 1.14 and Ledger.
This means that -V/-X aren't exactly like either --value=end or
--value=now. The "Effect of --value on reports" doc has been extended
accordingly, and much of it has been reworded and made more accurate.
2019-09-05 13:41:36 -07:00
Simon Michael
095badd7f9
;fix doctests
2019-08-31 17:15:48 -07:00
Simon Michael
5925808108
lib, web: unhide exports, fix build
2019-08-19 12:30:54 +01:00
Simon Michael
11519744d8
;lib: Valuation: hide some exports
2019-08-19 11:59:32 +01:00
Simon Michael
62e96b1b20
;lib: move PriceGraph, PriceOracle, ValuationType to Valuation.hs
2019-08-19 02:21:30 +01:00
Simon Michael
1cbbe8f43d
memoise market valuation, making it fast ( #999 )
2019-08-19 02:16:39 +01:00
Simon Michael
4beb416070
lib: currying helpers
2019-08-19 02:09:27 +01:00
Simon Michael
7177f533b2
;lib: pricesAtDate: refactor
2019-08-01 18:31:39 +02:00
Simon Michael
70986769ef
;lib: derive NFData for MultiBalanceReport, PriceGraph for criterion
...
Allow these to be timed with criterion at ghci prompt.
2019-08-01 18:31:39 +02:00
Simon Michael
d193d757ea
;lib: multiBalanceReport: fix error message typo
2019-08-01 18:22:14 +02:00
Simon Michael
02ed4f5d04
;lib: intervalFromRawOpts: replace undefined with an error message
2019-07-25 10:46:45 +01:00
Simon Michael
35799142dd
Merge pull request #914 from simonmichael/rule-tags
...
tags for matching rule-generated txns and postings
2019-07-17 18:38:14 +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
6b61d1e0f1
;lib: move transactionNote/Payee to Transaction.hs
2019-07-15 08:22:16 +01:00
Simon Michael
6f2f8d7638
;deps: a better fix for nubSortBy with ghc 7.10, 8.0
...
nubSortBy and nub . sortBy are not equivalent, it seems.
I didn't notice the failing valuation func tests.
2019-07-13 00:13:33 -07:00
Simon Michael
ec310aea73
;lib: avoid nubSortBy which breaks ghc 7, 8.0 builds
2019-07-12 15:21:57 -07:00
Simon Michael
5c3e4de647
;lib: periodFromRawOpts: clarify doc ( #1011 )
...
[ci skip]
2019-07-01 18:33:18 +01:00
Jakob Schöttl
e483faf7f0
Bugfix for #1011 : begin/end date options
2019-06-30 10:38:06 +02:00
Simon Michael
014db152d9
add, web: disallow unsafe trailing dot paths on windows ( fix #1056 )
...
On Windows, ensureJournalFileExists now rejects file paths
containing any problematic trailing dots, to prevent data loss.
This affects the add command and hledger-web's add form.
2019-06-26 18:19:53 +01:00
Simon Michael
33d03284c3
;valuation: more tests; document default amount style issue
...
[ci skip]
2019-06-17 08:19:23 -07:00
Simon Michael
2da50875ee
lib: setNaturalPrecisionUpTo
2019-06-14 19:04:09 -07:00
Simon Michael
5cb334514c
;lib: rename setMinimalPrecision -> setNaturalPrecision
2019-06-14 19:04:09 -07:00
Simon Michael
69defd497f
;lib: refactor: Data.Prices -> Data.Valuation
2019-06-14 19:04:09 -07:00
Simon Michael
83030a09de
;lib: Prices: refactor
2019-06-14 19:04:09 -07:00
Simon Michael
7dd0c5783a
;lib: multibalancereport: refactor
2019-06-14 19:04:09 -07: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
baa15d9bea
;lib: rename MultiBalanceReports.hs -> MultiBalanceReport.hs
2019-06-14 11:45:25 -07:00
Simon Michael
e664fab956
lib: try to simplify, use just one price graph ( #131 )
2019-06-13 15:50:01 -07:00
Simon Michael
dd5afbb6fe
;doc, debug output tweaks ( #131 )
2019-06-13 15:50:01 -07:00
Simon Michael
6a62bd6437
web, api: update for MarketPrice/PriceDirective change
2019-06-13 15:50:01 -07:00
Simon Michael
ce0354ddbe
lib: -X/--exchange now supports indirect price chains ( #131 )
...
Adds fgl as a dependency.
2019-06-13 15:50:01 -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
e24c6292d0
lib: support -X/--exchange (direct/reverse prices only) ( #131 )
2019-06-13 15:50:01 -07:00
Simon Michael
50a52dd467
lib: --value can select commodity (via direct/reverse prices) ( #131 )
2019-06-13 15:50:01 -07:00
Simon Michael
6b6c3385c9
lib: parse optional ,COMM suffix in --value ( #131 )
2019-06-13 15:50:01 -07:00
Caleb Maclennan
18e19b9ad2
;tests: normalize tests, examples, and docs using 2spcs before comments
2019-06-13 12:12:21 -07:00
Caleb Maclennan
8f3e5f9d3b
;print: differentiate posting indent (4spc) and pre-comment space (2spc)
...
Co-authored-by: Simon Michael <simon@joyful.com>
2019-06-13 12:12:21 -07:00
Henning Thielemann
4962b2696a
lib: accountTransactionsReportItems: rewrite using catMaybes and mapAccumL
...
I find the report function less convolved without the integrated recursion.
2019-06-09 18:45:58 -07:00
Simon Michael
88f3f6fc41
print: also canonicalise balance assertions' amount style ( fix #1042 )
2019-06-09 17:39:46 -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
45198d3faa
lib: debug helpers: add ptraceAtWith, dbgNWith
2019-06-02 08:48:41 -07:00
Simon Michael
42ce95aaef
; refactor: centralise valuation logic #131
2019-05-31 15:29:09 -07:00
Simon Michael
ad83919c6a
; lib: drop the Maybe from SummaryPosting
2019-05-31 15:29:09 -07:00
Simon Michael
69d72e8c48
;refactor amountValue
2019-05-25 05:34:29 -07:00
Simon Michael
34a0ad00b1
;lib: encapsulate Prices db
2019-05-25 05:29:34 -07:00
Simon Michael
aa99743096
make -V do --value=end in multiperiod reports ( #329 )
2019-05-24 10:30:35 -07:00
Simon Michael
ea5050963f
web: try to fix RegisterR warning
2019-05-23 22:34:31 -07:00
Simon Michael
20bc386b80
restore TransactionsReport
...
hledger-web's register chart uses it, I didn't see it
because it's called from a hamlet template.
2019-05-23 22:15:40 -07:00
Simon Michael
7212b92079
cleanups ( #329 )
2019-05-23 22:07:50 -07:00
Simon Michael
54c1529638
lib: drop TransactionsReport, BalanceHistoryReport
...
They seem unused.
2019-05-23 21:55:19 -07:00
Simon Michael
04a30fa084
lib: TransactionsReport/AccountTransactionsReport cleanup
...
Split them into separate files, rename journalTransactionsReport to
transactionsReport.
2019-05-23 21:55:19 -07:00
Simon Michael
9977739c76
bal etc.: replace --value=transaction with --value=cost ( #329 )
2019-05-23 21:55:18 -07:00
Simon Michael
adbce22152
bal: --budget: don't always convert to cost
...
And don't show a percentage when budgeted and actual amounts are in
different commodities.
2019-05-23 21:55:18 -07:00
Simon Michael
2355da0f93
reg: replace --value=transaction with --value=cost
2019-05-23 21:55:18 -07:00
Simon Michael
ace215f5f3
print: replace --value=transaction with --value=cost
2019-05-23 21:55:18 -07:00
Simon Michael
37c0edb1f9
lib: drop postingValueAtDate
2019-05-23 21:55:18 -07:00