Commit Graph

725 Commits

Author SHA1 Message Date
Simon Michael
656734ccd3 doc: define general options once
Well, twice: in lib.m4 and in CliOptions.hs. But no longer in every man page.
2016-05-28 23:50:37 -07:00
Simon Michael
df07ad0109 doc: parameterise and bump docs version to 0.28 2016-05-28 23:31:44 -07:00
Simon Michael
54237a61d6 refine help commands/flags' help & docs 2016-05-28 23:29:58 -07:00
Simon Michael
bd3212654c doc: bring embedded help files up to date 2016-05-28 12:58:30 -07:00
Simon Michael
71b4a16fea doc: hide pandoc comment in html previewer 2016-05-28 12:12:52 -07:00
Simon Michael
a8f601833e doc: one less include file 2016-05-28 12:12:27 -07:00
Simon Michael
90c9735b7a lib: textification: descriptions & codes
Slightly higher (with small files) and lower (with large files) maximum
residency, and slightly quicker for all.

hledger -f data/100x100x10.journal stats
<<ghc: 42858472 bytes, 84 GCs, 193712/269608 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.015 elapsed), 0.016 MUT (0.042 elapsed), 0.011 GC (0.119 elapsed) :ghc>>
<<ghc: 42891776 bytes, 84 GCs, 190816/260920 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.004 elapsed), 0.017 MUT (0.025 elapsed), 0.010 GC (0.015 elapsed) :ghc>>

hledger -f data/1000x1000x10.journal stats
<<ghc: 349575240 bytes, 681 GCs, 1396425/4091680 avg/max bytes residency (7 samples), 11M in use, 0.000 INIT (0.000 elapsed), 0.137 MUT (0.146 elapsed), 0.050 GC (0.057 elapsed) :ghc>>
<<ghc: 349927568 bytes, 681 GCs, 1397825/4097248 avg/max bytes residency (7 samples), 11M in use, 0.000 INIT (0.000 elapsed), 0.126 MUT (0.133 elapsed), 0.050 GC (0.057 elapsed) :ghc>>

hledger -f data/10000x1000x10.journal stats
<<ghc: 3424029496 bytes, 6658 GCs, 11403141/41077288 avg/max bytes residency (11 samples), 111M in use, 0.000 INIT (0.000 elapsed), 1.278 MUT (1.310 elapsed), 0.493 GC (0.546 elapsed) :ghc>>
<<ghc: 3427418064 bytes, 6665 GCs, 11127869/37790168 avg/max bytes residency (11 samples), 109M in use, 0.000 INIT (0.001 elapsed), 1.212 MUT (1.229 elapsed), 0.466 GC (0.519 elapsed) :ghc>>

hledger -f data/100000x1000x10.journal stats
<<ghc: 34306546248 bytes, 66727 GCs, 77030638/414617944 avg/max bytes residency (14 samples), 1012M in use, 0.000 INIT (0.000 elapsed), 12.965 MUT (13.164 elapsed), 4.771 GC (5.447 elapsed) :ghc>>
<<ghc: 34340246056 bytes, 66779 GCs, 76983178/416011480 avg/max bytes residency (14 samples), 1011M in use, 0.000 INIT (0.008 elapsed), 12.666 MUT (12.836 elapsed), 4.595 GC (5.175 elapsed) :ghc>>
2016-05-24 19:00:58 -07:00
Simon Michael
770dcee742 lib: textification: comments and tags
No change.

hledger -f data/100x100x10.journal stats
<<ghc: 42859576 bytes, 84 GCs, 193781/269984 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.001 elapsed), 0.016 MUT (0.020 elapsed), 0.009 GC (0.011 elapsed) :ghc>>
<<ghc: 42859576 bytes, 84 GCs, 193781/269984 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.001 elapsed), 0.015 MUT (0.018 elapsed), 0.009 GC (0.013 elapsed) :ghc>>

hledger -f data/1000x1000x10.journal stats
<<ghc: 349576344 bytes, 681 GCs, 1407388/4091680 avg/max bytes residency (7 samples), 11M in use, 0.000 INIT (0.000 elapsed), 0.124 MUT (0.130 elapsed), 0.047 GC (0.055 elapsed) :ghc>>
<<ghc: 349576280 bytes, 681 GCs, 1407388/4091680 avg/max bytes residency (7 samples), 11M in use, 0.000 INIT (0.000 elapsed), 0.126 MUT (0.132 elapsed), 0.049 GC (0.058 elapsed) :ghc>>

hledger -f data/10000x1000x10.journal stats
<<ghc: 3424030664 bytes, 6658 GCs, 11403359/41071624 avg/max bytes residency (11 samples), 111M in use, 0.000 INIT (0.000 elapsed), 1.207 MUT (1.228 elapsed), 0.473 GC (0.528 elapsed) :ghc>>
<<ghc: 3424030760 bytes, 6658 GCs, 11403874/41077288 avg/max bytes residency (11 samples), 111M in use, 0.000 INIT (0.002 elapsed), 1.234 MUT (1.256 elapsed), 0.470 GC (0.520 elapsed) :ghc>>

