doc: faq: update the ledger answer, capitalise Ledger
This commit is contained in:
parent
95ced2da80
commit
eb1a1e5fc3
@ -2,73 +2,74 @@
|
|||||||
|
|
||||||
# Frequently asked questions
|
# Frequently asked questions
|
||||||
|
|
||||||
## hledger and ledger
|
## hledger and Ledger
|
||||||
|
|
||||||
### How does hledger relate to ledger ?
|
### How does hledger relate to Ledger ?
|
||||||
|
|
||||||
hledger was inspired by and is partly a clone of John Wiegley's [ledger](http://ledger-cli.org),
|
hledger was inspired by John Wiegley's
|
||||||
specifically Ledger 3.
|
[Ledger](http://ledger-cli.org). It is a friendly, mostly compatible
|
||||||
|
rewrite of Ledger in Haskell, begun in 2007 (Ledger started in 2003),
|
||||||
|
focussing on robustness, usability, ease of development, long-term
|
||||||
|
maintainability, and new experiments such as the
|
||||||
|
[web interface](manual.html#web). It currently lacks some of Ledger's
|
||||||
|
power-user features and speed. hledger stays compatible with Ledger
|
||||||
|
wherever possible, so that with a little care you can use both tools
|
||||||
|
on the same data files.
|
||||||
|
|
||||||
I was a happy ledger user and contributor for some time; I still use it
|
Longer answer: I was a happy Ledger user and contributor for some
|
||||||
occasionally. I wrote hledger because I wanted to develop financial tools
|
time, then became too dissatisfied with bugs, missing/wrong
|
||||||
in the Haskell programming language and ecosystem, whose advantages I
|
documentation and a long period of stagnation. I also wanted to try
|
||||||
believe are compelling. I have also tried to make hledger a little more
|
implementing Ledger's brilliant design in the Haskell programming
|
||||||
simple, usable, installable, documented, appealing to collaborators, and
|
language and ecosystem, which I believe has compelling advantages. I
|
||||||
to provide alternate user interfaces to make it more widely useful.
|
try to build on Ledger's experience to make hledger easier to learn
|
||||||
|
and use, better documented, more appealing to work on; and to provide
|
||||||
|
alternate user interfaces (interactive, curses, web) to make it useful
|
||||||
|
to more people.
|
||||||
|
|
||||||
ledger has more advanced power-user features on the command-line
|
hledger builds quickly and has a complete and accurate manual, an
|
||||||
(periodic and modifier transactions, budgets, capital gains tracking,
|
easier report query syntax, a data entry assistant, an optional web
|
||||||
value expressions, custom output formats, etc.) and it remains faster
|
interface (which often works on Ledger files too), and multi-column
|
||||||
and more memory efficient (for now!)...
|
balance reports. Ledger has additional power-user features (capital
|
||||||
|
gains tracking, periodic and modifier transactions, budget reports,
|
||||||
|
custom value expressions..) and it remains faster and more memory
|
||||||
|
efficient (for now!).
|
||||||
|
|
||||||
hledger builds faster and has an up-to-date manual and an optional web
|
The two projects collaborate freely. For some time we shared the
|
||||||
interface (which often works on ledger files too)...
|
[#ledger](irc://irc.freenode.net/#ledger) IRC channel; in 2014 I added
|
||||||
|
a dedicated [#hledger](irc://irc.freenode.net/#hledger) channel.
|
||||||
|
I give back to Ledger by providing infrastructure
|
||||||
|
([ledger-cli.org](http://ledger-cli.org)), IRC support, [LedgerTips](http://twitter.com/LedgerTips) etc.
|
||||||
|
|
||||||
The two projects collaborate freely. We share the
|
### And Ledger 4 ?
|
||||||
[#ledger](irc://irc.freenode.net/#ledger) IRC channel but have
|
|
||||||
separate mail lists
|
|
||||||
([hledger list](http://groups.google.com/group/hledger/),
|
|
||||||
[ledger-cli list](http://groups.google.com/group/ledger-cli/)). I try
|
|
||||||
to give back by providing infrastructure
|
|
||||||
([ledger-cli.org](http://ledger-cli.org)) and IRC support.
|
|
||||||
hledger stays compatible with ledger wherever possible, so that you
|
|
||||||
can often use both tools on the same data file.
|
|
||||||
|
|
||||||
Summary: hledger is a friendly, co-evolving, compatible rewrite of Ledger
|
|
||||||
in Haskell, lacking some of ledger's power features and raw performance,
|
|
||||||
and focussing on robustness, usability, ease of development, and
|
|
||||||
experimental add-ons such as the [web interface](manual.html#web).
|
|
||||||
|
|
||||||
### And ledger 4 ?
|
|
||||||
|
|
||||||
There is also a [ledger4](https://github.com/ledger/ledger4) on github; this is
|
There is also a [ledger4](https://github.com/ledger/ledger4) on github; this is
|
||||||
John's own rewrite of the core of
|
John's own rewrite of the core of
|
||||||
ledger 3 in haskell. It's an early library prototype, not a usable tool.
|
Ledger 3 in haskell. It's an early library prototype, not a usable tool.
|
||||||
Perhaps some day hledger or something like it would use this as its foundation.
|
Perhaps some day hledger or something like it would use this as its foundation.
|
||||||
|
|
||||||
### File format differences ?
|
### File format differences ?
|
||||||
|
|
||||||
hledger's file format is mostly identical with ledger's, by design.
|
hledger's file format is mostly identical with Ledger's, by design.
|
||||||
Generally, it's easy to keep a journal file that works with both hledger
|
Generally, it's easy to keep a journal file that works with both hledger
|
||||||
and ledger if you avoid ledger's and hledger's more specialised syntax
|
and Ledger if you avoid Ledger's and hledger's more specialised syntax
|
||||||
(or keep it in separate files which you include only when appropriate).
|
(or keep it in separate files which you include only when appropriate).
|
||||||
|
|
||||||
Some ledger syntax is parsed but ignored (such as
|
Some Ledger syntax is parsed but ignored (such as
|
||||||
[automated transactions](http://ledger-cli.org/3.0/doc/ledger3.html#Automated-Transactions), [periodic transactions](http://ledger-cli.org/3.0/doc/ledger3.html#Periodic-Transactions), and
|
[automated transactions](http://ledger-cli.org/3.0/doc/ledger3.html#Automated-Transactions), [periodic transactions](http://ledger-cli.org/3.0/doc/ledger3.html#Periodic-Transactions), and
|
||||||
[historical prices](manual.html#historical-prices)).
|
[historical prices](manual.html#historical-prices)).
|
||||||
Some features are not currently parsed and will cause an error, eg
|
Some features are not currently parsed and will cause an error, eg
|
||||||
ledger's more recent top-level directives. There can also be subtle
|
Ledger's more recent top-level directives. There can also be subtle
|
||||||
differences in parser behaviour, such as with
|
differences in parser behaviour, such as with
|
||||||
[hledger comments](manual.html#comments) vs [ledger comments](http://ledger-cli.org/3.0/doc/ledger3.html#Commenting-on-your-Journal),
|
[hledger comments](manual.html#comments) vs [Ledger comments](http://ledger-cli.org/3.0/doc/ledger3.html#Commenting-on-your-Journal),
|
||||||
or [balance assertions](manual.html#assertions-and-ordering).
|
or [balance assertions](manual.html#assertions-and-ordering).
|
||||||
|
|
||||||
### Feature differences ?
|
### Feature differences ?
|
||||||
|
|
||||||
hledger mimics a subset of [ledger 3.x](http://ledger-cli.org), and adds some features of its own.
|
hledger mimics a subset of [Ledger 3.x](http://ledger-cli.org), and adds some features of its own.
|
||||||
|
|
||||||
We currently support:
|
We currently support:
|
||||||
|
|
||||||
- ledger's journal format, mostly
|
- Ledger's journal format, mostly
|
||||||
- csv format
|
- csv format
|
||||||
- timelog format
|
- timelog format
|
||||||
- regular journal transactions
|
- regular journal transactions
|
||||||
@ -102,7 +103,7 @@ And we add these commands:
|
|||||||
|
|
||||||
### Option/command differences ?
|
### Option/command differences ?
|
||||||
|
|
||||||
ledger options and commands not supported include:
|
Ledger options and commands not supported include:
|
||||||
```
|
```
|
||||||
Basic options:
|
Basic options:
|
||||||
-o, --output FILE write output to FILE
|
-o, --output FILE write output to FILE
|
||||||
@ -160,7 +161,7 @@ entry DATE PAYEE AMT output a derived entry, based on the arguments
|
|||||||
### Other functionality differences ?
|
### Other functionality differences ?
|
||||||
|
|
||||||
- hledger recognises description and negative patterns by "desc:"
|
- hledger recognises description and negative patterns by "desc:"
|
||||||
and "not:" prefixes, unlike ledger 3's free-form parser
|
and "not:" prefixes, unlike Ledger 3's free-form parser
|
||||||
|
|
||||||
- hledger does not require a space between command-line flags and their values,
|
- hledger does not require a space between command-line flags and their values,
|
||||||
eg `-fFILE` works as well as `-f FILE`
|
eg `-fFILE` works as well as `-f FILE`
|
||||||
@ -191,28 +192,28 @@ entry DATE PAYEE AMT output a derived entry, based on the arguments
|
|||||||
- hledger's default commodity directive (D) sets the commodity to be
|
- hledger's default commodity directive (D) sets the commodity to be
|
||||||
used for subsequent commodityless amounts, and also sets that
|
used for subsequent commodityless amounts, and also sets that
|
||||||
commodity's display settings if such an amount is the first
|
commodity's display settings if such an amount is the first
|
||||||
seen. ledger uses D only for commodity display settings and for the
|
seen. Ledger uses D only for commodity display settings and for the
|
||||||
entry command.
|
entry command.
|
||||||
|
|
||||||
- hledger generates a description for timelog sessions, instead of
|
- hledger generates a description for timelog sessions, instead of
|
||||||
taking it from the clock-out entry
|
taking it from the clock-out entry
|
||||||
|
|
||||||
- hledger's [include directive](manual.html#including-other-files) does not support
|
- hledger's [include directive](manual.html#including-other-files) does not support
|
||||||
shell glob patterns (eg `include *.journal` ), which ledger does.
|
shell glob patterns (eg `include *.journal` ), which Ledger does.
|
||||||
|
|
||||||
- when checking [balance assertions](manual.html#balance-assertions)
|
- when checking [balance assertions](manual.html#balance-assertions)
|
||||||
hledger sorts the account's postings first by date and then (for
|
hledger sorts the account's postings first by date and then (for
|
||||||
postings with the same date) by parse order. ledger goes strictly by
|
postings with the same date) by parse order. Ledger goes strictly by
|
||||||
parse order.
|
parse order.
|
||||||
|
|
||||||
- ledger allows amounts to have a
|
- Ledger allows amounts to have a
|
||||||
[fixed lot price](manual.html#fixed-lot-prices) and a regular price in any
|
[fixed lot price](manual.html#fixed-lot-prices) and a regular price in any
|
||||||
order (and uses whichever appears first). hledger requires the fixed
|
order (and uses whichever appears first). hledger requires the fixed
|
||||||
lot price to come last (and ignores it).
|
lot price to come last (and ignores it).
|
||||||
|
|
||||||
### Implementation differences ?
|
### Implementation differences ?
|
||||||
|
|
||||||
ledger is written in C++, whereas hledger is written in [Haskell](http://haskell.org).
|
Ledger is written in C++, whereas hledger is written in [Haskell](http://haskell.org).
|
||||||
Haskell is a highly regarded up-and-coming programming language that enables
|
Haskell is a highly regarded up-and-coming programming language that enables
|
||||||
a coding style known as pure functional programming, offering the
|
a coding style known as pure functional programming, offering the
|
||||||
promise of more bug-free and maintainable software built in fewer
|
promise of more bug-free and maintainable software built in fewer
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user