Commit Graph

1697 Commits

Author SHA1 Message Date
Alex Chen
2cbc41e088 Merge branch 'master' into ExceptTLayer 2018-10-09 11:19:45 -06:00
Alex Chen
e45070aab5 Update dependency bounds for megaparsec 2018-10-09 11:15:33 -06:00
Alex Chen
a8d642d5b5 lib: revise comments for "final" parse errors
- also simplify their implementation a bit
2018-10-09 11:05:46 -06:00
Simon Michael
862fb873b4 update embedded manuals 2018-10-06 09:42:27 -10:00
Simon Michael
ff2a546319 bump version to 1.11.99 2018-10-06 09:42:12 -10:00
Simon Michael
e687ef1a79 doc: changelogs, relnotes 2018-10-06 09:40:06 -10:00
Simon Michael
2ba135e402 lib: journal: fix wrong txn rendering in balance assertion errors 2018-10-06 09:31:22 -10:00
Simon Michael
190eee5485 lib: comment
[ci skip]
2018-10-05 11:05:39 -10:00
Simon Michael
2c9c4ebf79
Merge branch 'master' into ExceptTLayer 2018-10-04 21:04:02 -10:00
Simon Michael
7bc500ccd2 update embedded manuals 2018-09-30 20:08:15 -10:00
Simon Michael
b798c48040 bump version to 1.11 2018-09-30 20:07:45 -10:00
Simon Michael
92c8a6fffb changelogs 2018-09-30 20:05:26 -10:00
Alex Chen
3d2584d869 lib: switch to megaparsec 7 2018-09-30 20:15:12 -06:00
Alex Chen
26369c28a3 lib: remove old code for include file parse errors 2018-09-29 22:55:10 -06:00
Alex Chen
31d4e930e7 lib: Re-implement 'includedirectivep' with the new 'ExceptT' layer
- Parse errors encountered in include files are treated as "final" parse
  errors in the parent file, preventing backtracking and fixing an issue
  in #853
2018-09-29 22:54:49 -06:00
Alex Chen
3e54fc77a4 lib: make 'includedirectivep' an 'ErroringJournalParser'
- Update tests as well, requiring test utilities in Utils/Test.hs
  analogous to the those for 'JournalParser' but instead for
  'ErroringJournalParser'
2018-09-29 22:34:52 -06:00
Alex Chen
855a8f1985 lib: Re-implement the 'ExceptT' layer of the parser
We previously had another parser type, 'type ErroringJournalParser =
ExceptT String ...' for throwing parse errors without the possibility of
backtracking. This parser type was removed under the assumption that it
would be possible to write our parser without this capability. However,
after a hairy backtracking bug, we would now prefer to have the option
to prevent backtracking.

- Define a 'FinalParseError' type specifically for the 'ExceptT' layer
- Any parse error can be raised as a "final" parse error
- Tracks the stack of include files for parser errors, anticipating the
  removal of the tracking of stacks of include files in megaparsec 7
  - Although a stack of include files is also tracked in the 'StateT
    Journal' layer of the parser, it seems easier to guarantee correct
    error messages in the 'ExceptT FinalParserError' layer
  - This does not make the 'StateT Journal' stack redundant because the
    'ExceptT FinalParseError' stack cannot be used to detect cycles of
    include files
2018-09-29 22:33:34 -06:00
Alex Chen
2b3c97e1af lib: tweak custom parse errors
- Don't immediately throw custom parse errors into 'ParsecT'; rather,
  just construct and return them
- This anticipates the re-implementation of an 'ExceptT' layer of the
  parser, which should be able throw custom parse errors
2018-09-29 22:32:34 -06:00
Alex Chen
5e1f0ba6f7 lib: add a field to 'Journal' for a stack of include files
- In anticipation of megaparsec 7, which removes support for stacks of
  include files (as far as I can tell)
- Intended for the 'StateT Journal' layer of the parser
  - A stack of include files would be better in a 'ReaderT' layer, but I
    don't want to add another layer to the parser
- Intended for detecting cycles of include files
  - Potential issue: for proper error messages for include file cycles,
    we must remember to provide the filepath of the root journal file via
    the initial journal state passed to a 'JournalParser'; I imagine
    that we may forget to do so because in all other cases it is okay
    not to do so.
2018-09-29 22:32:27 -06:00
Simon Michael
2960c9209f lib: whitespace 2018-09-27 10:51:36 -10:00
Simon Michael
f42b140d53 lib: note about strict Map 2018-09-27 10:51:36 -10:00
Simon Michael
855bd54d19 budget: declaration and (actual) amount sorting for bal --budget
Account declaration-aware sorting is the default throughout hledger now.
2018-09-24 08:31:19 -10:00
Simon Michael
f2b4fca9b0 docs: journal: more account sorting updates
[ci skip]
2018-09-23 18:04:20 -10:00
Simon Michael
7a9ca5f6a9 docs: journal: more account sorting updates
[ci skip]
2018-09-23 17:55:21 -10:00
Simon Michael
477caa31c5 docs: journal: remove account code from example
[ci skip]
2018-09-23 17:48:19 -10:00
Dmitry Astapov
8c79d6529d lib: fix balance --budget in the presence of --value 2018-09-23 07:45:34 -10:00
Simon Michael
3de8c11de1 journal: a new account sorting mechanism, and a bunch of sorting fixes
A bunch of account sorting changes that got intermingled.

