Commit Graph

12004 Commits

Author SHA1 Message Date
Simon Michael
96db4a1b97 ;tools:bake lastweek: time percentage report 2023-11-10 16:30:30 -08:00
Simon Michael
fa40077ebf ;doc: regular expressions: add examples (hledger_site#224) 2023-11-09 12:04:33 -08:00
Simon Michael
c8484b5792 ;doc: More valuation examples: drop obsolete explanation (precisiongeddon) 2023-11-09 06:19:57 -08:00
Simon Michael
f4de65ab48 doc:code: add Jargon section; describe styling/precision in detail (precisiongeddon) 2023-11-08 13:59:18 -08:00
Simon Michael
f2320bf57c ;doc: move Hledger.hs haddock to a named chunk below code 2023-11-08 13:59:18 -08:00
Simon Michael
8a2a9643de ;tools: bake jargon - extract Hledger.hs haddock examples to a test journal 2023-11-08 13:59:18 -08:00
Simon Michael
96f52ee00c ;tools: make haddock-watch etc.: new fast version, cleanups 2023-11-08 13:59:18 -08:00
Simon Michael
1ae59ad0af dev: Amount: cleanups 2023-11-08 13:59:18 -08:00
Simon Michael
e035730afb imp: roi: limit large decimals to 8 digits by default (precisiongeddon)
With valuation now preserving more decimal digits, roi could show
excessively precise decimals if there was no known display precision
for the valuation commodity. Now in that situation it limits the
precision to a maximum of 8 digits.
2023-11-08 13:59:18 -08:00
Simon Michael
f8ffd9cdda imp: more precision handling fixes, debug output, test updates (precisiongeddon)
This and the preceding commits were "work in progress" that got out of control.
There's more to do, but this one brings these precision-related improvements
(at least):

When "infinite decimals" arise, they are now generally shown with
8 decimal digits rather than 255.

print and prices no longer add trailing decimal zeros unnecessarily.

Some code has been refactored or given more debug output.

All tests have been updated to match the recent changes.
2023-11-08 13:59:18 -08:00
Simon Michael
c51d883162 imp: prices: clarify, fixes, improve semantics (precisiongeddon)
- The prices comand now more accurately lists the prices that hledger
  uses when calculating value reports (similar to what you'd see with
  eg `hledger bal -V --debug=2`).

- The prices command's --infer-reverse-prices flag was confusing since
  we always infer and use reverse prices; it has been renamed to --show-reverse.

- --infer-market-prices and --show-reverse combine properly.

- --show-reverse now ignores all zero prices rather than giving an error.

- Reverse prices (which can be infinite decimals) are now displayed
  with at most 8 decimal digits (rather than the internal precision of
  255 digits).

- Filtering prices by cur: or amt: now works properly.

- Price amounts are styled, but all decimal digits are shown.
2023-11-08 13:59:18 -08:00
Simon Michael
50dc7bebb1 imp: set display style, natural precision on valued amounts (fix #2105, precisiongeddon)
Cost/value conversion now applies the standard display style, and
sets the display precision equal to the internal decimal precision
(or 8 if the decimal appears to be infinite).
This means value reports and especially `print -V` now show amounts
with more accurate and standard style and precision.

New tests have been added describing and explaining various
style/precision behaviours in print cost/value reports.
2023-11-08 13:59:18 -08:00
Simon Michael
64ffdd7c9c dev: clarify some amount operations 2023-11-08 13:59:18 -08:00
Simon Michael
d435557979 lib: Hledger.Utils.Debug: lbl_ helper, cleanups, notes 2023-11-08 13:50:33 -08:00
Simon Michael
b1dc550c35 ;tools:bake dbgstrs 2023-11-08 13:50:33 -08:00
Simon Michael
6e54de12b2 ;tools:ghci :rmain 2023-11-08 13:50:33 -08:00
Simon Michael
a4d3573d29 ;dev: valuation.test: cleanup 2023-11-08 13:50:33 -08:00
Jonathan Dowland
d424966706 ;doc: import: document Match Groups
Add a description of Match Groups to the manual; Section "Matchers".
Include two examples.

Clarify a description of regular expression features with respect
to match groups.

Expand the description of field assignments to cover match group
interpolation, cross-referencing to Section "Matchers" for the full
description.

Signed-off-by: Jonathan Dowland <jon@dow.land>
2023-11-08 13:49:39 -08:00
Jonathan Dowland
aaf50c165c test: import: functional tests for match group interpolation
Add functional tests for matching substrings in field matchers and
interpolating them into the corresponding field assignments. Check
the following properties and use-cases:

 * Use-case 1: matching a portion of a date in a known format
   (YYY-MM-DD) and writing a comment-command to warp a posting date.
   Useful for credit cards.
 * Use-case 2: match a portion of a CSV field and use it as an
   account assignment. Useful for my byzantine setup with two
   separate ledgers cross-importing to each other.
 * Ensure bracketed portions of field matchers are captured.
 * Ensure bracketed portions of record matchers are captured.
 * Check match token numerical offset is relative to match group,
   not the whole rules file.
 * Check nested matches work.
 * Ensure match group token expansion works with or without
   surrounding text.

Signed-off-by: Jonathan Dowland <jon@dow.land>
2023-11-08 13:49:39 -08:00
Jonathan Dowland
8bfa382c68 feat: import: interpolate regex matches in field templates (#2009)
Replace occurrences of '\N' (where N is a positive number) in field
templates with the corresponding regular expression match group, if it
exists.

E.g. Warp the date to the first of the month for the second posting

    if %date (....-..)-..
        comment2 date:\1-01

E.g. Strip a prefix from an imported account name

    if %account1 liabilities:jon:(.*)
        account1 \1

Fixes #2009.

Signed-off-by: Jonathan Dowland <jon@dow.land>
2023-11-08 13:49:39 -08:00
Jonathan Dowland
549c47bca8 ;dev: add Utils.Regex.regexMatchTextGroups
A matcher function which returns the list of match-groups, which may
be empty.

Signed-off-by: Jonathan Dowland <jon@dow.land>
2023-11-08 13:49:39 -08:00
Jonathan Dowland
c619e387ea ;fix: import: minor typo 2023-11-08 13:49:39 -08:00
Simon Michael
23c961f4bb ;doc: Setting LEDGER_FILE: fix a quote (hledger_site#93) 2023-11-07 16:19:21 -08:00
Simon Michael
250d98df29 cabal: update cabal files 2023-11-07 09:25:29 -08:00
Simon Michael
fef3413c51 pkg:web: clean up some apparently redundant declarations and deps 2023-11-07 09:06:58 -08:00
Simon Michael
4813e3fc5f pkg:ui: fix wasteful double-building of hledger-ui modules 2023-11-07 09:06:56 -08:00
Simon Michael
96117ae514 ci: do haddock testing less often, in the mac binaries workflow
It costs 1m+, doesn't fail that often, and is not hard to fix even if
detected late.
2023-11-07 05:27:18 -08:00
Simon Michael
617e35ec57 ci: really fix some redundant building of hledger-lib and hledger 2023-11-07 04:59:53 -08:00
Simon Michael
1eee7f0208 ci: fix some redundant building of hledger-lib and hledger 2023-11-07 04:47:04 -08:00
Simon Michael
54b4c2ed22 fix: auto postings: detect redundant costs properly (fix #2110) 2023-11-07 04:38:39 -08:00
Peter Sagerson
efcea0600a feat: cli: Add tsv output (#869)
All commands that suport csv output now also support tsv output. The
data is identical, but the fields are separated by tab characters and
there is no quoting or escaping. Tab, carriage return, and newline
characters in data are converted to spaces (this should rarely if ever
happen in practice).
2023-11-06 16:46:04 -08:00
Simon Michael
dae7b352dd ;ci: disable weekly scheduled builds
They also run in forks, which I don't want.
2023-11-06 10:13:57 -08:00
Simon Michael
66cb349998 ci: fix tests breakage 2023-11-05 01:02:13 -07:00
Simon Michael
b19a9ff56d ;doc:tests:readme 2023-11-01 06:53:25 +00:00
Simon Michael
876bdacf5d ;tools:make:etags: include .test files 2023-11-01 06:53:25 +00:00
Simon Michael
abc99d8dca ;dev: tests: ledger-compat tests cleanup 2023-10-29 00:16:47 +01:00
Simon Michael
65efc8b87f ;dev: tests: add outshine headings for more readability (in emacs) 2023-10-29 00:16:47 +01:00
Simon Michael
48732e6655 ;doc: TESTS name/link 2023-10-28 17:27:45 +01:00
Simon Michael
da2f021654 ;tools:bake:lastweek: improvements 2023-10-28 16:46:39 +01:00
Simon Michael
2ba321885d dev:web: refactor permission checking 2023-10-25 12:51:08 +01:00
Simon Michael
24ce9b5be1 ;bin:report1: cleanups 2023-10-24 13:38:08 +01:00
Simon Michael
efc87d9c0d ;web:sandstorm: bump app version, tweak title 2023-10-24 13:38:08 +01:00
Simon Michael
e40c82c153 ;cabal: update cabal files 2023-10-24 13:37:36 +01:00
Simon Michael
795dbd97f8 imp:web: cleanups; use --allow on Sandstorm (#834) 2023-10-24 13:37:36 +01:00
Simon Michael
95d33f20f6 imp:web: access control UX cleanups (fix #834)
Changes:

1. rename the sandstorm "manage" permission to "edit"
(old permission names: view, add, manage;
 new permission names: view, add, edit).

Rationale: "edit" best describes this permission's current powers, to users and to operators.
If we ever added more manager-type features we'd want that to be a new permission,
not a rename of the existing one (which would change the powers of existing users).

2. rename the sandstorm roles for consistency with permissions
(old role names: viewer, editor, manager;
 new role names: viewer, adder, editor)

Rationale: it's needed to avoid confusion.

3. add a new option: --allow=view|add|edit|sandstorm (default: add).
'sandstorm' sets permissions according to the X-Sandstorm-Permissions header.
Drop the --capabilities and --capabilities-header options.

Rationale: it's simpler and more intuitive.

4. replace "capability" with "permission" in ui/docs/code.

Rationale: consistent with the above, more familiar.
2023-10-24 13:37:36 +01:00
Simon Michael
c195e35572 ;bin:report1: cleanups 2023-10-23 19:29:32 +01:00
Simon Michael
15e76488e3 ;bin: link hledger-report1 scripts 2023-10-23 19:13:52 +01:00
Simon Michael
33cef6f494 ;imp:Hledger.Cli.Script: don't export main, do export CompoundBalanceCommand 2023-10-23 19:09:19 +01:00
Simon Michael
da774bd708 ;bin: hledger-report1: a custom compound report in haskell and bash 2023-10-23 19:07:52 +01:00
Simon Michael
31ecc9f4f2 imp:demo: improve error message when asciinema fails 2023-10-23 14:21:20 +01:00