Stephen Morgan
7182fa4746
lib: Improve documentation for amountRoundedQuantity, fix a typo.
2020-08-30 23:01:04 +10:00
Stephen Morgan
f6fa76bba7
lib,cli: Get rid of magic values for asprecision, use a sum type instead.
2020-08-30 23:00:35 +10:00
Stephen Morgan
ee1ef9606b
lib: Fail when parsing number with more than 255 decimal places.
2020-08-30 22:30:24 +10:00
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
Stephen Morgan
702c958487
lib: Replace some utility functions with library functions.
2020-03-02 12:45:30 -08:00
Simon Michael
374be00223
;lib: fix org headings and doctest setup that were breaking haddock
...
(and in some cases, installation).
[ci skip]
2020-03-01 22:00:39 -08:00
Simon Michael
07258d727f
;timedot: parsing fixes; allow blank lines/comments within days
2020-03-01 14:06:29 -08:00
Simon Michael
b9954bff60
journal, lib: the include directive no longer guesses the format
...
The include directive now tries just one reader, based on the file
extension and defaulting to journal, like the rest of hledger.
(It doesn't yet handle a reader prefix.)
Reader-finding utilities have moved from Hledger.Read to
Hledger.Read.JournalReader so the include directive can use them.
Reader changes:
- rExperimental flag removed
- old rParser renamed to rReadFn
- new rParser field provides the actual parser.
This seems to require making Reader a higher-kinded type, unfortunately.
2020-03-01 14:06:29 -08:00
Simon Michael
32eb839eac
timedot: rewrite the parser, making it more usable
...
Now, org headlines before the first day entry are ignored,
regardless of content.
Note, blank lines inside a day entry are not allowed, currently.
It's now easier to be both valid journal and valid timedot at the same
time, so guessing the format of stdin is unreliable, and some tests
are failing. See following commit.
2020-03-01 14:06:29 -08:00
Simon Michael
26c19c65b0
timedot: allow a note after the date, use as transaction descriptions
2020-03-01 14:06:29 -08:00
Simon Michael
190233b576
timedot: more org support: dates/entries can be org headlines
...
Org headline prefixes (stars and space at beginning of line) are ignored.
2020-03-01 14:06:29 -08:00
Simon Michael
50f8539911
;lib: comments
...
[ci skip]
2020-03-01 14:06:29 -08:00
Simon Michael
3dce879731
;timedot: fix accidentally committed debug output breaking CI
2020-02-29 11:39:16 -08:00
Simon Michael
2c8a6e988f
lib: Hledger.Read.CsvReader cleanup
...
Exports added: CsvRecord, CsvValue, csvFileFor
Exports removed: expandIncludes, parseAndValidateCsvRules, transactionFromCsvRecord
2020-02-27 23:37:32 -08:00
Simon Michael
5365fde3bc
;lib: Hledger.Read.TimeclockReader cleanup
2020-02-27 22:51:27 -08:00
Simon Michael
1bb33be54d
;lib: Hledger.Read.TimedotReader cleanup
2020-02-27 22:49:53 -08:00
Simon Michael
af67c327ff
;lib: Hledger.Read.JournalReader cleanup
2020-02-27 22:44:35 -08:00
Simon Michael
2e5afd0a9f
;lib: Hledger.Read.Common cleanup
2020-02-27 22:44:27 -08:00
Simon Michael
8535939f33
;timedot: update parser tracing
2020-02-27 18:11:07 -08:00
Simon Michael
bc4ea83d86
;csv: refactor transactionFromCsvRecord
2020-02-27 12:58:30 -08:00
Simon Michael
2dd6e2d797
;csv: refactor transactionFromCsvRecord
2020-02-27 12:09:39 -08:00
Simon Michael
b18f71a81b
;csv: extract mkPosting! and refactor
2020-02-27 11:51:11 -08:00
Simon Michael
f2767477ab
;csv: refactor transactionFromCsvRecord, extract those helpers
2020-02-27 11:19:37 -08:00
Simon Michael
6f08eed719
;csv: refactor transactionFromCsvRecord, note forgotten rule
...
Clarify some helpers. Also note the forgotten default-accountN rule.
2020-02-27 11:03:58 -08:00
Simon Michael
5a2f28f3ac
;csv: refactor transactionFromCsvRecord
...
[ci skip]
2020-02-27 01:23:28 -08:00
Simon Michael
a87baf4b29
;csv: refactor: rename JournalFieldName -> HledgerFieldName
2020-02-27 01:00:35 -08:00
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
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
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
Jakob Schöttl
50acfc9119
Fix documentation, make ISO date format standard in some places
2020-02-09 07:26:54 -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
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
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