First, account codes have been dropped. They can still be parsed and
will be ignored, for now. I don't know if anyone used them.
Instead, account display order is now controlled by the order of account
directives, if any. From the mail list:

  I'd like to drop account codes, introduced in hledger 1.9 to control
  the display order of accounts. In my experience,

  - they are tedious to maintain
  - they duplicate/compete with the natural tendency to arrange account
    directives to match your mental chart of accounts
  - they duplicate/compete with the tree structure created by account
    names

  and it gets worse if you think about using them more extensively,
  eg to classify accounts by type.

  Instead, I plan to just let the position (parse order) of account
  directives determine the display order of those declared accounts.
  Undeclared accounts will be displayed after declared accounts,
  sorted alphabetically as usual.

Second, the various account sorting modes have been implemented more
widely and more correctly. All sorting modes (alphabetically, by account
declaration, by amount) should now work correctly in almost all commands
and modes (non-tabular and tabular balance reports, tree and flat modes,
the accounts command). Sorting bugs have been fixed, eg #875.
Only the budget report (balance --budget) does not yet support sorting.

Comprehensive functional tests for sorting in the accounts and balance
commands have been added. If you are confused by some sorting behaviour,
studying these tests is recommended, as sorting gets tricky.
2018-09-22 21:45:07 -10:00
Simon Michael
598129ad6a lib: pushAccount -> pushDeclaredAccount 2018-09-22 21:06:29 -10:00
Simon Michael
8c18bada0c lib, cli, ui, web: update cabal files 2018-09-22 21:01:23 -10:00
Simon Michael
03acd40668 lib, cli, ui, web: upper bound to avoid megaparsec 7 for now 2018-09-20 20:48:47 -10:00
Simon Michael
059ad9eb76 refactor: jaccounts -> jdeclaredaccounts 2018-09-17 05:52:13 -07:00
Simon Michael
8d3cddc907 drop another old csv import 2018-09-07 12:51:10 -07:00
Simon Michael
362705a981 update cabal files 2018-09-07 12:44:52 -07:00
Simon Michael
23bdac41d9 csv: merge lucamolteni's cassava/custom separators (squashed) (#829)
commit 5ba464de761b298e50d57a8b7d14bc28adb30d5d
Author: Luca Molteni <volothamp@gmail.com>
Date:   Fri Sep 7 17:54:12 2018 +0200

    Fix CI 2

commit f060ae9449f4b61a915b0ed4629fc1ba9b66fb4a
Author: Luca Molteni <volothamp@gmail.com>
Date:   Fri Sep 7 17:30:08 2018 +0200

    Fix CI build

commit af0719a33b9b72ad244ae80198d881a1f7145e9d
Author: Luca Molteni <volothamp@gmail.com>
Date:   Fri Sep 7 17:19:01 2018 +0200

    Fix rebase

commit 1a24ddfa54dfb4ff1326e1a51005ffa82d3dc3c8
Author: Luca Molteni <volothamp@gmail.com>
Date:   Fri Aug 10 16:25:24 2018 +0200

    Fixed some GHC warnings

commit 1ac43398a359b5925ef71f53347698f1c6c510ef
Author: Luca Molteni <volothamp@gmail.com>
Date:   Fri Aug 10 16:14:49 2018 +0200

    Fix .cabal

commit 422456b925d8aa4ab3e869f51e98c2b1c3dcde0a
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sun Jul 1 22:56:20 2018 +0200

    Removed to-do list

commit 1118b762e4fd15c4fe7ba48ba86676706ea3a5a5
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sun Jul 1 22:53:28 2018 +0200

    Better test

commit 1146ed0941655668bf7684f18aa15c5f4b9b20c2
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sun Jul 1 15:32:28 2018 +0200

    Fix parsing

commit 4fc2374b2b81802990da30c96756aab54d77399c
Author: Luca Molteni <volothamp@gmail.com>
Date:   Thu Jun 21 22:11:11 2018 +0200

    Parsing of separator

commit f7a61737f1ad4460ba20ca9b2e86eb21468abb33
Author: Luca Molteni <volothamp@gmail.com>
Date:   Thu Jun 21 14:29:23 2018 +0200

    Almost separator in options

commit ac8841cf3b9c80914bc3271ad9b9ff4ae9ba48a7
Author: Luca Molteni <volothamp@gmail.com>
Date:   Thu Jun 21 14:16:59 2018 +0200

    Separator in parseCSV

commit 92a8b9f6ba77ea4237f769641e03029ac88542ea
Author: Luca Molteni <volothamp@gmail.com>
Date:   Thu Jun 21 13:30:41 2018 +0200

    separator option