hledger -f data/100000x1000x10.journal stats
<<ghc: 34306547448 bytes, 66727 GCs, 76805504/414629288 avg/max bytes residency (14 samples), 1009M in use, 0.000 INIT (0.003 elapsed), 12.615 MUT (12.813 elapsed), 4.656 GC (5.291 elapsed) :ghc>>
<<ghc: 34306547320 bytes, 66727 GCs, 76805504/414629288 avg/max bytes residency (14 samples), 1009M in use, 0.000 INIT (0.009 elapsed), 12.802 MUT (13.065 elapsed), 4.774 GC (5.441 elapsed) :ghc>>
2016-05-24 19:00:57 -07:00
Simon Michael
c89c33b36e lib: textification: parse stream
10% more allocation, but 35% lower maximum residency, and slightly quicker.

hledger -f data/100x100x10.journal stats
<<ghc: 39327768 bytes, 77 GCs, 196834/269496 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.010 elapsed), 0.020 MUT (0.092 elapsed), 0.014 GC (0.119 elapsed) :ghc>>
<<ghc: 42842136 bytes, 84 GCs, 194010/270912 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.009 elapsed), 0.016 MUT (0.029 elapsed), 0.012 GC (0.120 elapsed) :ghc>>

hledger -f data/1000x1000x10.journal stats
<<ghc: 314291440 bytes, 612 GCs, 2070776/6628048 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.000 elapsed), 0.128 MUT (0.144 elapsed), 0.059 GC (0.070 elapsed) :ghc>>
<<ghc: 349558872 bytes, 681 GCs, 1397597/4106384 avg/max bytes residency (7 samples), 11M in use, 0.000 INIT (0.004 elapsed), 0.124 MUT (0.133 elapsed), 0.047 GC (0.053 elapsed) :ghc>>

hledger -f data/10000x1000x10.journal stats
<<ghc: 3070026824 bytes, 5973 GCs, 12698030/62951784 avg/max bytes residency (10 samples), 124M in use, 0.000 INIT (0.002 elapsed), 1.268 MUT (1.354 elapsed), 0.514 GC (0.587 elapsed) :ghc>>
<<ghc: 3424013128 bytes, 6658 GCs, 11405501/41071624 avg/max bytes residency (11 samples), 111M in use, 0.000 INIT (0.001 elapsed), 1.343 MUT (1.406 elapsed), 0.511 GC (0.573 elapsed) :ghc>>

hledger -f data/100000x1000x10.journal stats
<<ghc: 30753387392 bytes, 59811 GCs, 117615462/666703600 avg/max bytes residency (14 samples), 1588M in use, 0.000 INIT (0.000 elapsed), 12.068 MUT (12.238 elapsed), 6.015 GC (7.190 elapsed) :ghc>>
<<ghc: 34306530696 bytes, 66727 GCs, 76806196/414629312 avg/max bytes residency (14 samples), 1009M in use, 0.000 INIT (0.010 elapsed), 14.357 MUT (16.370 elapsed), 5.298 GC (6.534 elapsed) :ghc>>
2016-05-24 19:00:57 -07:00
Simon Michael
102b76c17f lib: textification: commodity symbols
hledger -f data/100x100x10.journal stats
<<ghc: 39288536 bytes, 77 GCs, 196608/269560 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.001 elapsed), 0.016 MUT (0.028 elapsed), 0.009 GC (0.012 elapsed) :ghc>>
<<ghc: 39290808 bytes, 77 GCs, 196608/269560 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.003 elapsed), 0.015 MUT (0.021 elapsed), 0.009 GC (0.011 elapsed) :ghc>>

hledger -f data/1000x100x10.journal stats
<<ghc: 314268960 bytes, 612 GCs, 2143219/6826152 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.009 elapsed), 0.135 MUT (0.151 elapsed), 0.065 GC (0.178 elapsed) :ghc>>
<<ghc: 314254512 bytes, 612 GCs, 2072377/6628024 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.000 elapsed), 0.130 MUT (0.134 elapsed), 0.064 GC (0.075 elapsed) :ghc>>

hledger -f data/10000x100x10.journal stats
<<ghc: 3070016592 bytes, 5965 GCs, 13138220/64266016 avg/max bytes residency (10 samples), 128M in use, 0.000 INIT (0.000 elapsed), 1.272 MUT (1.322 elapsed), 0.527 GC (0.595 elapsed) :ghc>>
<<ghc: 3069989896 bytes, 5973 GCs, 12687877/62848920 avg/max bytes residency (10 samples), 124M in use, 0.000 INIT (0.002 elapsed), 1.295 MUT (1.324 elapsed), 0.511 GC (0.570 elapsed) :ghc>>

hledger -f data/100000x100x10.journal stats
<<ghc: 30753448072 bytes, 59763 GCs, 121502982/673169248 avg/max bytes residency (14 samples), 1640M in use, 0.000 INIT (0.007 elapsed), 12.421 MUT (12.672 elapsed), 6.240 GC (7.812 elapsed) :ghc>>
<<ghc: 30753350528 bytes, 59811 GCs, 117616668/666703600 avg/max bytes residency (14 samples), 1588M in use, 0.001 INIT (0.011 elapsed), 13.209 MUT (13.683 elapsed), 6.137 GC (7.117 elapsed) :ghc>>
2016-05-24 19:00:57 -07:00
Simon Michael
2538d14ea7 lib: textification begins! account names
The first of several conversions from String to (strict) Text, hopefully
reducing space and time usage.

This one shows a small improvement, with GHC 7.10.3 and text-1.2.2.1:

hledger -f data/100x100x10.journal stats
string: <<ghc: 39471064 bytes, 77 GCs, 198421/275048 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.001 elapsed), 0.015 MUT (0.020 elapsed), 0.010 GC (0.014 elapsed) :ghc>>
text:   <<ghc: 39268024 bytes, 77 GCs, 197018/270840 avg/max bytes residency (3 samples), 2M in use, 0.000 INIT (0.002 elapsed), 0.016 MUT (0.022 elapsed), 0.009 GC (0.011 elapsed) :ghc>>

hledger -f data/1000x100x10.journal stats
string: <<ghc: 318555920 bytes, 617 GCs, 2178997/7134472 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.001 elapsed), 0.129 MUT (0.136 elapsed), 0.067 GC (0.077 elapsed) :ghc>>
text:   <<ghc: 314248496 bytes, 612 GCs, 2074045/6617960 avg/max bytes residency (7 samples), 16M in use, 0.000 INIT (0.003 elapsed), 0.137 MUT (0.145 elapsed), 0.067 GC (0.079 elapsed) :ghc>>

hledger -f data/10000x100x10.journal stats
string: <<ghc: 3114763608 bytes, 6026 GCs, 18858950/75552024 avg/max bytes residency (11 samples), 201M in use, 0.000 INIT (0.000 elapsed), 1.331 MUT (1.372 elapsed), 0.699 GC (0.812 elapsed) :ghc>>
text:   <<ghc: 3071468920 bytes, 5968 GCs, 14120344/62951360 avg/max bytes residency (9 samples), 124M in use, 0.000 INIT (0.003 elapsed), 1.272 MUT (1.349 elapsed), 0.513 GC (0.578 elapsed) :ghc>>