commit ec417a81ae625647cf35e61776cdf02bdb2c6aea
Author: Luca Molteni <volothamp@gmail.com>
Date:   Thu Jun 21 10:45:26 2018 +0200

    Removed one qualified import

commit 8b2f386c2f780adcd34cff3de7edceacc1d325a7
Author: Luca Molteni <volothamp@gmail.com>
Date:   Wed Jun 20 14:01:12 2018 +0200

    Removed string conversions

commit a14d0e099e28a286bb81770cfc9cb8f5c7e5cf1f
Author: Luca Molteni <volothamp@gmail.com>
Date:   Wed Jun 20 10:23:20 2018 +0200

    custom delimiter in cassava

commit 694d48e2bc1ada0037b90367c017f3082f68ed45
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sun Jun 10 17:51:54 2018 +0200

    Use Text.getContents - remove UTF-8 compatibility library

commit a7ada2cc60033ebdd796ca34cc2ec69a4f387843
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sun Jun 10 17:49:34 2018 +0200

    todo list

commit 58ec47d3987909f6bace50e3e647e30dadd5bf03
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sun Jun 10 17:45:22 2018 +0200

    CSV test now has unicode characters

commit b7851e94c3f1683b63ec7250a12bcde3b7bed691
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sun Jun 10 16:59:39 2018 +0200

    Use decode from Text

commit 79f59fd28ccaca08fcd718fcd8d00b1c1d65d7e1
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sun Jun 10 13:28:57 2018 +0200

    Use Text and Lazy Bytestring

commit 470c9bcb8dc00669beb4ef0303a1e7d9f7aecc89
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sat Jun 9 15:30:22 2018 +0200

    Use megaparsec error

commit f978848ba249ef4f67b855bea5d4e549290c205c
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sat Jun 9 15:22:07 2018 +0200

    Renamed qualify and remove Parsec

commit 152587fde204c43a55798d212e43f37cd3038c2e
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sat Jun 9 15:12:36 2018 +0200

    Use cassava mega parsec

commit cf281577a3d3a071196484a6fc8485f2ea1f7d67
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sat Jun 9 14:01:47 2018 +0200

    Removed Data.Vector

commit 1272e8e758369d8cc5778029a705b277355a5029
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sat Jun 9 12:16:18 2018 +0200

    Removed Parsec ParseError

commit ae07f043135a19307fd65b281ade37a74c76acb2
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sat Jun 9 12:06:14 2018 +0200

    Type sinonim for ParsecError

commit 8e15b253c11bd1c0c35a7641aeb18aa54e0ba9b0
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sat Jun 9 11:16:08 2018 +0200

    Replaced with typeclasses

commit 1ed46f9c175603611325f3d377004e4b85f29377
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sat Jun 9 11:01:33 2018 +0200

    Replaced Text/CSV with Cassava

commit 362f4111b5854145703174b976fc7acbd71b8783
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sat Jun 9 10:34:37 2018 +0200

    Use cassava parsin instead of Text/CSV

commit 83e678e371618687cf7c15a4e2cfa67f570b6b64
Author: Luca Molteni <volothamp@gmail.com>
Date:   Sat Jun 9 08:22:51 2018 +0200

    Text CSV error messages

commit f922df71d274beeacab9fb2530b16c97f005cc08
Author: Luca Molteni <volothamp@gmail.com>
Date:   Fri Jun 8 21:45:20 2018 +0200

    Better types

commit edd130781c84790a53bff2283e6041eb8232e7cf
Author: Luca Molteni <volothamp@gmail.com>
Date:   Fri Jun 8 21:34:59 2018 +0200

    Conversion to Text CSV type

commit 0799383214483018ad2d977a3c8022414959c2b2
Author: Luca Molteni <volothamp@gmail.com>
Date:   Fri Jun 8 16:06:21 2018 +0200

    First function with cassava

commit e92aeb151ff527b383ff3d0ced7764e81b71af82
Author: Luca Molteni <volothamp@gmail.com>
Date:   Fri Jun 8 13:47:34 2018 +0200

    Added cassava as dependency

commit 5ea005c558a3939af7e5f0cd735a9b4da931228e
Author: Luca Molteni <volothamp@gmail.com>
Date:   Fri Jun 8 13:18:47 2018 +0200

    Better .gitignore for multi idea modules