hledger -f data/100000x100x10.journal stats
string: <<ghc: 31186579432 bytes, 60278 GCs, 135332581/740228992 avg/max bytes residency (13 samples), 1697M in use, 0.000 INIT (0.008 elapsed), 14.677 MUT (15.508 elapsed), 7.081 GC (8.074 elapsed) :ghc>>
text:   <<ghc: 30753427672 bytes, 59763 GCs, 117595958/666457240 avg/max bytes residency (14 samples), 1588M in use, 0.000 INIT (0.008 elapsed), 13.713 MUT (13.966 elapsed), 6.220 GC (7.108 elapsed) :ghc>>
2016-05-24 19:00:49 -07:00
Simon Michael
0f5ee154c4 lib: simplify parsers; cleanups (#275)
The journal/timeclock/timedot parsers, instead of constructing (opaque)
journal update functions which are later applied to build the journal,
now construct the journal directly (by modifying the parser state). This
is easier to understand and debug. It also removes any possibility of
the journal updates being a space leak. (They weren't, in fact memory
usage is now slightly higher, but that will be addressed in other ways.)

Also:

Journal data and journal parse info have been merged into one type (for
now), and field names are more consistent.

The ParsedJournal type alias has been added to distinguish being-parsed
and finalised journals.

Journal is now a monoid.

stats: fixed an issue with ordering of include files

journal: fixed an issue with ordering of included same-date transactions

timeclock: sessions can no longer span file boundaries (unclocked-out
sessions will be auto-closed at the end of the file).

expandPath now throws a proper IO error (and requires the IO monad).
2016-05-23 00:44:19 -07:00
Simon Michael
72bdce39b6 ui: fix a recent reload breakage (fixes #346)
Commit 0a90ef4 a few weeks ago caused hledger-ui to show wrong balances
after reloading with the g key, if the journal had changed and you had
specified a query on the command line.

Now, journalReloadIfChanged reloads the full journal without filtering,
like journalReload and withJournalDo.
2016-05-20 08:20:08 -07:00
Simon Michael
7f5e09096f lib: rename JournalContext to JournalParseState 2016-05-18 20:57:34 -07:00
Simon Michael
ea383d88d6 lib: drop "double" build flag 2016-05-18 20:32:58 -07:00
Simon Michael
20bfceff2e lib: allow multiple files of different format (#320)
When multiple files are specified with multiple -f options, we now
parse each one individually, rather than just concatenating them, so
they can have different formats.

Directives (like default year or account aliases) no longer carry over
from one file to the next. Limitation or feature ?
2016-05-18 16:41:52 -07:00
Simon Michael
e28ed0c927 stats: "journal file" -> "file" 2016-05-17 19:50:57 -07:00
Simon Michael
4dd7dba771 fix ghc pattern match warning (#323) 2016-05-17 18:42:37 -07:00
Simon Michael
59c2d73d14 doc: symlink other package docs into hledger (#343)
The hledger package tarball now contains a copy of the generated docs
from all the other packages, so that it can build without being in a
source tree.
2016-05-17 10:04:54 -07:00
Simon Michael
89b1cd1e5b doc: readme for doc directories 2016-05-17 10:03:57 -07:00
Simon Michael
f0c219adaa add missing benchmark file to cabal tarball (#342) 2016-05-17 09:04:53 -07:00
Simon Michael
207922a023 lib: Commodity now has a CommoditySymbol and style 2016-05-08 08:07:27 -07:00
Malte Brandy
913b8e4c19 Add --pivot option with tests and docs (#323) 2016-05-06 18:27:35 -07:00
Simon Michael
6cbc0ceb0d lib: note issues 2016-05-06 17:19:23 -07:00
Simon Michael
e2ce7c4802 doc, tests: clarify what --date2 does 2016-05-06 16:57:24 -07:00
Simon Michael
8dec8b2630 doc: drop commented table 2016-05-06 16:44:29 -07:00
Simon Michael
9a424d77fc lib: more thorough journal reloading
Reloading a journal should now reload all included files as well.
2016-05-02 20:07:53 -07:00
Simon Michael
f3360c8cfe lib: after reloading a journal, also refilter it (#314)
After reloading a journal due to a file change, we now also re-apply any
query specified by the options.
2016-04-28 21:47:49 -07:00
Simon Michael
7ec3ebb66b update tested-with
Note we seem to have lost GHC 7.4 compatibility. It should be fixable if
anyone cares.
2016-04-28 17:32:17 -07:00
Simon Michael
a3e975bdb8 doc: use new file-embed to fix ghci cwd dependence
See https://github.com/snoyberg/file-embed/issues/18
2016-04-21 08:45:22 -07:00
Simon Michael
91847fc6fd data-files does not support wildcards after all 2016-04-20 13:23:05 -07:00
Simon Michael
33b5c5dc94 declare generated docs as data-files, sync hpack yamls 2016-04-20 12:47:17 -07:00
Simon Michael
80948d1db7 doc: also commit info files, should fix travis 2016-04-20 12:47:17 -07:00
Simon Michael
a77f0a3835 doc: cli: link to hledger-rewrite add-on 2016-04-20 07:24:51 -07:00
Simon Michael
42c12fe631 cli, ui, web, api: --info, --man, info & man cmds 2016-04-19 19:21:29 -07:00
Simon Michael
57626dc9fb bal: output CSV item amounts on one line #336 2016-04-19 10:38:40 -07:00
Simon Michael
3d129f6d31 shake: also generate info manuals 2016-04-18 17:54:55 -07:00
Simon Michael
25e2534794 doc: update all docs mentioning -h and --help 2016-04-18 17:00:54 -07:00
Simon Michael
f9362707b6 ui, web, api: fix -h, --help 2016-04-18 16:43:51 -07:00
Simon Michael
8839136f02 cli: fix --help 2016-04-18 15:26:29 -07:00
Simon Michael
6a3a5c60c5 doc: manual cleanups
use simpler markup
use pre blocks more consistently
pandoc table experiments
no more right-floating examples, use columns if needed
doc edits
style tweaks
2016-04-17 19:28:16 -07:00
Simon Michael
82f35dddd0 doc: m4 macro for web table of contents 2016-04-16 11:00:39 -07:00
Simon Michael
4c291dc54e doc: use macros not divs to select web/man content
Use slightly clearer m4 macros instead of special divs to mark content
as web only/man only. The temporary doc/*.md files are no longer needed,
slightly more redundant work is done.
2016-04-16 10:09:51 -07:00
Simon Michael
130d259cb1 site: show version links on manuals 2016-04-16 04:44:33 -07:00
Simon Michael
6a97a246dd doc: use m4 for all manuals, shake cleanup 2016-04-16 03:50:30 -07:00
Simon Michael
e4cff6a30f tools: .ghci for each package, sets shorter prompt 2016-04-15 16:06:45 -07:00
Simon Michael
990294f53e doc: fixes for the help command's docs 2016-04-14 19:22:21 -07:00
Simon Michael
bace208e98 doc: document the help command 2016-04-14 18:38:36 -07:00
Simon Michael
b7d2d612a8 hledger: embed main man pages; new help command 2016-04-14 18:38:12 -07:00
Simon Michael
2931bd6085 doc: update some docs mentioning --help 2016-04-13 22:47:02 -07:00
Simon Michael
b73bcda52a include txt man pages in cabal tarballs 2016-04-13 22:38:53 -07:00
Simon Michael
48f89314d5 hledger: long --help flag shows man page
hledger now embeds its man page, and will display it on --help (like
Ledger and git). -h and --help are now different, like git.
2016-04-13 22:32:04 -07:00
Simon Michael
bfa5e14373 doc: generate (and commit) text-rendred man pages
Intended for embedding in executables. Quick implementation,
hopefully these are fixed-width and compatible with all terminals.
2016-04-13 22:29:16 -07:00
Simon Michael
588f36d662 rename timelog format to timeclock 2016-04-12 21:13:19 -07:00
Simon Michael
8ee0c7fa76 doc: update man pages 2016-04-12 20:31:17 -07:00
Simon Michael
aecbcf9461 doc: merge last bits of old manual into new one 2016-04-12 20:22:40 -07:00
Simon Michael
b4d491791c doc: include nroff man pages in cabal tarballs 2016-04-12 11:25:46 -07:00
Simon Michael
b69b149d39 doc: hledger: add more content from old manual 2016-04-10 12:13:38 -07:00
Simon Michael
5754f2bb4a doc: updates, merge some more from old manual 2016-04-09 14:23:55 -07:00
Simon Michael
e4aaa302ce doc: use m4 just to assemble main hledger man page
I was about to drop the m4 experiment, but.. not yet. I want to split up
the big man pages into chunks that are easier to deal with, so now using
m4 for that (only. Pandoc is taking care of selective content stripping
and other rendering adjustments.)

I've switched the suffix of m4-enabled files from .md.m4 to .m4.md -
less correct but activates more useful editor highlighting.
2016-04-09 13:30:21 -07:00
Simon Michael
5d9d155ca0 doc: misc cleanups 2016-04-07 21:59:30 -07:00
Simon Michael
69542160bb doc: remove colons from man page headings 2016-04-07 08:55:53 -07:00
Simon Michael
443b870481 site: fix man page TOCs, add combined man page 2016-04-07 08:55:21 -07:00
Simon Michael
bba7909165 doc: m4-based man pages pt 2, missing files 2016-04-06 09:03:01 -07:00
Simon Michael
f3fb1a89f2 doc: exclude web content from nroffs 2016-04-06 08:20:27 -07:00
Simon Michael
24c2e7d471 doc: move man page source and nroff to PKG/doc/ 2016-04-06 08:16:38 -07:00
Simon Michael
eab6b110bc tools: simplify doc filtering class names 2016-04-05 16:17:08 -07:00
Simon Michael
31a754544a journal: parse account directives
We now parse account directives, like Ledger's. We don't do anything
with them yet. The default parent account feature must now be spelled
"apply account"/"end apply account".
2016-04-04 11:35:39 -07:00
Simon Michael
25cd65442a cli: fix opts parsing regressions from feb
Since commit 7aab544, "-f -" before the command broke command
detection, causing spurious "no such option" errors (and breaking
about 70 functional tests which neither I nor travis noticed).
2016-04-04 11:35:39 -07:00
Simon Michael
2dbe07a666 doc: mark up man pages for man/web rendering
And commit the latest nroff output. It'll need retesting.
2016-02-21 02:32:40 -08:00
Simon Michael
494c74f81b tools: hide package.yaml files to fix travis
The latest stack runs a buggy hpack that generates invalid
cabal files. Rename them to future-package.yaml for now.
2016-02-20 19:07:49 -08:00
Simon Michael
7aab544cf6 cli: make argument-less --debug more robust 2016-02-19 22:53:25 -08:00
Simon Michael
01abf4a56d typo 2016-02-19 17:52:40 -08:00
Simon Michael
82404952ed doc: manual: mention LEDGER_FILE env var gotcha 2016-02-05 18:06:49 -08:00
Simon Michael
96e1ca7ea1 lib: refactor amount canonicalisation
Amount display style canonicalisation code and terminology has been
clarified a bit. Individual amounts still have styles; from these we
derive the standard "commodity styles". In user docs, we might call
these "commodity formats" since a Ledger-compatible commodity directive
would use the "format" keyword.
2015-11-24 01:40:10 -08:00
Simon Michael
4ed27d5d25 doc: add release date to changelogs 2015-10-30 14:09:19 -07:00
Simon Michael
a5fd56223c bump version to 0.27 2015-10-30 13:21:51 -07:00
Simon Michael
36d97a2e50 update cabal docs and other fields 2015-10-30 13:08:03 -07:00
Simon Michael
2feace32dd lib: number transactions as they are read
And allow looking up transactions by their read order (index),
or the previous/next transactions in the sequence.
2015-10-29 20:12:46 -07:00
Simon Michael
60df129c7b doc: changelog updates, combined release notes 2015-10-26 06:37:33 -07:00
Simon Michael
6ae14b3f56 doc: update changelogs 2015-10-26 06:09:57 -07:00
Simon Michael
191c2e533f doc: generate man pages for each package (#282)
There are now six man pages, one for each main executable and file
format, generated from markdown by the mighty pandoc. They are basically
the content of the user manual, split up and moved into the appropriate
package directory.  I've also committed the generated man files.

The man pages' markdown source (hledger/hledger.1.md,
hledger-lib/hledger_journal.5.md etc.) are now the master documentation
files. The plan is to concatenate them (with a little munging) to form
the all-in-one user manual for the website, at release time.  This also
separates the hledger.org user manual from the latest doc commits, which
should simplify website management.
2015-10-20 06:26:09 -07:00
Simon Michael
b64f42c2d8 bal, ui: option help tweaks 2015-10-17 11:22:39 -07:00
Simon Michael
7b8c992f5a register: auto-size amount columns, like hledger-ui 2015-10-10 18:20:40 -07:00
Simon Michael
aee8d2144b add file to package, really fix build error (#286) 2015-10-01 08:46:55 -10:00
Simon Michael
deea422dc1 fix build error (#242) 2015-09-29 21:16:51 -10:00
Simon Michael
58b98faf36 balance: wide-char-aware multicolumn reports (#242) 2015-09-29 20:54:05 -10:00
Simon Michael
42e2da4bb6 balance, print; more wide char support (#242)
Simple (non-multicolumn) balance reports containing wide characters
should now align correctly (in apps and fonts that show wide chars as
double width). Likewise, the print command.
2015-09-28 18:33:18 -10:00
Simon Michael
5b5e5eeaf4 register: wide-character-aware layout (#242)
Wide characters, eg chinese/japanese/korean characters, are typically
rendered wider than latin characters. In some applications (eg gnome
terminal or osx terminal) and fonts (eg monaco) they are exactly double
width. This is a start at making hledger aware of this. A register
report containing wide characters (in descriptions, account names, or
commodity symbols) should now align its columns correctly, when viewed
with a suitable font and application.
2015-09-28 16:12:20 -10:00
Simon Michael
5404eab6c0 add: write all amounts, don't lose price info (#283) 2015-09-27 10:24:21 -10:00
Simon Michael
dab12e2d10 add: note another algorithm 2015-08-28 17:57:16 -07:00
Simon Michael
9e9aec957f print: --match shows the best match for a description
This was originally an add-on I used to guess account names for
ledger-autosync. It's nice for quickly looking up a recent transaction
with a guessed or partial description.
2015-08-28 15:10:51 -07:00
Simon Michael
a73c455570 add: fix a bug impairing similar txn matching
In some cases (when the same letter pair was repeated) it was not
picking the post similar past transaction. This was due to the
similarity algorithm using the order-dependent Data.List.intersect, when
it should use Set.intersection.

Also added a reference for the algorithm, which is known as the
Sørensen–Dice coefficient.
2015-08-28 13:54:51 -07:00
Simon Michael
74512814ec cli/ui/web: rename X.Options modules to X.XOptions
Make these modules' names more like the heavily-used types they
define (CliOpts, UIOpts, WebOpts). This is consistent with
RawOptions and ReportOptions, and helps with code navigation.
2015-08-28 12:43:51 -07:00
Simon Michael
f3dd5eb830 fix options breakage with GHC < 7.10 2015-08-28 11:17:49 -07:00
Simon Michael
2af8d7598e cli, web: fix options breakage 2015-08-28 10:49:43 -07:00
Simon Michael
4dd1e9c725 clean up options validation a little 2015-08-28 09:57:01 -07:00
Simon Michael
19c3749b50 balance: move -V helpers to the *Report modules 2015-08-26 10:38:45 -07:00
Simon Michael
e7aa150e52 ui: solidified register screen, added themes
- register screen:
  - smarter width-sensitive layout, with multi-commodity amounts on one line
  - items are sorted in date order
  - jumps to the latest item by default, with consistent scroll position
  - more prerendering, might speed up movement/paging slightly

- themes! --theme to select, --help to list (current themes: default, terminal, greenterm)

- border tweaks - dropped side borders, added side padding
2015-08-24 16:24:11 -07:00
Simon Michael
49e1840a0f ui: rewrite the ui using brick
hledger-ui (formerly hledger-vty) is now built on brick, a new
declarative UI layer built on vty. This brings much new power, and
should make the UI much easier to grow and maintain.

At this point, functionality and performance are similar to the old
version. There's no journal entries screen, but entering the postings
screen jumps to the latest posting, and layout is better (multiple
commodities are rendered on one line).

Requires unreleased brick from github (HEAD or some branch) for now.
2015-08-24 16:24:11 -07:00
Simon Michael
6fd1e965ed fix cabal file regression breaking GHC<7.10 (#280) 2015-08-21 12:19:43 -07:00
Simon Michael
a1e098c292 balance: re-enable a balance unit test 2015-08-19 20:53:51 -07:00
Simon Michael
cc98ee39f7 balance, lib: --format/StringFormat improvements
The balance command's --format option (in single-column mode) can now
adjust the rendering of multi-line strings, such as amounts with multiple
commodities. To control this, begin the format string with one of:

 %_  - renders on multiple lines, bottom-aligned (the default)
 %^  - renders on multiple lines, top-aligned
 %,  - render on one line, comma-separated

Also the final total (and the line above it) now adapt themselves to a
custom format.
2015-08-19 20:53:51 -07:00
Simon Michael
69c870c6f0 balance, lib: make StringFormat singular; cleanup
Pass around a StringFormat rather than [StringFormat].
Also more balance report item rendering refactoring.
2015-08-19 20:53:50 -07:00
Simon Michael
36dd64cf02 balance, lib: clarify --format implementation
The --format option's OutputFormat type was named confusingly like the
--output-format option.  It has been renamed StringFormat to distinguish
it from StorageFormat (aka the data file format, referenced by
--output-format). Related code and types have been consolidated.
Also the (single-column) balance report's item rendering has had
some cleanup.
2015-08-19 20:53:49 -07:00
Simon Michael
e485962a70 cli, web: obey the threaded flag again
[ci skip]
2015-08-13 11:55:58 -07:00
Simon Michael
3932655bde lib: expose two functions required by hledger-ui 2015-08-13 11:53:28 -07:00
Simon Michael
fcb7d297c8 use canonical bugs.hledger.org url in cabal yamls 2015-08-13 10:02:06 -07:00
Simon Michael
48e31d4f8c bump version to 0.26.98 2015-08-12 22:49:04 -07:00
Simon Michael
a9b2e5409c switch to hpack-generated cabal files
The hledger-lib, hledger and hledger-web cabal files are now generated
from the package.yaml files with hpack, plus some manual fixups.
2015-08-12 22:45:08 -07:00
Simon Michael
b91f2b85d0 update hpack package.yaml files 2015-08-12 09:25:28 -07:00
Simon Michael
94094252be rename historical prices to market prices
Simpler and clearer. We now have "transaction prices" (recorded as part
of transaction amounts) and "market prices" (recorded with P
directives). Both are matters of historical record, also this avoids
confusion with the balance command's "historical balances".
2015-08-09 16:20:02 -07:00
Simon Michael
49be1f646e balance: add -V/--value to show as market value
Initial support of market value reporting and currency conversion,
similar in spirit to Ledger's.  The balance command now has a -V/--value
flag that converts all the reported amounts using their "default market
price". That is the latest market price (P directive, formerly called
"historical prices") found in the journal for their commodity that is on
or before the report end date.

Unlike Ledger, hledger's -V only uses the market prices recorded with P
directives, ignoring transaction prices recorded as part of posting
amounts (which -B/--cost uses). Using -B and -V together is allowed.
2015-08-09 16:03:16 -07:00
Simon Michael
9da0ab6af9 doc: give hledger a README on hackage (via symlink) 2015-07-21 12:23:31 -07:00
Simon Michael
78018cc24d tools: yaml definitions for the hledger cabal files
Here are hpack package.yaml files for the other hledger cabal files.
These remove a lot of human-error-prone duplication.
They are not used yet as hpack isn't quite mature enough -
when it supports flags and benchmarks we will probably switch.
2015-07-14 17:32:49 -07:00
Simon Michael
087f3a49bc note older tested-with versions based on hackage builder 2015-07-13 20:23:59 -07:00
Simon Michael
0b2ccdd298 0.26 changelogs/release notes 2015-07-12 17:58:02 -07:00
Simon Michael
3d3c374cc6 update tested-with 2015-07-12 17:36:19 -07:00
Simon Michael
90ae65eda9 cherry pick 0.25.1 changelogs 2015-07-12 15:48:21 -07:00
Simon Michael
e5c0d75117 bump version to 0.26 2015-07-12 15:29:10 -07:00
Simon Michael
2b3bdca6b1 cli: drop shakespeare-text dependency in more places
Drop deprecated shakespeare-text dependency for ghc 7.10+ consistently,
not just in one place. Hopefully this will clear the warning
at packdeps.haskellers.com.
2015-07-12 14:58:06 -07:00
Simon Michael
4c6979c3fc register: comment 2015-06-27 06:40:43 -07:00
Simon Michael
f9f0f16a9c tools: benchmark cleanup 2015-06-27 06:35:00 -07:00
Simon Michael
89513fc256 stats: support -o/--outputfile, useful for benchmarks 2015-06-25 16:31:57 -07:00
Simon Michael
01db48fcfc cli: a more robust and featureful bench test
The bench script invoked by cabal bench or stack bench now links the
benchmarked code directly, avoiding any dependence on the shell and
$PATH. Also, it reports the journal parse time and the various reports
on the parsed data separately, and runs quicker.

You can get more accurate benchmark times by running with --criterion.
This will usually give much the same numbers and takes much longer.

Benchmarking via simplebench is still available, by running with
--simplebench. In this mode it benchmarks whatever commands are
configured in bench/default.bench. A disadvantage is that it uses the
first "hledger" executable in $PATH, so check which one it reports.
2015-06-25 16:08:27 -07:00
Simon Michael
e516aa6c3c stats: fix O(n^2) performance, now much faster on large journals 2015-06-19 11:07:35 -07:00
Simon Michael
745f2dd788 cli: a cabal bench test that works 2015-06-18 09:49:51 -07:00
Simon Michael
335deec496 cli: cabal test suite cleanup 2015-06-18 09:48:18 -07:00
Simon Michael
049baed4d8 register: fix a runtime error with amountless postings 2015-06-11 10:16:45 -07:00
Simon Michael
ce5d87177a update journalFilePathFromOpts haddock 2015-06-04 09:43:15 -07:00
Imuli
49f1744ae5 read multiple files: internals 2015-05-28 10:40:48 -07:00
Imuli
8385da205e read multiple files: options 2015-05-28 10:40:48 -07:00
Simon Michael
20acc45fbb activity: don't exclude 0-amount postings by default 2015-05-21 16:38:17 -07:00
Simon Michael
9e2111106b drop regexpr dependency 2015-05-17 08:32:45 -07:00
Simon Michael
d1f63334ee handle pending status correctly, add --pending (#250)
A transaction/posting status of ! (pending) was effectively equivalent
to * (cleared). Now it's a separate state, not matched by --cleared.
The new Ledger-compatible --pending flag matches it, and so does
--uncleared. The equivalent search queries are now status:*, status:!
and status: (the old status:1 and status:0 spellings are deprecated).

Since we interpret --uncleared and status: as "any state except cleared",
it's not currently possible to match things which are neither cleared
nor pending.
2015-05-16 11:51:35 -07:00
Simon Michael
934d217523 changelogs 2015-05-14 13:39:54 -07:00
Simon Michael
077e3c6a02 journal: re-add non-regex aliases, as default (#252)
The regex account aliases added in 0.24 trip up people switching between
hledger and Ledger. (Also they are currently slow).

This change makes the old non-regex aliases the default; they are
unsurprising, useful, and pretty close in functionality to Ledger's.

The new regex aliases are also available; they must be enclosed in
forward slashes. Ledger effectively ignores these, which is ok.

Also clarify docs, refactor, and use the same parser for alias
directives and alias options
2015-05-14 13:01:50 -07:00
Simon Michael
70d87613f2 some cleanup of debug trace helpers 2015-05-14 13:01:49 -07:00
Simon Michael
61423bdad4 consistently require latest base-compat for sanity 2015-04-29 07:16:08 -07:00
Simon Michael
104cb44d04 fix missing Control.Applicative.Compat (#245) 2015-04-29 07:10:55 -07:00
Simon Michael
dac8a784f4 bump version to 0.26 alpha 2015-04-28 13:48:23 -07:00
Simon Michael
1bc9b71f28 bump version to 0.25 2015-04-28 13:42:41 -07:00
Simon Michael
735f818c22 changelogs 2015-04-07 17:14:44 -07:00
Simon Michael
f75849cdd6 fix ghc 7.10 Applicative import warnings (#239)
Still needed CPP, despite using base-compat.
2015-03-29 16:09:41 -07:00
Simon Michael
592d997438 whitespace 2015-03-29 16:03:23 -07:00
Simon Michael
b52f08603b avoid a shakespeare/ghc-7.10 build failure (#239) 2015-03-29 14:20:33 -07:00
Simon Michael
8e50395b7c ErrorT -> ExceptT, handle mtl <2.2.1 && >=2.2.1 (#239) 2015-03-29 14:16:42 -07:00
Simon Michael
b8b730226f hledger/hledger-lib: update tested-with
Add 7.10 and drop 7.2-7.6 which haven't been tested recently (but should
still work)
2015-03-27 15:44:39 -07:00
Simon Michael
e60eb71467 adapt to GHC-7.10's time-1.5 (#239) 2015-03-27 15:42:32 -07:00
Simon Michael
b8974c4bcc register: update --width help 2015-03-27 08:02:37 -07:00