2018-09-07 12:34:51 -07:00
Simon Michael
65807162b3 tests: make doctests suite run with old ghcs
(Require a newer doctest which supports --fast and --verbose.)
2018-09-07 12:34:51 -07:00
Simon Michael
86750d5cde tests: make doctests suite build with ghc 7.10 2018-09-07 12:34:51 -07:00
Simon Michael
91b111b60d rename easytests_* to tests_* 2018-09-06 13:13:26 -07:00
Simon Michael
f388d9311a update embedded manuals 2018-09-06 12:03:50 -07:00
Simon Michael
622153e022 lib: doctests: note ghc 7.10 build failure
[ci skip]
2018-09-04 14:42:03 -07:00
Simon Michael
ce96001cfc lib: keep Tests building with ghc 7.10
The doctests test suite fails to bulid with ghc 7.10, not fixed.
2018-09-04 14:27:10 -07:00
Simon Michael
d14d6e2b68 tests: update doctests after Transaction Show change 2018-09-04 14:02:04 -07:00
Simon Michael
d893ed64a5 lib: drop hunittests test suite & HUnit dependency 2018-09-04 13:53:59 -07:00
Simon Michael
cc0cf995b3 lib: fix easytests test suite 2018-09-04 13:53:16 -07:00
Simon Michael
4003264129 lib: drop HUnit helpers, rename expectEqPP 2018-09-04 13:52:36 -07:00
Simon Michael
54db19e857 tests: convert & re-enable StringFormat tests 2018-09-04 13:51:08 -07:00
Simon Michael
51618adc37 tests: use is in a few more places 2018-09-04 13:39:21 -07:00
Simon Michael
7370f2a553 tests: Hledger -> easytest 2018-09-04 12:25:52 -07:00
Simon Michael
09d9fbf487 tests: Reports -> easytest 2018-09-04 12:23:07 -07:00
Simon Michael
241d0dbebd tests: ReportOptions -> easytest 2018-09-04 11:54:40 -07:00
Simon Michael
3b63c2ff2f tests: Transaction, Data -> easytest 2018-09-04 11:54:15 -07:00
Simon Michael
a8175d8b14 tests: Timeclock -> easytest 2018-09-04 11:30:48 -07:00
Simon Michael
8d1506a4a4 tests: Posting -> easytest 2018-09-04 10:26:22 -07:00
Simon Michael
c5cd0dc648 tests: Ledger -> easytest 2018-09-04 10:24:07 -07:00
Simon Michael
d5c756e6c8 tests: Journal -> easytest 2018-09-04 10:10:10 -07:00
Simon Michael
0499b3f7e5 tests: Amount -> easytest 2018-09-04 10:01:26 -07:00
Simon Michael
dcc44d10a5 lib: export HasCallStack from Hledger.Utils.Test 2018-09-04 09:59:48 -07:00
Simon Michael
c3755f9a52 tests: AccountName -> easytest 2018-09-04 07:40:27 -07:00
Simon Michael
5de679ce62 tests: Query -> easytest 2018-09-04 07:29:48 -07:00
Simon Michael
bbecb28cae tests: Utils -> easytest 2018-09-03 15:54:53 -07:00
Simon Michael
f713a413ff clarify expectEq' arguments 2018-09-03 15:54:13 -07:00
Simon Michael
f3709f241d tests: port Read tests to easytest 2018-09-03 15:42:24 -07:00
Simon Michael
d1cff46ba7 tests: port CsvReader tests to easytest 2018-09-03 15:30:52 -07:00
Simon Michael
1fced57c81 lib: export expectEq' helper 2018-09-03 15:30:27 -07:00
Simon Michael
cd67f8ea68 tests: clear out old boilerplate 2018-08-31 18:12:17 -07:00
Simon Michael
d1a7cc1c09 port remaining Read.Common tests 2018-08-31 18:12:17 -07:00
Simon Michael
f124007acf tests: dehyphenate test names 2018-08-31 18:12:17 -07:00
Simon Michael
be7866da59 tests: parsedate -> fromGregorian 2018-08-31 18:12:17 -07:00
Simon Michael
f108b56e61 uniquify modules' easytests, simplify imports 2018-08-20 14:31:31 +01:00
Simon Michael
6568784bf6 port remaining JournalReader tests 2018-08-20 14:31:31 +01:00
Simon Michael
9733e0378e journal: restore/port more old unit tests 2018-08-20 10:38:51 +01:00
Simon Michael
776d575610 test helpers: more line breaks, clarify monadic behaviour 2018-08-20 10:38:02 +01:00
Simon Michael
d6fb96cb4c tests: expectParse, expectParseError helpers; parse to end of input 2018-08-20 08:59:06 +01:00
Simon Michael
5d9d9a8edb tests: drop obsolete helpers 2018-08-20 08:25:03 +01:00
Simon Michael
9c0483fef2 tests: port another to easytest 2018-08-20 08:22:31 +01:00
Simon Michael
1a38beaad1 drop old transactionp hunit tests 2018-08-19 19:12:26 +01:00
Simon Michael
7706f8498e tests: comment 2018-08-19 19:05:59 +01:00
Simon Michael
89357bb7b6 another parse test helper, use the IO variant always, port more tests 2018-08-19 19:02:59 +01:00
Simon Michael
3e6159e632 replace a bunch of custom Show instances for easier troubleshooting
Custom Show instances were obscuring important details in test failure
output again. The best policy seems to be: stick with default derived
Show instances as far as possible, but when necessary customize them
to conform to haskell syntax so pretty-show can do its thing (eg when
they contain Day values, cf https://github.com/haskell/time/issues/101).
2018-08-19 18:17:49 +01:00
Simon Michael
2778f6cf8f lib: restore some old unit tests
Also change nullsourcepos, tests prefer JournalSourcePos for some reason.
2018-08-19 18:13:01 +01:00
Simon Michael
150b40e465 tests: remove empty scope 2018-08-19 18:07:33 +01:00
Simon Michael
bdcfba4eaa whitespace 2018-08-18 20:31:47 +01:00
Simon Michael
fc11b5130f journal: another failing test from #807 2018-08-18 19:50:15 +01:00
Simon Michael
7ab8bc2685 tests: import cleanups 2018-08-18 19:47:52 +01:00
Simon Michael
a8031de729 tests: fix build error with GHC < 8.4 2018-08-18 19:26:07 +01:00
Simon Michael
6081fead11 lib: clarify package test suites, run all easytests 2018-08-18 15:20:15 +01:00
Simon Michael
582e088325 lib: tests/ -> test/ 2018-08-18 15:20:15 +01:00
Simon Michael
d778a92561 tests: export HUnit/EasyTest from Hledger.Utils.Test; more helpers 2018-08-18 15:19:59 +01:00
Simon Michael
4d578c008f typo 2018-08-18 13:40:01 +01:00
Simon Michael
e0e21a2c6c lib: note 2018-08-18 07:30:23 +01:00
Simon Michael
9c3a57f615 lib: some test fixes (#823) 2018-08-17 14:18:24 +01:00
Simon Michael
b4c336c874 test/_test/it/_it helpers; refactor easytests
This makes skipping/unskipping tests easier, and improves readability
a bit.

Note it's also possible to just write the test name with no preceding
function, when the type is constrained (see Journal.hs).
2018-08-17 13:40:37 +01:00
Simon Michael
626247bacd journal: unit tests (2 skipped) for periodtransactionp (#823) 2018-08-17 12:42:43 +01:00
Simon Michael
b1bbbf0d93 lib: expectParseEqIO helper 2018-08-17 12:42:05 +01:00
Simon Michael
43d973e8ab lib: more verbose show instance for PeriodicTransaction 2018-08-17 12:41:45 +01:00
Simon Michael
1d775a7a9c lib: D should not affect automated posting multiplier amounts (fix #860) 2018-08-17 07:39:17 +01:00
Simon Michael
13436637c6 lib: "decimal point" -> "decimal separator" in error message 2018-08-17 07:37:26 +01:00
Simon Michael
e35dd19cc8 lib: refactor: tighten up amountwithoutpricep 2018-08-17 06:51:07 +01:00
Simon Michael
e9c5d13ac1 lib: update old failing amountp/postingp tests, at last (#812) 2018-08-16 06:42:52 +01:00
Simon Michael
dab75d98c8 lib: expectEq', expectParseEq: pretty-print compared values (#812) 2018-08-16 06:31:37 +01:00
Simon Michael
536eadb809 lib: improve expectParseEq (#812)
Show a pretty parse error, and avoid sequenced scopes
which are confusing (you can't run only the second).
2018-08-16 06:03:44 +01:00
Simon Michael
09d8e302db lib: use unspaced scopes to simplify command lines (#812) 2018-08-16 05:58:17 +01:00
Simon Michael
50d666d5a0 test: refactor, document, organise easytests, port amountp tests (#812) 2018-08-15 19:58:07 +01:00
Simon Michael
69325da110 comment out failing tests to fix CI (#812) 2018-08-15 11:30:53 +01:00
Simon Michael
ab7dc3294e lib: more informative failure output for amount tests (#812) 2018-08-15 11:24:52 +01:00
Simon Michael
e6181efe95 lib: more compact show instance for Amounts (#812)
Amount's default show instance hid important details, making eg test
failures hard to understand. Showing full detail required increasing
the debug level which was inconvenient.

Now it has a single show instance which shows more information, is
fairly compact, and is pretty-printable with pretty-show.
Ellipses (..) in the output indicate where fields are
- not shown in full detail, and/or
- shown in pseudo syntax (double quoted) to work with pretty-show.

ghci> usd 1
OLD:
Amount {acommodity="$", aquantity=1.00, ..}
NEW:
Amount {acommodity = "$", aquantity = 1.00, aprice = NoPrice, astyle = AmountStyle "L False 2 Just '.' Nothing..", amultiplier = False}

MixedAmount's show instance is unchanged, but showMixedAmountDebug
is affected by this change:

ghci> putStrLn $ showMixedAmountDebug $ Mixed [usd 1]
OLD:
Mixed [Amount {acommodity="$", aquantity=1.00, aprice=, astyle=AmountStyle {ascommodityside = L, ascommodityspaced = False, asprecision = 2, asdecimalpoint = Just '.', asdigitgroups = Nothing}}]
NEW:
Mixed [Amount {acommodity="$", aquantity=1.00, aprice=, astyle=AmountStyle "L False 2 Just '.' Nothing.."}]
2018-08-15 11:18:55 +01:00
Simon Michael
4c268f4a93 doc: journal: fix Transaction Modifiers formatting
[ci skip]
2018-08-14 16:07:26 +01:00
Simon Michael
681039b387 doc: journal: fix Transaction Modifiers heading
[ci skip]
2018-08-14 16:05:06 +01:00
Simon Michael
27d464f344 lib: some helpers for setting Amount internals (#812) 2018-08-14 16:05:06 +01:00
Simon Michael
efae8f8f2a lib: comment 2018-08-14 16:05:06 +01:00
Simon Michael
e077aeff5f lib: more informative test failure message (#812) 2018-08-14 16:05:06 +01:00
Simon Michael
321635274c lib: move assertParseEqual' (#812) 2018-08-14 16:05:06 +01:00
Simon Michael
b03584dbce lib: parse helper haddocks 2018-08-14 16:05:06 +01:00
Simon Michael
cfaa0501e6 lib: update some journal parser tests (#812) 2018-08-14 16:05:06 +01:00
Jakub Zárybnický
c67404c73d lib: Fix compile errors in tests 2018-08-14 16:05:06 +01:00
Simon Michael
e88a9c4a5f lib: followingcomment: parse no comment as "", not "\n"
Same-line & next-line comments of transactions, postings, etc.
are now parsed a bit more precisely. Previously parsing no comment
gave the same result as an empty comment (a single newline); now
it gives an empty string.

Also, and perhaps as a consequence of the above, when there's no
same-line comment but there is a next-line comment, we'll insert an
empty first line, otherwise next-line comments would get moved up to
the same line when rendered.

Some doctests have been added.
2018-08-03 19:38:55 +01:00
Simon Michael
46d6971da7 lib: doctests: file pattern arguments, more informative output
Limiting to just the file(s) you're interested can make doctest start
much quicker. With a big caveat: you can limit the starting files,
but it will also test all other local files those import.
2018-08-03 19:06:17 +01:00
Simon Michael
df430e5eb0 lib: AccountName: set OverloadedStrings for doctests 2018-08-03 19:05:14 +01:00
Simon Michael
ed93807ee5 lib: doctests: add --verbose and --slow flags to executable
--slow turns off doctest's --fast flag, which skips reloading between
  tests.
--verbose shows progress output as tests are run, if doctest 0.16.0+
  is installed (and I believe will be harmless otherwise)
2018-08-03 19:05:14 +01:00
Simon Michael
0135f8c863 tools: make doctest: use default snapshot/ghc 8.4, mention mac workaround 2018-08-03 19:05:11 +01:00
Joseph Weston
40d70ad10b lib: fail when file to include is in stack of 'include' files 2018-08-02 18:43:00 +01:00
Joseph Weston
1d91ea43a5 lib: add whitespace around '$' operator 2018-08-02 18:43:00 +01:00
Simon Michael
86c36c1dcc update embedded manuals 2018-08-02 08:25:49 +01:00
Simon Michael
481e2061d7 doc: journal: tweak mnemonics 2018-08-02 08:25:49 +01:00
Simon Michael
64bd88dd80 doc: journal: rename topic to Transaction Modifiers 2018-08-02 08:25:49 +01:00
Simon Michael
d685d1aa9b lib,rewrite: simplify transactionModifierToFunction
This removes transactionModifierToFunction's extra query parameter;
the rewrite command sets it in the TransactionModifier instead, which
I think is equivalent. I had to change one functional test, but it
seems correct now, so perhaps it wasn't working right before ?
2018-08-02 08:25:49 +01:00
Simon Michael
72acb86299 cabal: bump tested-with declarations 2018-08-02 08:25:49 +01:00
Simon Michael
1e0a7ec8f1 remove some unneeded CPP pragmas 2018-08-02 08:25:49 +01:00
Simon Michael
eae9d78bb1 lib: generateAutomaticPostings -> applyTransactionModifiers 2018-08-02 08:25:49 +01:00
Simon Michael
bb36693155 lib: refactor, txnTieKnot automatically 2018-08-02 08:25:49 +01:00
Simon Michael
572f5a4b31 lib: drop parseAndFinaliseJournal', seems unused (api change) 2018-08-02 08:25:49 +01:00
Simon Michael
a49b1cd3bb lib: AutoTransaction.hs -> TransactionModifier.hs, PeriodicTransaction.hs 2018-07-30 20:22:39 +01:00
Simon Michael
efc54c4c25 lib: ModifierTransaction -> TransactionModifier; try to clarify a bit 2018-07-30 19:38:21 +01:00
Simon Michael
007b9f8caa lib: capitalised month names broke some period expressions (fix #852)
This was a regression in hledger 1.10.
mon[th]Index are now case insensitive.
2018-07-30 11:08:23 +01:00
Simon Michael
daa37a9993 lib: nthdayof(month|year)containing now validate input a bit (#852) 2018-07-30 11:08:14 +01:00
Simon Michael
0f3a030a40 lib: whitespace 2018-07-30 11:05:02 +01:00
Simon Michael
eb6baac6e7 lib: make applyN more robust (#852) 2018-07-30 11:04:33 +01:00
Simon Michael
d9d94e2cf6 journal: fix breakage in auto posting rule parser (#745)
I was negligent and did not test enough. This should ignore
transaction comments in auto posting rules more safely.
It also adds support for trailing comments on the first line of auto
posting rules, which previously were misparsed as part of the query.
2018-07-26 15:54:21 +01:00
Simon Michael
e2f5e98926 lib: clarify account name parsing rules 2018-07-26 08:30:32 +01:00
Simon Michael
41c985b5fb journal: ignore transaction comments in auto posting rules (#745)
Previously they were misparsed as account names.
2018-07-26 08:29:02 +01:00
Joseph Weston
e23160059e lib: add generated man files 2018-07-26 06:12:31 +01:00
Joseph Weston
1fca47cf18 lib: update documentation for globs in 'include' directive 2018-07-26 06:12:31 +01:00
Joseph Weston
f2c1586238 lib: sort the matched include files lexicographically
Now the files are included in the same order as they would be
listed by 'ls'.
2018-07-26 06:12:31 +01:00
Joseph Weston
1ec16c2dc0 lib: explicitly specify that the 'Glob' package should be used
Without this there are conflicts with the 'filemanip' package,
which itself exports a module 'System.FilePath.Glob'.
2018-07-26 06:12:31 +01:00
Joseph Weston
c69b16d826 lib: prefer use of 'parseErrorAt' to generic 'fail'
'fail' will just terminate the current parse branch, whereas here
we have encountered a definite error. Also bring the code to
get the current working directory inside 'getFilePaths', as it
logically belongs there.
2018-07-26 06:12:31 +01:00
Joseph Weston
5077443a84 lib: add tests and code for nonexistant files and malformed globs 2018-07-26 06:12:31 +01:00
Joseph Weston
2c4d0c0acd lib: factor out logic for obtaining a list of files to include 2018-07-26 06:12:31 +01:00
Joseph Weston
2d420a33a4 lib: update cabal file with 'Glob' library depdendency 2018-07-26 06:12:31 +01:00
Joseph Weston
0ade323d2a lib: use glob matching if filename in 'include' directive is a glob pattern 2018-07-26 06:12:31 +01:00
Joseph Weston
96f7a03487 lib: factor out parsing child journal into separate function 2018-07-26 06:12:31 +01:00
Joseph Weston
52da073828 lib: expand current directory separately from filepath
We will need the current directory as an absolute path when
adding glob patterns in a few commits time.
2018-07-26 06:12:31 +01:00
Joseph Weston
9e56ad24e2 lib: reorder code for reading include files
This should be before all journal and parser state manipulations,
so that those can be readily factored in a few commits time.
2018-07-26 06:12:31 +01:00
Simon Michael
aab7d2d964 lib: fix error triggered by upper-case day in period expression (#847) 2018-07-24 14:36:45 +01:00
Simon Michael
da8047d286 lib: type signatures 2018-07-24 14:24:45 +01:00
Simon Michael
fe73f2a6b5 csv: interpolated field names in values are now case insensitive
Field names are supposed to be case insensitive, but a field assignment like

fields  ...,Transaction_Date,...
date %Transaction_Date

was failing, because of the capitalised letters. Fixed now.
2018-07-22 22:26:24 +01:00
Simon Michael
aebd6c50d6 smooth: smoothes out irregular transactions (experimental addon) 2018-07-16 23:36:06 +01:00
Simon Michael
d5430e7ddf clean up debug helpers (api change) 2018-07-16 15:28:58 +01:00
Simon Michael
9d2e80aa2c lib: Debug: simplify pprint, export ppShow as pshow (api change) 2018-07-16 12:51:50 +01:00
Simon Michael
92404bb847 prices: allow filtering by query, clarify docs
Query arguments are allowed, prices can be filtered by date, and
postings providing transaction prices can be filtered by anything.
2018-07-15 09:21:10 +01:00
Simon Michael
91e5baf617 lib: clean up queryDateSpan, queryDateSpan' (api change)
These now intersect date AND'ed date spans, instead of unioning them,
and docs are clearer.
2018-07-15 08:35:39 +01:00
Simon Michael
d461e96c34 doc: update manuals harder, they should say 1.10.99
[ci skip]
2018-07-04 15:09:57 +01:00
Simon Michael
4f40467d86 update embedded manuals 2018-07-04 13:33:27 +01:00
Simon Michael
d62f082bce bump version to 1.10.99 (dev) 2018-07-04 13:32:42 +01:00
Simon Michael
91c487d4c2 doc: manuals: update version strings 2018-07-04 12:52:29 +01:00
Simon Michael
8d6667f698 lib: doc: forecast transaction dates tweak (#835)
[ci skip]
2018-07-04 09:48:32 +01:00
Simon Michael
0322638cf5 lib: doc: clarify how forecast transaction dates work (#835)
[ci skip]
2018-07-04 09:41:12 +01:00
Simon Michael
22f2e90a4b update embedded manuals 2018-06-30 22:08:48 +01:00
Simon Michael
6242b1d784 bump version to 1.10 2018-06-30 22:08:02 +01:00
Simon Michael
6b8fcd7205 changelogs 2018-06-30 21:57:06 +01:00
Simon Michael
937333c2c1 doc: journal: more account codes limitations
[ci skip]
2018-06-27 12:42:05 +01:00
Simon Michael
2959356bd9 doc: journal: note another account codes limitation, in flat mode
[ci skip]
2018-06-27 12:19:25 +01:00
Simon Michael
35e68e23c5 doc: journal: clarify account aliases doc
[ci skip]
2018-06-27 11:44:26 +01:00
Simon Michael
6d215945b6 doc: journal: clarify account aliases doc
[ci skip]
2018-06-27 11:41:11 +01:00
Simon Michael
6924e8390c lib: journal: let alias/apply account affect account directives (#825) 2018-06-27 11:33:12 +01:00
Simon Michael
422f1084c9 doc: journal: note that non-regex alias directive is case sensitive
[ci skip]
2018-06-27 11:15:46 +01:00
Alex Chen
e82b01bcf8 lib: refine parse errors and parser labels 2018-06-20 23:24:39 -06:00
Alex Chen
9674f2a8cc lib: tweak whitespace parsing for better parse errors
- expands the set of expected tokens when e.g. parsing the invalid
  posting `account  $1 a`
- whitespace can affect parse errors because of the longest match rule
  where errors that occur later take precedence over those that occur
  earlier
2018-06-20 23:24:39 -06:00
Alex Chen
ed0106b209 lib: reduce backtracking of various parsers 2018-06-20 23:24:39 -06:00
Alex Chen
e3a755b5b1 lib: refactor amount parsers to minimize backtracking
- inline `spaceamountormissingp` into `postingp`
- combine `rightsymbolamountp` and `nosymbolamountp`
- the multiplier symbol '*' for an amount must now always preceed a sign '-'
  [breaking change]
- make amount parser labels more generic to simplify error messages
2018-06-20 23:24:39 -06:00
Alex Chen
89b1fd7de3 lib: refactor date-time parser, add error messages
- also removed commented-out time-zone code
2018-06-20 23:24:39 -06:00
Simon Michael
bc9375e4e5 lib: doc: journal: describe current directive semantics, finally
It's amazing how you can build, document, support and fix a thing for
years and not know what exactly it does. Directives are tricky.
Here is a pretty accurate description of their current behaviour,
determined by testing.
2018-06-20 19:41:28 -07:00
Simon Michael
26489765ef lib: manual updates
[ci skip]
2018-06-20 18:44:34 -07:00
Simon Michael
816ba0f89d consistent comment wording 2018-06-18 17:54:25 -07:00
Simon Michael
b04dc82125 lib: doc: journal: clarify periodic transactions
[ci skip]
2018-06-18 17:54:07 -07:00
Simon Michael
c4d45cffc4 lib: journal: require a space between period expr. and other fields 2018-06-12 16:41:36 -07:00
Simon Michael
eb23504906 lib: periodexprp: don't consume trailing whitespace 2018-06-12 16:41:36 -07:00
Alex Chen
c6bfd92dd3 removing "re-parsing" for pull 807
For Data/Dates.hs in particular:
- Changed `SimpleTextParser` to `TextParser m` for all parsers
- Changed `string` to the case-insensitive `string'` to match the
  behaviour of `T.toLower` found in `parsePeriodExpr`
- export `periodexprp` for "direct" use
2018-06-12 16:41:36 -07:00
Simon Michael
57f41697ba update embedded manuals 2018-06-12 16:41:36 -07:00
Simon Michael
e3507ad944 lib: journal: allow descriptions/comments in periodic transactions
Also period expressions relative to today's date can now be used,
for what it's worth.
2018-06-12 16:41:36 -07:00
Simon Michael
dfcafc2cdf lib: refactor some journal, period expression parsers 2018-06-12 16:41:36 -07:00
Simon Michael
1287081ffd tools: doctest: slight cleanup 2018-06-12 16:41:36 -07:00
Simon Michael
7a4c3eea65 lib: doc: periodic/auto rule cleanups 2018-06-12 16:41:36 -07:00
Alex Chen
0fb737bc39 lib: reduce backtracking in commoditydirectiveonelinep 2018-06-11 14:29:18 -06:00
Alex Chen
0382bb5cd4 lib: move custom parse errors to Text.Megaparsec.Custom 2018-06-11 13:58:56 -06:00
Alex Chen
846a38139d lib: add license to the code copied from megaparsec 2018-06-11 13:58:56 -06:00
Alex Chen
2b22f857ac lib: make the parse errors module backwards compatible 2018-06-11 13:58:56 -06:00
Alex Chen
ff2b042c7e lib: remove the ErroringJournalParser type 2018-06-11 13:58:56 -06:00
Alex Chen
39e7ef0311 lib: refine date parser error messages 2018-06-11 13:58:55 -06:00
Alex Chen
132f8706d7 lib: edit comments to satisfy doctest 2018-06-11 13:57:30 -06:00
Alex Chen
5f87e7cd5d lib: enable the custom parse errors 2018-06-11 13:57:30 -06:00
Alex Chen
2d21ec0174 lib: weaken parser types 2018-06-11 13:57:30 -06:00