update embedded manuals
This commit is contained in:
parent
67d7c82e9f
commit
40713ee7aa
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
.TH "hledger\-api" "1" "September 2018" "hledger\-api 1.11.99" "hledger User Manuals"
|
.TH "hledger\-api" "1" "December 2018" "hledger\-api 1.12" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@ This is hledger-api.info, produced by makeinfo version 6.5 from stdin.
|
|||||||
|
|
||||||
File: hledger-api.info, Node: Top, Next: OPTIONS, Up: (dir)
|
File: hledger-api.info, Node: Top, Next: OPTIONS, Up: (dir)
|
||||||
|
|
||||||
hledger-api(1) hledger-api 1.11.99
|
hledger-api(1) hledger-api 1.12
|
||||||
**********************************
|
*******************************
|
||||||
|
|
||||||
hledger-api is a simple web API server, intended to support client-side
|
hledger-api is a simple web API server, intended to support client-side
|
||||||
web apps operating on hledger data. It comes with a series of simple
|
web apps operating on hledger data. It comes with a series of simple
|
||||||
@ -80,7 +80,7 @@ options as shown above.
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top72
|
Node: Top72
|
||||||
Node: OPTIONS1666
|
Node: OPTIONS1660
|
||||||
Ref: #options1751
|
Ref: #options1745
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|||||||
@ -117,4 +117,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger-api 1.11.99 September 2018 hledger-api(1)
|
hledger-api 1.12 December 2018 hledger-api(1)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
.TH "hledger_csv" "5" "September 2018" "hledger 1.11.99" "hledger User Manuals"
|
.TH "hledger_csv" "5" "December 2018" "hledger 1.12" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@ This is hledger_csv.info, produced by makeinfo version 6.5 from stdin.
|
|||||||
|
|
||||||
File: hledger_csv.info, Node: Top, Next: CSV RULES, Up: (dir)
|
File: hledger_csv.info, Node: Top, Next: CSV RULES, Up: (dir)
|
||||||
|
|
||||||
hledger_csv(5) hledger 1.11.99
|
hledger_csv(5) hledger 1.12
|
||||||
******************************
|
***************************
|
||||||
|
|
||||||
hledger can read CSV (comma-separated value) files as if they were
|
hledger can read CSV (comma-separated value) files as if they were
|
||||||
journal files, automatically converting each CSV record into a
|
journal files, automatically converting each CSV record into a
|
||||||
@ -317,33 +317,33 @@ one rules file will be used for all the CSV files being read.
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top72
|
Node: Top72
|
||||||
Node: CSV RULES2169
|
Node: CSV RULES2163
|
||||||
Ref: #csv-rules2277
|
Ref: #csv-rules2271
|
||||||
Node: skip2539
|
Node: skip2533
|
||||||
Ref: #skip2633
|
Ref: #skip2627
|
||||||
Node: date-format2805
|
Node: date-format2799
|
||||||
Ref: #date-format2932
|
Ref: #date-format2926
|
||||||
Node: field list3438
|
Node: field list3432
|
||||||
Ref: #field-list3575
|
Ref: #field-list3569
|
||||||
Node: field assignment4280
|
Node: field assignment4274
|
||||||
Ref: #field-assignment4435
|
Ref: #field-assignment4429
|
||||||
Node: conditional block4939
|
Node: conditional block4933
|
||||||
Ref: #conditional-block5093
|
Ref: #conditional-block5087
|
||||||
Node: include5989
|
Node: include5983
|
||||||
Ref: #include6119
|
Ref: #include6113
|
||||||
Node: newest-first6350
|
Node: newest-first6344
|
||||||
Ref: #newest-first6464
|
Ref: #newest-first6458
|
||||||
Node: CSV TIPS6875
|
Node: CSV TIPS6869
|
||||||
Ref: #csv-tips6969
|
Ref: #csv-tips6963
|
||||||
Node: CSV ordering7087
|
Node: CSV ordering7081
|
||||||
Ref: #csv-ordering7205
|
Ref: #csv-ordering7199
|
||||||
Node: CSV accounts7386
|
Node: CSV accounts7380
|
||||||
Ref: #csv-accounts7524
|
Ref: #csv-accounts7518
|
||||||
Node: CSV amounts7778
|
Node: CSV amounts7772
|
||||||
Ref: #csv-amounts7924
|
Ref: #csv-amounts7918
|
||||||
Node: CSV balance assertions8699
|
Node: CSV balance assertions8693
|
||||||
Ref: #csv-balance-assertions8881
|
Ref: #csv-balance-assertions8875
|
||||||
Node: Reading multiple CSV files9086
|
Node: Reading multiple CSV files9080
|
||||||
Ref: #reading-multiple-csv-files9256
|
Ref: #reading-multiple-csv-files9250
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|||||||
@ -249,4 +249,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger 1.11.99 September 2018 hledger_csv(5)
|
hledger 1.12 December 2018 hledger_csv(5)
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
.\"t
|
.\"t
|
||||||
|
|
||||||
.TH "hledger_journal" "5" "September 2018" "hledger 1.11.99" "hledger User Manuals"
|
.TH "hledger_journal" "5" "December 2018" "hledger 1.12" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -547,16 +547,57 @@ Use include or concatenate the files instead.
|
|||||||
The asserted balance must be a simple single\-commodity amount, and in
|
The asserted balance must be a simple single\-commodity amount, and in
|
||||||
fact the assertion checks only this commodity's balance within the
|
fact the assertion checks only this commodity's balance within the
|
||||||
(possibly multi\-commodity) account balance.
|
(possibly multi\-commodity) account balance.
|
||||||
We could call this a partial balance assertion.
|
.PD 0
|
||||||
This is compatible with Ledger, and makes it possible to make assertions
|
.P
|
||||||
about accounts containing multiple commodities.
|
.PD
|
||||||
|
This is how assertions work in Ledger also.
|
||||||
|
We could call this a \[lq]partial\[rq] balance assertion.
|
||||||
.PP
|
.PP
|
||||||
To assert each commodity's balance in such a multi\-commodity account,
|
To assert the balance of more than one commodity in an account, you can
|
||||||
you can add multiple postings (with amount 0 if necessary).
|
write multiple postings, each asserting one commodity's balance.
|
||||||
But note that no matter how many assertions you add, you can't be sure
|
.PP
|
||||||
the account does not contain some unexpected commodity.
|
You can make a stronger kind of balance assertion, by writing a double
|
||||||
(We'll add support for this kind of total balance assertion if there's
|
equals sign (\f[C]==EXPECTEDBALANCE\f[]).
|
||||||
demand.)
|
This \[lq]complete\[rq] balance assertion asserts the absence of other
|
||||||
|
commodities (or, that their balance is 0, which to hledger is
|
||||||
|
equivalent.)
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
2013/1/1
|
||||||
|
\ \ a\ \ \ $1
|
||||||
|
\ \ a\ \ \ \ 1€
|
||||||
|
\ \ b\ \ $\-1
|
||||||
|
\ \ c\ \ \ \-1€
|
||||||
|
|
||||||
|
2013/1/2\ \ ;\ These\ assertions\ succeed
|
||||||
|
\ \ a\ \ \ \ 0\ \ =\ \ $1
|
||||||
|
\ \ a\ \ \ \ 0\ \ =\ \ \ 1€
|
||||||
|
\ \ b\ \ \ \ 0\ ==\ $\-1
|
||||||
|
\ \ c\ \ \ \ 0\ ==\ \ \-1€
|
||||||
|
|
||||||
|
2013/1/3\ \ ;\ This\ assertion\ fails\ as\ \[aq]a\[aq]\ also\ contains\ 1€
|
||||||
|
\ \ a\ \ \ \ 0\ ==\ \ $1
|
||||||
|
\f[]
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
It's not yet possible to make a complete assertion about a balance that
|
||||||
|
has multiple commodities.
|
||||||
|
One workaround is to isolate each commodity into its own subaccount:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
2013/1/1
|
||||||
|
\ \ a:usd\ \ \ $1
|
||||||
|
\ \ a:euro\ \ \ 1€
|
||||||
|
\ \ b
|
||||||
|
|
||||||
|
2013/1/2
|
||||||
|
\ \ a\ \ \ \ \ \ \ \ 0\ ==\ \ 0
|
||||||
|
\ \ a:usd\ \ \ \ 0\ ==\ $1
|
||||||
|
\ \ a:euro\ \ \ 0\ ==\ \ 1€
|
||||||
|
\f[]
|
||||||
|
.fi
|
||||||
.SS Assertions and subaccounts
|
.SS Assertions and subaccounts
|
||||||
.PP
|
.PP
|
||||||
Balance assertions do not count the balance from subaccounts; they check
|
Balance assertions do not count the balance from subaccounts; they check
|
||||||
@ -853,10 +894,9 @@ T}@T{
|
|||||||
T}@T{
|
T}@T{
|
||||||
any text
|
any text
|
||||||
T}@T{
|
T}@T{
|
||||||
declare an account name & optional account code
|
document account names, declare account types & display order
|
||||||
T}@T{
|
T}@T{
|
||||||
account code: balance reports (except \f[C]balance\f[] single\-column
|
all entries in all files, before or after
|
||||||
mode)
|
|
||||||
T}
|
T}
|
||||||
T{
|
T{
|
||||||
\f[C]alias\f[]
|
\f[C]alias\f[]
|
||||||
@ -951,13 +991,8 @@ lw(8.9n) lw(61.1n).
|
|||||||
T{
|
T{
|
||||||
subdirective
|
subdirective
|
||||||
T}@T{
|
T}@T{
|
||||||
optional indented directive or unparsed text lines immediately following
|
optional indented directive line immediately following a parent
|
||||||
a parent directive
|
directive
|
||||||
T}
|
|
||||||
T{
|
|
||||||
account code
|
|
||||||
T}@T{
|
|
||||||
numeric code influencing account display order in most balance reports
|
|
||||||
T}
|
T}
|
||||||
T{
|
T{
|
||||||
number notation
|
number notation
|
||||||
@ -1143,58 +1178,108 @@ The \f[C]\-V/\-\-value\f[] flag can be used to convert reported amounts
|
|||||||
to another commodity using these prices.
|
to another commodity using these prices.
|
||||||
.SS Declaring accounts
|
.SS Declaring accounts
|
||||||
.PP
|
.PP
|
||||||
The \f[C]account\f[] directive predeclares account names.
|
\f[C]account\f[] directives can be used to pre\-declare some or all
|
||||||
The simplest form is \f[C]account\ ACCTNAME\f[], eg:
|
accounts.
|
||||||
.IP
|
Though not required, they can provide several benefits:
|
||||||
.nf
|
.IP \[bu] 2
|
||||||
\f[C]
|
They can document your intended chart of accounts, providing a
|
||||||
account\ assets:bank:checking
|
reference.
|
||||||
\f[]
|
.IP \[bu] 2
|
||||||
.fi
|
They can store extra information about accounts (account numbers, notes,
|
||||||
|
etc.)
|
||||||
|
.IP \[bu] 2
|
||||||
|
They can help hledger know your accounts' types (asset, liability,
|
||||||
|
equity, revenue, expense), useful for reports like balancesheet and
|
||||||
|
incomestatement.
|
||||||
|
.IP \[bu] 2
|
||||||
|
They control account display order in reports, allowing non\-alphabetic
|
||||||
|
sorting (eg Revenues to appear above Expenses).
|
||||||
|
.IP \[bu] 2
|
||||||
|
They help with account name completion in the add command,
|
||||||
|
hledger\-iadd, hledger\-web, ledger\-mode etc.
|
||||||
.PP
|
.PP
|
||||||
Currently this mainly helps with account name autocompletion in eg
|
|
||||||
hledger add, hledger\-iadd, hledger\-web, and ledger\-mode.
|
|
||||||
.PD 0
|
|
||||||
.P
|
|
||||||
.PD
|
|
||||||
In future it will also help detect misspelled accounts.
|
|
||||||
.PP
|
|
||||||
An account directive can also have indented subdirectives following it,
|
|
||||||
which are currently ignored.
|
|
||||||
Here is the full syntax:
|
Here is the full syntax:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
;\ account\ ACCTNAME
|
account\ ACCTNAME\ \ [ACCTTYPE]
|
||||||
;\ \ \ [OPTIONALSUBDIRECTIVES]
|
\ \ [COMMENTS]
|
||||||
|
|
||||||
account\ assets:bank:checking
|
|
||||||
\ \ a\ comment
|
|
||||||
\ \ some\-tag:12345
|
|
||||||
\f[]
|
\f[]
|
||||||
.fi
|
.fi
|
||||||
.SS Account display order
|
|
||||||
.PP
|
.PP
|
||||||
Account directives have another purpose: they set the order in which
|
The simplest form just declares a hledger\-style account name, eg:
|
||||||
accounts are displayed, in hledger reports, hledger\-ui accounts screen,
|
|
||||||
hledger\-web sidebar etc.
|
|
||||||
For example, say you have these top\-level accounts:
|
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
$\ accounts\ \-1
|
account\ assets:bank:checking
|
||||||
assets
|
\f[]
|
||||||
equity
|
.fi
|
||||||
expenses
|
.SS Account types
|
||||||
liabilities
|
.PP
|
||||||
misc
|
hledger recognises five types of account: asset, liability, equity,
|
||||||
other
|
revenue, expense.
|
||||||
revenues
|
This is useful for certain accounting\-aware reports, in particular
|
||||||
|
balancesheet, incomestatement and cashflow.
|
||||||
|
.PP
|
||||||
|
If you name your top\-level accounts with some variation of
|
||||||
|
\f[C]assets\f[], \f[C]liabilities\f[]/\f[C]debts\f[], \f[C]equity\f[],
|
||||||
|
\f[C]revenues\f[]/\f[C]income\f[], or \f[C]expenses\f[], their types are
|
||||||
|
detected automatically.
|
||||||
|
.PP
|
||||||
|
More generally, you can declare an account's type by adding one of the
|
||||||
|
letters \f[C]ALERX\f[] to its account directive, separated from the
|
||||||
|
account name by two or more spaces.
|
||||||
|
Eg:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
account\ assets\ \ \ \ \ \ \ A
|
||||||
|
account\ liabilities\ \ L
|
||||||
|
account\ equity\ \ \ \ \ \ \ E
|
||||||
|
account\ revenues\ \ \ \ \ R
|
||||||
|
account\ expenses\ \ \ \ \ X
|
||||||
\f[]
|
\f[]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
By default, they are displayed in alphabetical order.
|
Note: if you ever override the types of those auto\-detected english
|
||||||
But if you add the following account directives to the journal:
|
account names mentioned above, you might need to help the reports a bit:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
;\ make\ "liabilities"\ not\ have\ the\ liability\ type,\ who\ knows\ why
|
||||||
|
account\ liabilities\ \ \ E
|
||||||
|
|
||||||
|
;\ better\ ensure\ some\ other\ account\ has\ the\ liability\ type,\
|
||||||
|
;\ otherwise\ balancesheet\ would\ still\ show\ "liabilities"\ under\ Liabilities\
|
||||||
|
account\ \-\ \ \ \ \ \ \ \ \ \ \ \ \ L
|
||||||
|
\f[]
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
)
|
||||||
|
.SS Account comments
|
||||||
|
.PP
|
||||||
|
An account directive can also have indented comments on following lines,
|
||||||
|
eg:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
account\ assets:bank:checking
|
||||||
|
\ \ ;\ acctno:12345
|
||||||
|
\ \ ;\ a\ comment
|
||||||
|
\f[]
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
We also allow (and ignore) Ledger\-style subdirectives, with no leading
|
||||||
|
semicolon, for compatibility.
|
||||||
|
.PP
|
||||||
|
Tags in account comments, like \f[C]acctno\f[] above, currently have no
|
||||||
|
effect.
|
||||||
|
.SS Account display order
|
||||||
|
.PP
|
||||||
|
Account directives also set the order in which accounts are displayed in
|
||||||
|
reports, the hledger\-ui accounts screen, the hledger\-web sidebar, etc.
|
||||||
|
Normally accounts are listed in alphabetical order, but if you have eg
|
||||||
|
these account directives in the journal:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
@ -1206,27 +1291,25 @@ account\ expenses
|
|||||||
\f[]
|
\f[]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
the display order changes to:
|
you'll see those accounts listed in declaration order, not
|
||||||
|
alphabetically:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
$\ accounts\ \-1
|
$\ hledger\ accounts\ \-1
|
||||||
assets
|
assets
|
||||||
liabilities
|
liabilities
|
||||||
equity
|
equity
|
||||||
revenues
|
revenues
|
||||||
expenses
|
expenses
|
||||||
misc
|
|
||||||
other
|
|
||||||
\f[]
|
\f[]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
Ie, declared accounts first, in the order they were declared, followed
|
Undeclared accounts, if any, are displayed last, in alphabetical order.
|
||||||
by any undeclared accounts in alphabetic order.
|
|
||||||
.PP
|
.PP
|
||||||
Note that sorting is done at each level of the account tree (within each
|
Note that sorting is done at each level of the account tree (within each
|
||||||
group of sibling accounts under the same parent).
|
group of sibling accounts under the same parent).
|
||||||
This directive:
|
And currently, this directive:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
@ -1237,6 +1320,10 @@ account\ other:zoo
|
|||||||
would influence the position of \f[C]zoo\f[] among \f[C]other\f[]'s
|
would influence the position of \f[C]zoo\f[] among \f[C]other\f[]'s
|
||||||
subaccounts, but not the position of \f[C]other\f[] among the top\-level
|
subaccounts, but not the position of \f[C]other\f[] among the top\-level
|
||||||
accounts.
|
accounts.
|
||||||
|
This means: \- you will sometimes declare parent accounts (eg
|
||||||
|
\f[C]account\ other\f[] above) that you don't intend to post to, just to
|
||||||
|
customize their display order \- sibling accounts stay together (you
|
||||||
|
couldn't display \f[C]x:y\f[] in between \f[C]a:b\f[] and \f[C]a:c\f[]).
|
||||||
.SS Rewriting accounts
|
.SS Rewriting accounts
|
||||||
.PP
|
.PP
|
||||||
You can define account alias rules which rewrite your account names, or
|
You can define account alias rules which rewrite your account names, or
|
||||||
@ -1419,16 +1506,25 @@ date must fall on a natural boundary of the interval.
|
|||||||
Eg \f[C]monthly\ from\ 2018/1/1\f[] is valid, but
|
Eg \f[C]monthly\ from\ 2018/1/1\f[] is valid, but
|
||||||
\f[C]monthly\ from\ 2018/1/15\f[] is not.
|
\f[C]monthly\ from\ 2018/1/15\f[] is not.
|
||||||
.PP
|
.PP
|
||||||
If you write a transaction description or same\-line comment, it must be
|
Partial or relative dates (M/D, D, tomorrow, last week) in the period
|
||||||
separated from the period expression by \f[B]two or more spaces\f[].
|
expression can work (useful or not).
|
||||||
Eg:
|
They will be relative to today's date, unless a Y default year directive
|
||||||
|
is in effect, in which case they will be relative to Y/1/1.
|
||||||
|
.PP
|
||||||
|
Period expressions must be terminated by \f[B]two or more spaces\f[] if
|
||||||
|
followed by additional fields.
|
||||||
|
For example, the periodic transaction given below includes a transaction
|
||||||
|
description \[lq]paycheck\[rq], which is separated from the period
|
||||||
|
expression by a double space.
|
||||||
|
If not for the second space, hledger would attempt (and fail) to parse
|
||||||
|
\[lq]paycheck\[rq] as a part of the period expression.
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ or\ more\ spaces
|
;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ or\ more\ spaces
|
||||||
;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||
|
;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ||
|
||||||
;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ vv
|
;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ vv
|
||||||
~\ every\ 2\ weeks\ from\ 2018/6\ to\ 2018/9\ \ paycheck
|
~\ every\ 2\ weeks\ from\ 2018/6/4\ to\ 2018/9\ \ paycheck
|
||||||
\ \ \ \ assets:bank:checking\ \ \ $1500
|
\ \ \ \ assets:bank:checking\ \ \ $1500
|
||||||
\ \ \ \ income:acme\ inc
|
\ \ \ \ income:acme\ inc
|
||||||
\f[]
|
\f[]
|
||||||
@ -1495,50 +1591,81 @@ Currently, this means adding extra postings (also known as
|
|||||||
\[lq]automated postings\[rq]).
|
\[lq]automated postings\[rq]).
|
||||||
Transaction modifiers are enabled by the \f[C]\-\-auto\f[] flag.
|
Transaction modifiers are enabled by the \f[C]\-\-auto\f[] flag.
|
||||||
.PP
|
.PP
|
||||||
A transaction modifier rule looks a bit like a normal journal entry,
|
A transaction modifier rule looks quite like a normal transaction,
|
||||||
except the first line is an equal sign (\f[C]=\f[]) followed by a query
|
except the first line is an equals sign followed by a query that matches
|
||||||
(mnemonic: \f[C]=\f[] suggests matching something.):
|
certain postings (mnemonic: \f[C]=\f[] suggests matching).
|
||||||
|
And each \[lq]posting\[rq] is actually a posting\-generating rule:
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
=\ expenses:gifts
|
=\ QUERY
|
||||||
\ \ \ \ budget:gifts\ \ *\-1
|
\ \ \ \ ACCT\ \ AMT
|
||||||
\ \ \ \ assets:budget\ \ *1
|
\ \ \ \ ACCT\ \ [AMT]
|
||||||
|
\ \ \ \ ...
|
||||||
\f[]
|
\f[]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
The posting amounts can be of the form \f[C]*N\f[], which means \[lq]the
|
The posting rules look just like normal postings, except the amount can
|
||||||
amount of the matched transaction's first posting, multiplied by N\[rq].
|
be:
|
||||||
They can also be ordinary fixed amounts.
|
.IP \[bu] 2
|
||||||
Fixed amounts with no commodity symbol will be given the same commodity
|
a normal amount with a commodity symbol, eg \f[C]$2\f[].
|
||||||
as the matched transaction's first posting.
|
This will be used as\-is.
|
||||||
|
.IP \[bu] 2
|
||||||
|
a number, eg \f[C]2\f[].
|
||||||
|
The commodity symbol (if any) from the matched posting will be added to
|
||||||
|
this.
|
||||||
|
.IP \[bu] 2
|
||||||
|
a numeric multiplier, eg \f[C]*2\f[] (a star followed by a number N).
|
||||||
|
The matched posting's amount (and total price, if any) will be
|
||||||
|
multiplied by N.
|
||||||
|
.IP \[bu] 2
|
||||||
|
a multiplier with a commodity symbol, eg \f[C]*$2\f[] (a star, number N,
|
||||||
|
and symbol S).
|
||||||
|
The matched posting's amount will be multiplied by N, and its commodity
|
||||||
|
symbol will be replaced with S.
|
||||||
.PP
|
.PP
|
||||||
This example adds a corresponding (unbalanced) budget posting to every
|
Some examples:
|
||||||
transaction involving the \f[C]expenses:gifts\f[] account:
|
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
=\ expenses:gifts
|
;\ every\ time\ I\ buy\ food,\ schedule\ a\ dollar\ donation
|
||||||
\ \ \ \ (budget:gifts)\ \ *\-1
|
=\ expenses:food
|
||||||
|
\ \ \ \ (liabilities:charity)\ \ \ $\-1
|
||||||
|
|
||||||
2017\-12\-14
|
;\ when\ I\ buy\ a\ gift,\ also\ deduct\ that\ amount\ from\ a\ budget\ envelope\ subaccount
|
||||||
\ \ expenses:gifts\ \ $20
|
=\ expenses:gifts
|
||||||
\ \ assets
|
\ \ \ \ assets:checking:gifts\ \ *\-1
|
||||||
|
\ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ *1
|
||||||
|
|
||||||
|
2017/12/1
|
||||||
|
\ \ expenses:food\ \ \ \ $10
|
||||||
|
\ \ assets:checking
|
||||||
|
|
||||||
|
2017/12/14
|
||||||
|
\ \ expenses:gifts\ \ \ $20
|
||||||
|
\ \ assets:checking
|
||||||
\f[]
|
\f[]
|
||||||
.fi
|
.fi
|
||||||
.IP
|
.IP
|
||||||
.nf
|
.nf
|
||||||
\f[C]
|
\f[C]
|
||||||
$\ hledger\ print\ \-\-auto
|
$\ hledger\ print\ \-\-auto
|
||||||
|
2017/12/01
|
||||||
|
\ \ \ \ expenses:food\ \ \ \ \ \ \ \ \ \ \ \ \ \ $10
|
||||||
|
\ \ \ \ assets:checking
|
||||||
|
\ \ \ \ (liabilities:charity)\ \ \ \ \ \ $\-1
|
||||||
|
|
||||||
2017/12/14
|
2017/12/14
|
||||||
\ \ \ \ expenses:gifts\ \ \ \ \ \ \ \ \ \ \ \ \ $20
|
\ \ \ \ expenses:gifts\ \ \ \ \ \ \ \ \ \ \ \ \ $20
|
||||||
\ \ \ \ (budget:gifts)\ \ \ \ \ \ \ \ \ \ \ \ $\-20
|
\ \ \ \ assets:checking
|
||||||
\ \ \ \ assets
|
\ \ \ \ assets:checking:gifts\ \ \ \ \ \-$20
|
||||||
|
\ \ \ \ assets:checking\ \ \ \ \ \ \ \ \ \ \ \ $20
|
||||||
\f[]
|
\f[]
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
Like postings recorded by hand, automated postings participate in
|
Postings added by transaction modifiers participate in transaction
|
||||||
transaction balancing, missing amount inference and balance assertions.
|
balancing, missing amount inference and balance assertions, like regular
|
||||||
|
postings.
|
||||||
.SH EDITOR SUPPORT
|
.SH EDITOR SUPPORT
|
||||||
.PP
|
.PP
|
||||||
Add\-on modes exist for various text editors, to make working with
|
Add\-on modes exist for various text editors, to make working with
|
||||||
|
|||||||
@ -4,8 +4,8 @@ stdin.
|
|||||||
|
|
||||||
File: hledger_journal.info, Node: Top, Next: FILE FORMAT, Up: (dir)
|
File: hledger_journal.info, Node: Top, Next: FILE FORMAT, Up: (dir)
|
||||||
|
|
||||||
hledger_journal(5) hledger 1.11.99
|
hledger_journal(5) hledger 1.12
|
||||||
**********************************
|
*******************************
|
||||||
|
|
||||||
hledger's usual data source is a plain text file containing journal
|
hledger's usual data source is a plain text file containing journal
|
||||||
entries in hledger journal format. This file represents a standard
|
entries in hledger journal format. This file represents a standard
|
||||||
@ -524,16 +524,46 @@ File: hledger_journal.info, Node: Assertions and commodities, Next: Assertions
|
|||||||
|
|
||||||
The asserted balance must be a simple single-commodity amount, and in
|
The asserted balance must be a simple single-commodity amount, and in
|
||||||
fact the assertion checks only this commodity's balance within the
|
fact the assertion checks only this commodity's balance within the
|
||||||
(possibly multi-commodity) account balance. We could call this a
|
(possibly multi-commodity) account balance.
|
||||||
partial balance assertion. This is compatible with Ledger, and makes it
|
This is how assertions work in Ledger also. We could call this a
|
||||||
possible to make assertions about accounts containing multiple
|
"partial" balance assertion.
|
||||||
commodities.
|
|
||||||
|
|
||||||
To assert each commodity's balance in such a multi-commodity account,
|
To assert the balance of more than one commodity in an account, you
|
||||||
you can add multiple postings (with amount 0 if necessary). But note
|
can write multiple postings, each asserting one commodity's balance.
|
||||||
that no matter how many assertions you add, you can't be sure the
|
|
||||||
account does not contain some unexpected commodity. (We'll add support
|
You can make a stronger kind of balance assertion, by writing a
|
||||||
for this kind of total balance assertion if there's demand.)
|
double equals sign ('==EXPECTEDBALANCE'). This "complete" balance
|
||||||
|
assertion asserts the absence of other commodities (or, that their
|
||||||
|
balance is 0, which to hledger is equivalent.)
|
||||||
|
|
||||||
|
2013/1/1
|
||||||
|
a $1
|
||||||
|
a 1€
|
||||||
|
b $-1
|
||||||
|
c -1€
|
||||||
|
|
||||||
|
2013/1/2 ; These assertions succeed
|
||||||
|
a 0 = $1
|
||||||
|
a 0 = 1€
|
||||||
|
b 0 == $-1
|
||||||
|
c 0 == -1€
|
||||||
|
|
||||||
|
2013/1/3 ; This assertion fails as 'a' also contains 1€
|
||||||
|
a 0 == $1
|
||||||
|
|
||||||
|
It's not yet possible to make a complete assertion about a balance
|
||||||
|
that has multiple commodities. One workaround is to isolate each
|
||||||
|
commodity into its own subaccount:
|
||||||
|
|
||||||
|
2013/1/1
|
||||||
|
a:usd $1
|
||||||
|
a:euro 1€
|
||||||
|
b
|
||||||
|
|
||||||
|
2013/1/2
|
||||||
|
a 0 == 0
|
||||||
|
a:usd 0 == $1
|
||||||
|
a:euro 0 == 1€
|
||||||
|
|
||||||
|
|
||||||
File: hledger_journal.info, Node: Assertions and subaccounts, Next: Assertions and virtual postings, Prev: Assertions and commodities, Up: Balance Assertions
|
File: hledger_journal.info, Node: Assertions and subaccounts, Next: Assertions and virtual postings, Prev: Assertions and commodities, Up: Balance Assertions
|
||||||
@ -766,11 +796,9 @@ links to more detailed docs.
|
|||||||
directiveend subdirectivespurpose can affect (as of
|
directiveend subdirectivespurpose can affect (as of
|
||||||
directive 2018/06)
|
directive 2018/06)
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
'account' any declare an account name & account code:
|
'account' any document account names, all entries in
|
||||||
text optional account code balance reports
|
text declare account types & all files, before
|
||||||
(except 'balance'
|
display order or after
|
||||||
single-column
|
|
||||||
mode)
|
|
||||||
'alias' 'end rewrite account names following
|
'alias' 'end rewrite account names following
|
||||||
aliases' inline/included
|
aliases' inline/included
|
||||||
entries until end
|
entries until end
|
||||||
@ -821,10 +849,8 @@ account' apply account names inline/included
|
|||||||
|
|
||||||
And some definitions:
|
And some definitions:
|
||||||
|
|
||||||
subdirectiveoptional indented directive or unparsed text lines
|
subdirectiveoptional indented directive line immediately following a
|
||||||
immediately following a parent directive
|
parent directive
|
||||||
account numeric code influencing account display order in most
|
|
||||||
code balance reports
|
|
||||||
number how to interpret numbers when parsing journal entries (the
|
number how to interpret numbers when parsing journal entries (the
|
||||||
notation identity of the decimal separator character). (Currently
|
notation identity of the decimal separator character). (Currently
|
||||||
each commodity can have its own notation, even in the same
|
each commodity can have its own notation, even in the same
|
||||||
@ -853,7 +879,6 @@ times though.
|
|||||||
* Default commodity::
|
* Default commodity::
|
||||||
* Market prices::
|
* Market prices::
|
||||||
* Declaring accounts::
|
* Declaring accounts::
|
||||||
* Account display order::
|
|
||||||
* Rewriting accounts::
|
* Rewriting accounts::
|
||||||
* Default parent account::
|
* Default parent account::
|
||||||
|
|
||||||
@ -1003,52 +1028,106 @@ P 2010/1/1 € $1.40
|
|||||||
another commodity using these prices.
|
another commodity using these prices.
|
||||||
|
|
||||||
|
|
||||||
File: hledger_journal.info, Node: Declaring accounts, Next: Account display order, Prev: Market prices, Up: Directives
|
File: hledger_journal.info, Node: Declaring accounts, Next: Rewriting accounts, Prev: Market prices, Up: Directives
|
||||||
|
|
||||||
1.14.7 Declaring accounts
|
1.14.7 Declaring accounts
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
The 'account' directive predeclares account names. The simplest form is
|
'account' directives can be used to pre-declare some or all accounts.
|
||||||
'account ACCTNAME', eg:
|
Though not required, they can provide several benefits:
|
||||||
|
|
||||||
|
* They can document your intended chart of accounts, providing a
|
||||||
|
reference.
|
||||||
|
* They can store extra information about accounts (account numbers,
|
||||||
|
notes, etc.)
|
||||||
|
* They can help hledger know your accounts' types (asset, liability,
|
||||||
|
equity, revenue, expense), useful for reports like balancesheet and
|
||||||
|
incomestatement.
|
||||||
|
* They control account display order in reports, allowing
|
||||||
|
non-alphabetic sorting (eg Revenues to appear above Expenses).
|
||||||
|
* They help with account name completion in the add command,
|
||||||
|
hledger-iadd, hledger-web, ledger-mode etc.
|
||||||
|
|
||||||
|
Here is the full syntax:
|
||||||
|
|
||||||
|
account ACCTNAME [ACCTTYPE]
|
||||||
|
[COMMENTS]
|
||||||
|
|
||||||
|
The simplest form just declares a hledger-style account name, eg:
|
||||||
|
|
||||||
account assets:bank:checking
|
account assets:bank:checking
|
||||||
|
|
||||||
Currently this mainly helps with account name autocompletion in eg
|
* Menu:
|
||||||
hledger add, hledger-iadd, hledger-web, and ledger-mode.
|
|
||||||
In future it will also help detect misspelled accounts.
|
|
||||||
|
|
||||||
An account directive can also have indented subdirectives following
|
* Account types::
|
||||||
it, which are currently ignored. Here is the full syntax:
|
* Account comments::
|
||||||
|
* Account display order::
|
||||||
; account ACCTNAME
|
|
||||||
; [OPTIONALSUBDIRECTIVES]
|
|
||||||
|
|
||||||
account assets:bank:checking
|
|
||||||
a comment
|
|
||||||
some-tag:12345
|
|
||||||
|
|
||||||
|
|
||||||
File: hledger_journal.info, Node: Account display order, Next: Rewriting accounts, Prev: Declaring accounts, Up: Directives
|
File: hledger_journal.info, Node: Account types, Next: Account comments, Up: Declaring accounts
|
||||||
|
|
||||||
1.14.8 Account display order
|
1.14.7.1 Account types
|
||||||
----------------------------
|
......................
|
||||||
|
|
||||||
Account directives have another purpose: they set the order in which
|
hledger recognises five types of account: asset, liability, equity,
|
||||||
accounts are displayed, in hledger reports, hledger-ui accounts screen,
|
revenue, expense. This is useful for certain accounting-aware reports,
|
||||||
hledger-web sidebar etc. For example, say you have these top-level
|
in particular balancesheet, incomestatement and cashflow.
|
||||||
accounts:
|
|
||||||
|
|
||||||
$ accounts -1
|
If you name your top-level accounts with some variation of 'assets',
|
||||||
assets
|
'liabilities'/'debts', 'equity', 'revenues'/'income', or 'expenses',
|
||||||
equity
|
their types are detected automatically.
|
||||||
expenses
|
|
||||||
liabilities
|
|
||||||
misc
|
|
||||||
other
|
|
||||||
revenues
|
|
||||||
|
|
||||||
By default, they are displayed in alphabetical order. But if you add
|
More generally, you can declare an account's type by adding one of
|
||||||
the following account directives to the journal:
|
the letters 'ALERX' to its account directive, separated from the account
|
||||||
|
name by two or more spaces. Eg:
|
||||||
|
|
||||||
|
account assets A
|
||||||
|
account liabilities L
|
||||||
|
account equity E
|
||||||
|
account revenues R
|
||||||
|
account expenses X
|
||||||
|
|
||||||
|
Note: if you ever override the types of those auto-detected english
|
||||||
|
account names mentioned above, you might need to help the reports a bit:
|
||||||
|
|
||||||
|
; make "liabilities" not have the liability type, who knows why
|
||||||
|
account liabilities E
|
||||||
|
|
||||||
|
; better ensure some other account has the liability type,
|
||||||
|
; otherwise balancesheet would still show "liabilities" under Liabilities
|
||||||
|
account - L
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.info, Node: Account comments, Next: Account display order, Prev: Account types, Up: Declaring accounts
|
||||||
|
|
||||||
|
1.14.7.2 Account comments
|
||||||
|
.........................
|
||||||
|
|
||||||
|
An account directive can also have indented comments on following lines,
|
||||||
|
eg:
|
||||||
|
|
||||||
|
account assets:bank:checking
|
||||||
|
; acctno:12345
|
||||||
|
; a comment
|
||||||
|
|
||||||
|
We also allow (and ignore) Ledger-style subdirectives, with no
|
||||||
|
leading semicolon, for compatibility.
|
||||||
|
|
||||||
|
Tags in account comments, like 'acctno' above, currently have no
|
||||||
|
effect.
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger_journal.info, Node: Account display order, Prev: Account comments, Up: Declaring accounts
|
||||||
|
|
||||||
|
1.14.7.3 Account display order
|
||||||
|
..............................
|
||||||
|
|
||||||
|
Account directives also set the order in which accounts are displayed in
|
||||||
|
reports, the hledger-ui accounts screen, the hledger-web sidebar, etc.
|
||||||
|
Normally accounts are listed in alphabetical order, but if you have eg
|
||||||
|
these account directives in the journal:
|
||||||
|
|
||||||
account assets
|
account assets
|
||||||
account liabilities
|
account liabilities
|
||||||
@ -1056,32 +1135,36 @@ account equity
|
|||||||
account revenues
|
account revenues
|
||||||
account expenses
|
account expenses
|
||||||
|
|
||||||
the display order changes to:
|
you'll see those accounts listed in declaration order, not
|
||||||
|
alphabetically:
|
||||||
|
|
||||||
$ accounts -1
|
$ hledger accounts -1
|
||||||
assets
|
assets
|
||||||
liabilities
|
liabilities
|
||||||
equity
|
equity
|
||||||
revenues
|
revenues
|
||||||
expenses
|
expenses
|
||||||
misc
|
|
||||||
other
|
|
||||||
|
|
||||||
Ie, declared accounts first, in the order they were declared,
|
Undeclared accounts, if any, are displayed last, in alphabetical
|
||||||
followed by any undeclared accounts in alphabetic order.
|
order.
|
||||||
|
|
||||||
Note that sorting is done at each level of the account tree (within
|
Note that sorting is done at each level of the account tree (within
|
||||||
each group of sibling accounts under the same parent). This directive:
|
each group of sibling accounts under the same parent). And currently,
|
||||||
|
this directive:
|
||||||
|
|
||||||
account other:zoo
|
account other:zoo
|
||||||
|
|
||||||
would influence the position of 'zoo' among 'other''s subaccounts,
|
would influence the position of 'zoo' among 'other''s subaccounts,
|
||||||
but not the position of 'other' among the top-level accounts.
|
but not the position of 'other' among the top-level accounts. This
|
||||||
|
means: - you will sometimes declare parent accounts (eg 'account other'
|
||||||
|
above) that you don't intend to post to, just to customize their display
|
||||||
|
order - sibling accounts stay together (you couldn't display 'x:y' in
|
||||||
|
between 'a:b' and 'a:c').
|
||||||
|
|
||||||
|
|
||||||
File: hledger_journal.info, Node: Rewriting accounts, Next: Default parent account, Prev: Account display order, Up: Directives
|
File: hledger_journal.info, Node: Rewriting accounts, Next: Default parent account, Prev: Declaring accounts, Up: Directives
|
||||||
|
|
||||||
1.14.9 Rewriting accounts
|
1.14.8 Rewriting accounts
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
You can define account alias rules which rewrite your account names, or
|
You can define account alias rules which rewrite your account names, or
|
||||||
@ -1109,7 +1192,7 @@ hledger-web.
|
|||||||
|
|
||||||
File: hledger_journal.info, Node: Basic aliases, Next: Regex aliases, Up: Rewriting accounts
|
File: hledger_journal.info, Node: Basic aliases, Next: Regex aliases, Up: Rewriting accounts
|
||||||
|
|
||||||
1.14.9.1 Basic aliases
|
1.14.8.1 Basic aliases
|
||||||
......................
|
......................
|
||||||
|
|
||||||
To set an account alias, use the 'alias' directive in your journal file.
|
To set an account alias, use the 'alias' directive in your journal file.
|
||||||
@ -1132,7 +1215,7 @@ alias checking = assets:bank:wells fargo:checking
|
|||||||
|
|
||||||
File: hledger_journal.info, Node: Regex aliases, Next: Multiple aliases, Prev: Basic aliases, Up: Rewriting accounts
|
File: hledger_journal.info, Node: Regex aliases, Next: Multiple aliases, Prev: Basic aliases, Up: Rewriting accounts
|
||||||
|
|
||||||
1.14.9.2 Regex aliases
|
1.14.8.2 Regex aliases
|
||||||
......................
|
......................
|
||||||
|
|
||||||
There is also a more powerful variant that uses a regular expression,
|
There is also a more powerful variant that uses a regular expression,
|
||||||
@ -1157,7 +1240,7 @@ whitespace.
|
|||||||
|
|
||||||
File: hledger_journal.info, Node: Multiple aliases, Next: end aliases, Prev: Regex aliases, Up: Rewriting accounts
|
File: hledger_journal.info, Node: Multiple aliases, Next: end aliases, Prev: Regex aliases, Up: Rewriting accounts
|
||||||
|
|
||||||
1.14.9.3 Multiple aliases
|
1.14.8.3 Multiple aliases
|
||||||
.........................
|
.........................
|
||||||
|
|
||||||
You can define as many aliases as you like using directives or
|
You can define as many aliases as you like using directives or
|
||||||
@ -1173,7 +1256,7 @@ following order:
|
|||||||
|
|
||||||
File: hledger_journal.info, Node: end aliases, Prev: Multiple aliases, Up: Rewriting accounts
|
File: hledger_journal.info, Node: end aliases, Prev: Multiple aliases, Up: Rewriting accounts
|
||||||
|
|
||||||
1.14.9.4 'end aliases'
|
1.14.8.4 'end aliases'
|
||||||
......................
|
......................
|
||||||
|
|
||||||
You can clear (forget) all currently defined aliases with the 'end
|
You can clear (forget) all currently defined aliases with the 'end
|
||||||
@ -1184,8 +1267,8 @@ end aliases
|
|||||||
|
|
||||||
File: hledger_journal.info, Node: Default parent account, Prev: Rewriting accounts, Up: Directives
|
File: hledger_journal.info, Node: Default parent account, Prev: Rewriting accounts, Up: Directives
|
||||||
|
|
||||||
1.14.10 Default parent account
|
1.14.9 Default parent account
|
||||||
------------------------------
|
-----------------------------
|
||||||
|
|
||||||
You can specify a parent account which will be prepended to all accounts
|
You can specify a parent account which will be prepended to all accounts
|
||||||
within a section of the journal. Use the 'apply account' and 'end apply
|
within a section of the journal. Use the 'apply account' and 'end apply
|
||||||
@ -1245,13 +1328,22 @@ the date replaced by a tilde ('~') followed by a period expression
|
|||||||
date must fall on a natural boundary of the interval. Eg 'monthly from
|
date must fall on a natural boundary of the interval. Eg 'monthly from
|
||||||
2018/1/1' is valid, but 'monthly from 2018/1/15' is not.
|
2018/1/1' is valid, but 'monthly from 2018/1/15' is not.
|
||||||
|
|
||||||
If you write a transaction description or same-line comment, it must
|
Partial or relative dates (M/D, D, tomorrow, last week) in the period
|
||||||
be separated from the period expression by *two or more spaces*. Eg:
|
expression can work (useful or not). They will be relative to today's
|
||||||
|
date, unless a Y default year directive is in effect, in which case they
|
||||||
|
will be relative to Y/1/1.
|
||||||
|
|
||||||
|
Period expressions must be terminated by *two or more spaces* if
|
||||||
|
followed by additional fields. For example, the periodic transaction
|
||||||
|
given below includes a transaction description "paycheck", which is
|
||||||
|
separated from the period expression by a double space. If not for the
|
||||||
|
second space, hledger would attempt (and fail) to parse "paycheck" as a
|
||||||
|
part of the period expression.
|
||||||
|
|
||||||
; 2 or more spaces
|
; 2 or more spaces
|
||||||
; ||
|
; ||
|
||||||
; vv
|
; vv
|
||||||
~ every 2 weeks from 2018/6 to 2018/9 paycheck
|
~ every 2 weeks from 2018/6/4 to 2018/9 paycheck
|
||||||
assets:bank:checking $1500
|
assets:bank:checking $1500
|
||||||
income:acme inc
|
income:acme inc
|
||||||
|
|
||||||
@ -1330,38 +1422,64 @@ automatically to certain transactions. Currently, this means adding
|
|||||||
extra postings (also known as "automated postings"). Transaction
|
extra postings (also known as "automated postings"). Transaction
|
||||||
modifiers are enabled by the '--auto' flag.
|
modifiers are enabled by the '--auto' flag.
|
||||||
|
|
||||||
A transaction modifier rule looks a bit like a normal journal entry,
|
A transaction modifier rule looks quite like a normal transaction,
|
||||||
except the first line is an equal sign ('=') followed by a query
|
except the first line is an equals sign followed by a query that matches
|
||||||
(mnemonic: '=' suggests matching something.):
|
certain postings (mnemonic: '=' suggests matching). And each "posting"
|
||||||
|
is actually a posting-generating rule:
|
||||||
|
|
||||||
|
= QUERY
|
||||||
|
ACCT AMT
|
||||||
|
ACCT [AMT]
|
||||||
|
...
|
||||||
|
|
||||||
|
The posting rules look just like normal postings, except the amount
|
||||||
|
can be:
|
||||||
|
|
||||||
|
* a normal amount with a commodity symbol, eg '$2'. This will be
|
||||||
|
used as-is.
|
||||||
|
* a number, eg '2'. The commodity symbol (if any) from the matched
|
||||||
|
posting will be added to this.
|
||||||
|
* a numeric multiplier, eg '*2' (a star followed by a number N). The
|
||||||
|
matched posting's amount (and total price, if any) will be
|
||||||
|
multiplied by N.
|
||||||
|
* a multiplier with a commodity symbol, eg '*$2' (a star, number N,
|
||||||
|
and symbol S). The matched posting's amount will be multiplied by
|
||||||
|
N, and its commodity symbol will be replaced with S.
|
||||||
|
|
||||||
|
Some examples:
|
||||||
|
|
||||||
|
; every time I buy food, schedule a dollar donation
|
||||||
|
= expenses:food
|
||||||
|
(liabilities:charity) $-1
|
||||||
|
|
||||||
|
; when I buy a gift, also deduct that amount from a budget envelope subaccount
|
||||||
= expenses:gifts
|
= expenses:gifts
|
||||||
budget:gifts *-1
|
assets:checking:gifts *-1
|
||||||
assets:budget *1
|
assets:checking *1
|
||||||
|
|
||||||
The posting amounts can be of the form '*N', which means "the amount
|
2017/12/1
|
||||||
of the matched transaction's first posting, multiplied by N". They can
|
expenses:food $10
|
||||||
also be ordinary fixed amounts. Fixed amounts with no commodity symbol
|
assets:checking
|
||||||
will be given the same commodity as the matched transaction's first
|
|
||||||
posting.
|
|
||||||
|
|
||||||
This example adds a corresponding (unbalanced) budget posting to
|
|
||||||
every transaction involving the 'expenses:gifts' account:
|
|
||||||
|
|
||||||
= expenses:gifts
|
|
||||||
(budget:gifts) *-1
|
|
||||||
|
|
||||||
2017-12-14
|
|
||||||
expenses:gifts $20
|
|
||||||
assets
|
|
||||||
|
|
||||||
$ hledger print --auto
|
|
||||||
2017/12/14
|
2017/12/14
|
||||||
expenses:gifts $20
|
expenses:gifts $20
|
||||||
(budget:gifts) $-20
|
assets:checking
|
||||||
assets
|
|
||||||
|
|
||||||
Like postings recorded by hand, automated postings participate in
|
$ hledger print --auto
|
||||||
transaction balancing, missing amount inference and balance assertions.
|
2017/12/01
|
||||||
|
expenses:food $10
|
||||||
|
assets:checking
|
||||||
|
(liabilities:charity) $-1
|
||||||
|
|
||||||
|
2017/12/14
|
||||||
|
expenses:gifts $20
|
||||||
|
assets:checking
|
||||||
|
assets:checking:gifts -$20
|
||||||
|
assets:checking $20
|
||||||
|
|
||||||
|
Postings added by transaction modifiers participate in transaction
|
||||||
|
balancing, missing amount inference and balance assertions, like regular
|
||||||
|
postings.
|
||||||
|
|
||||||
|
|
||||||
File: hledger_journal.info, Node: EDITOR SUPPORT, Prev: FILE FORMAT, Up: Top
|
File: hledger_journal.info, Node: EDITOR SUPPORT, Prev: FILE FORMAT, Up: Top
|
||||||
@ -1393,93 +1511,97 @@ Code
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top76
|
Node: Top76
|
||||||
Node: FILE FORMAT2378
|
Node: FILE FORMAT2372
|
||||||
Ref: #file-format2502
|
Ref: #file-format2496
|
||||||
Node: Transactions2789
|
Node: Transactions2783
|
||||||
Ref: #transactions2910
|
Ref: #transactions2904
|
||||||
Node: Postings3594
|
Node: Postings3588
|
||||||
Ref: #postings3721
|
Ref: #postings3715
|
||||||
Node: Dates4716
|
Node: Dates4710
|
||||||
Ref: #dates4831
|
Ref: #dates4825
|
||||||
Node: Simple dates4896
|
Node: Simple dates4890
|
||||||
Ref: #simple-dates5022
|
Ref: #simple-dates5016
|
||||||
Node: Secondary dates5388
|
Node: Secondary dates5382
|
||||||
Ref: #secondary-dates5542
|
Ref: #secondary-dates5536
|
||||||
Node: Posting dates7105
|
Node: Posting dates7099
|
||||||
Ref: #posting-dates7234
|
Ref: #posting-dates7228
|
||||||
Node: Status8608
|
Node: Status8602
|
||||||
Ref: #status8728
|
Ref: #status8722
|
||||||
Node: Description10436
|
Node: Description10430
|
||||||
Ref: #description10574
|
Ref: #description10568
|
||||||
Node: Payee and note10893
|
Node: Payee and note10887
|
||||||
Ref: #payee-and-note11007
|
Ref: #payee-and-note11001
|
||||||
Node: Account names11249
|
Node: Account names11243
|
||||||
Ref: #account-names11392
|
Ref: #account-names11386
|
||||||
Node: Amounts11879
|
Node: Amounts11873
|
||||||
Ref: #amounts12015
|
Ref: #amounts12009
|
||||||
Node: Virtual Postings15032
|
Node: Virtual Postings15026
|
||||||
Ref: #virtual-postings15191
|
Ref: #virtual-postings15185
|
||||||
Node: Balance Assertions16411
|
Node: Balance Assertions16405
|
||||||
Ref: #balance-assertions16586
|
Ref: #balance-assertions16580
|
||||||
Node: Assertions and ordering17482
|
Node: Assertions and ordering17476
|
||||||
Ref: #assertions-and-ordering17668
|
Ref: #assertions-and-ordering17662
|
||||||
Node: Assertions and included files18368
|
Node: Assertions and included files18362
|
||||||
Ref: #assertions-and-included-files18609
|
Ref: #assertions-and-included-files18603
|
||||||
Node: Assertions and multiple -f options18942
|
Node: Assertions and multiple -f options18936
|
||||||
Ref: #assertions-and-multiple--f-options19196
|
Ref: #assertions-and-multiple--f-options19190
|
||||||
Node: Assertions and commodities19328
|
Node: Assertions and commodities19322
|
||||||
Ref: #assertions-and-commodities19563
|
Ref: #assertions-and-commodities19557
|
||||||
Node: Assertions and subaccounts20259
|
Node: Assertions and subaccounts20745
|
||||||
Ref: #assertions-and-subaccounts20491
|
Ref: #assertions-and-subaccounts20977
|
||||||
Node: Assertions and virtual postings21012
|
Node: Assertions and virtual postings21498
|
||||||
Ref: #assertions-and-virtual-postings21219
|
Ref: #assertions-and-virtual-postings21705
|
||||||
Node: Balance Assignments21361
|
Node: Balance Assignments21847
|
||||||
Ref: #balance-assignments21542
|
Ref: #balance-assignments22028
|
||||||
Node: Transaction prices22662
|
Node: Transaction prices23148
|
||||||
Ref: #transaction-prices22831
|
Ref: #transaction-prices23317
|
||||||
Node: Comments25099
|
Node: Comments25585
|
||||||
Ref: #comments25233
|
Ref: #comments25719
|
||||||
Node: Tags26403
|
Node: Tags26889
|
||||||
Ref: #tags26521
|
Ref: #tags27007
|
||||||
Node: Directives27923
|
Node: Directives28409
|
||||||
Ref: #directives28066
|
Ref: #directives28552
|
||||||
Node: Comment blocks33948
|
Node: Comment blocks34159
|
||||||
Ref: #comment-blocks34093
|
Ref: #comment-blocks34304
|
||||||
Node: Including other files34269
|
Node: Including other files34480
|
||||||
Ref: #including-other-files34449
|
Ref: #including-other-files34660
|
||||||
Node: Default year34857
|
Node: Default year35068
|
||||||
Ref: #default-year35026
|
Ref: #default-year35237
|
||||||
Node: Declaring commodities35449
|
Node: Declaring commodities35660
|
||||||
Ref: #declaring-commodities35632
|
Ref: #declaring-commodities35843
|
||||||
Node: Default commodity36859
|
Node: Default commodity37070
|
||||||
Ref: #default-commodity37035
|
Ref: #default-commodity37246
|
||||||
Node: Market prices37671
|
Node: Market prices37882
|
||||||
Ref: #market-prices37836
|
Ref: #market-prices38047
|
||||||
Node: Declaring accounts38677
|
Node: Declaring accounts38888
|
||||||
Ref: #declaring-accounts38856
|
Ref: #declaring-accounts39064
|
||||||
Node: Account display order39406
|
Node: Account types40021
|
||||||
Ref: #account-display-order39596
|
Ref: #account-types40170
|
||||||
Node: Rewriting accounts40617
|
Node: Account comments41244
|
||||||
Ref: #rewriting-accounts40805
|
Ref: #account-comments41429
|
||||||
Node: Basic aliases41539
|
Node: Account display order41750
|
||||||
Ref: #basic-aliases41685
|
Ref: #account-display-order41923
|
||||||
Node: Regex aliases42389
|
Node: Rewriting accounts43045
|
||||||
Ref: #regex-aliases42560
|
Ref: #rewriting-accounts43230
|
||||||
Node: Multiple aliases43278
|
Node: Basic aliases43964
|
||||||
Ref: #multiple-aliases43453
|
Ref: #basic-aliases44110
|
||||||
Node: end aliases43951
|
Node: Regex aliases44814
|
||||||
Ref: #end-aliases44098
|
Ref: #regex-aliases44985
|
||||||
Node: Default parent account44199
|
Node: Multiple aliases45703
|
||||||
Ref: #default-parent-account44367
|
Ref: #multiple-aliases45878
|
||||||
Node: Periodic transactions45251
|
Node: end aliases46376
|
||||||
Ref: #periodic-transactions45433
|
Ref: #end-aliases46523
|
||||||
Node: Forecasting with periodic transactions46644
|
Node: Default parent account46624
|
||||||
Ref: #forecasting-with-periodic-transactions46887
|
Ref: #default-parent-account46790
|
||||||
Node: Budgeting with periodic transactions48574
|
Node: Periodic transactions47674
|
||||||
Ref: #budgeting-with-periodic-transactions48813
|
Ref: #periodic-transactions47856
|
||||||
Node: Transaction Modifiers49272
|
Node: Forecasting with periodic transactions49559
|
||||||
Ref: #transaction-modifiers49435
|
Ref: #forecasting-with-periodic-transactions49802
|
||||||
Node: EDITOR SUPPORT50691
|
Node: Budgeting with periodic transactions51489
|
||||||
Ref: #editor-support50809
|
Ref: #budgeting-with-periodic-transactions51728
|
||||||
|
Node: Transaction Modifiers52187
|
||||||
|
Ref: #transaction-modifiers52350
|
||||||
|
Node: EDITOR SUPPORT54331
|
||||||
|
Ref: #editor-support54449
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|||||||
@ -405,16 +405,46 @@ FILE FORMAT
|
|||||||
Assertions and commodities
|
Assertions and commodities
|
||||||
The asserted balance must be a simple single-commodity amount, and in
|
The asserted balance must be a simple single-commodity amount, and in
|
||||||
fact the assertion checks only this commodity's balance within the
|
fact the assertion checks only this commodity's balance within the
|
||||||
(possibly multi-commodity) account balance. We could call this a par-
|
(possibly multi-commodity) account balance.
|
||||||
tial balance assertion. This is compatible with Ledger, and makes it
|
This is how assertions work in Ledger also. We could call this a "par-
|
||||||
possible to make assertions about accounts containing multiple commodi-
|
tial" balance assertion.
|
||||||
ties.
|
|
||||||
|
|
||||||
To assert each commodity's balance in such a multi-commodity account,
|
To assert the balance of more than one commodity in an account, you can
|
||||||
you can add multiple postings (with amount 0 if necessary). But note
|
write multiple postings, each asserting one commodity's balance.
|
||||||
that no matter how many assertions you add, you can't be sure the
|
|
||||||
account does not contain some unexpected commodity. (We'll add support
|
You can make a stronger kind of balance assertion, by writing a double
|
||||||
for this kind of total balance assertion if there's demand.)
|
equals sign (==EXPECTEDBALANCE). This "complete" balance assertion
|
||||||
|
asserts the absence of other commodities (or, that their balance is 0,
|
||||||
|
which to hledger is equivalent.)
|
||||||
|
|
||||||
|
2013/1/1
|
||||||
|
a $1
|
||||||
|
a 1
|
||||||
|
b $-1
|
||||||
|
c -1
|
||||||
|
|
||||||
|
2013/1/2 ; These assertions succeed
|
||||||
|
a 0 = $1
|
||||||
|
a 0 = 1
|
||||||
|
b 0 == $-1
|
||||||
|
c 0 == -1
|
||||||
|
|
||||||
|
2013/1/3 ; This assertion fails as 'a' also contains 1
|
||||||
|
a 0 == $1
|
||||||
|
|
||||||
|
It's not yet possible to make a complete assertion about a balance that
|
||||||
|
has multiple commodities. One workaround is to isolate each commodity
|
||||||
|
into its own subaccount:
|
||||||
|
|
||||||
|
2013/1/1
|
||||||
|
a:usd $1
|
||||||
|
a:euro 1
|
||||||
|
b
|
||||||
|
|
||||||
|
2013/1/2
|
||||||
|
a 0 == 0
|
||||||
|
a:usd 0 == $1
|
||||||
|
a:euro 0 == 1
|
||||||
|
|
||||||
Assertions and subaccounts
|
Assertions and subaccounts
|
||||||
Balance assertions do not count the balance from subaccounts; they
|
Balance assertions do not count the balance from subaccounts; they
|
||||||
@ -614,10 +644,9 @@ FILE FORMAT
|
|||||||
tive directive rec- 2018/06)
|
tive directive rec- 2018/06)
|
||||||
tives
|
tives
|
||||||
-------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------
|
||||||
account any declare an account name & account code: bal-
|
account any document account names, all entries in all
|
||||||
text optional account code ance reports
|
text declare account types & dis- files, before or
|
||||||
(except balance
|
play order after
|
||||||
single-column mode)
|
|
||||||
alias end aliases rewrite account names following
|
alias end aliases rewrite account names following
|
||||||
inline/included
|
inline/included
|
||||||
entries until end
|
entries until end
|
||||||
@ -640,6 +669,18 @@ FILE FORMAT
|
|||||||
play style: amounts
|
play style: amounts
|
||||||
of that commodity
|
of that commodity
|
||||||
in reports
|
in reports
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
D declare a commodity, number commodity: all com-
|
D declare a commodity, number commodity: all com-
|
||||||
notation & display style for modityless entries
|
notation & display style for modityless entries
|
||||||
commodityless amounts in all files; num-
|
commodityless amounts in all files; num-
|
||||||
@ -666,13 +707,8 @@ FILE FORMAT
|
|||||||
And some definitions:
|
And some definitions:
|
||||||
|
|
||||||
|
|
||||||
subdirec- optional indented directive or unparsed text lines immedi-
|
subdirec- optional indented directive line immediately following a par-
|
||||||
tive ately following a parent directive
|
tive ent directive
|
||||||
account numeric code influencing account display order in most bal-
|
|
||||||
code ance reports
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
number how to interpret numbers when parsing journal entries (the
|
number how to interpret numbers when parsing journal entries (the
|
||||||
notation identity of the decimal separator character). (Currently
|
notation identity of the decimal separator character). (Currently
|
||||||
each commodity can have its own notation, even in the same
|
each commodity can have its own notation, even in the same
|
||||||
@ -810,42 +846,84 @@ FILE FORMAT
|
|||||||
commodity using these prices.
|
commodity using these prices.
|
||||||
|
|
||||||
Declaring accounts
|
Declaring accounts
|
||||||
The account directive predeclares account names. The simplest form is
|
account directives can be used to pre-declare some or all accounts.
|
||||||
account ACCTNAME, eg:
|
Though not required, they can provide several benefits:
|
||||||
|
|
||||||
|
o They can document your intended chart of accounts, providing a refer-
|
||||||
|
ence.
|
||||||
|
|
||||||
|
o They can store extra information about accounts (account numbers,
|
||||||
|
notes, etc.)
|
||||||
|
|
||||||
|
o They can help hledger know your accounts' types (asset, liability,
|
||||||
|
equity, revenue, expense), useful for reports like balancesheet and
|
||||||
|
incomestatement.
|
||||||
|
|
||||||
|
o They control account display order in reports, allowing non-alpha-
|
||||||
|
betic sorting (eg Revenues to appear above Expenses).
|
||||||
|
|
||||||
|
o They help with account name completion in the add command,
|
||||||
|
hledger-iadd, hledger-web, ledger-mode etc.
|
||||||
|
|
||||||
|
Here is the full syntax:
|
||||||
|
|
||||||
|
account ACCTNAME [ACCTTYPE]
|
||||||
|
[COMMENTS]
|
||||||
|
|
||||||
|
The simplest form just declares a hledger-style account name, eg:
|
||||||
|
|
||||||
account assets:bank:checking
|
account assets:bank:checking
|
||||||
|
|
||||||
Currently this mainly helps with account name autocompletion in eg
|
Account types
|
||||||
hledger add, hledger-iadd, hledger-web, and ledger-mode.
|
hledger recognises five types of account: asset, liability, equity,
|
||||||
In future it will also help detect misspelled accounts.
|
revenue, expense. This is useful for certain accounting-aware reports,
|
||||||
|
in particular balancesheet, incomestatement and cashflow.
|
||||||
|
|
||||||
An account directive can also have indented subdirectives following it,
|
If you name your top-level accounts with some variation of assets, lia-
|
||||||
which are currently ignored. Here is the full syntax:
|
bilities/debts, equity, revenues/income, or expenses, their types are
|
||||||
|
detected automatically.
|
||||||
|
|
||||||
; account ACCTNAME
|
More generally, you can declare an account's type by adding one of the
|
||||||
; [OPTIONALSUBDIRECTIVES]
|
letters ALERX to its account directive, separated from the account name
|
||||||
|
by two or more spaces. Eg:
|
||||||
|
|
||||||
|
account assets A
|
||||||
|
account liabilities L
|
||||||
|
account equity E
|
||||||
|
account revenues R
|
||||||
|
account expenses X
|
||||||
|
|
||||||
|
Note: if you ever override the types of those auto-detected english
|
||||||
|
account names mentioned above, you might need to help the reports a
|
||||||
|
bit:
|
||||||
|
|
||||||
|
; make "liabilities" not have the liability type, who knows why
|
||||||
|
account liabilities E
|
||||||
|
|
||||||
|
; better ensure some other account has the liability type,
|
||||||
|
; otherwise balancesheet would still show "liabilities" under Liabilities
|
||||||
|
account - L
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
Account comments
|
||||||
|
An account directive can also have indented comments on following
|
||||||
|
lines, eg:
|
||||||
|
|
||||||
account assets:bank:checking
|
account assets:bank:checking
|
||||||
a comment
|
; acctno:12345
|
||||||
some-tag:12345
|
; a comment
|
||||||
|
|
||||||
|
We also allow (and ignore) Ledger-style subdirectives, with no leading
|
||||||
|
semicolon, for compatibility.
|
||||||
|
|
||||||
|
Tags in account comments, like acctno above, currently have no effect.
|
||||||
|
|
||||||
Account display order
|
Account display order
|
||||||
Account directives have another purpose: they set the order in which
|
Account directives also set the order in which accounts are displayed
|
||||||
accounts are displayed, in hledger reports, hledger-ui accounts screen,
|
in reports, the hledger-ui accounts screen, the hledger-web sidebar,
|
||||||
hledger-web sidebar etc. For example, say you have these top-level
|
etc. Normally accounts are listed in alphabetical order, but if you
|
||||||
accounts:
|
have eg these account directives in the journal:
|
||||||
|
|
||||||
$ accounts -1
|
|
||||||
assets
|
|
||||||
equity
|
|
||||||
expenses
|
|
||||||
liabilities
|
|
||||||
misc
|
|
||||||
other
|
|
||||||
revenues
|
|
||||||
|
|
||||||
By default, they are displayed in alphabetical order. But if you add
|
|
||||||
the following account directives to the journal:
|
|
||||||
|
|
||||||
account assets
|
account assets
|
||||||
account liabilities
|
account liabilities
|
||||||
@ -853,27 +931,30 @@ FILE FORMAT
|
|||||||
account revenues
|
account revenues
|
||||||
account expenses
|
account expenses
|
||||||
|
|
||||||
the display order changes to:
|
you'll see those accounts listed in declaration order, not alphabeti-
|
||||||
|
cally:
|
||||||
|
|
||||||
$ accounts -1
|
$ hledger accounts -1
|
||||||
assets
|
assets
|
||||||
liabilities
|
liabilities
|
||||||
equity
|
equity
|
||||||
revenues
|
revenues
|
||||||
expenses
|
expenses
|
||||||
misc
|
|
||||||
other
|
|
||||||
|
|
||||||
Ie, declared accounts first, in the order they were declared, followed
|
Undeclared accounts, if any, are displayed last, in alphabetical order.
|
||||||
by any undeclared accounts in alphabetic order.
|
|
||||||
|
|
||||||
Note that sorting is done at each level of the account tree (within
|
Note that sorting is done at each level of the account tree (within
|
||||||
each group of sibling accounts under the same parent). This directive:
|
each group of sibling accounts under the same parent). And currently,
|
||||||
|
this directive:
|
||||||
|
|
||||||
account other:zoo
|
account other:zoo
|
||||||
|
|
||||||
would influence the position of zoo among other's subaccounts, but not
|
would influence the position of zoo among other's subaccounts, but not
|
||||||
the position of other among the top-level accounts.
|
the position of other among the top-level accounts. This means: - you
|
||||||
|
will sometimes declare parent accounts (eg account other above) that
|
||||||
|
you don't intend to post to, just to customize their display order -
|
||||||
|
sibling accounts stay together (you couldn't display x:y in between a:b
|
||||||
|
and a:c).
|
||||||
|
|
||||||
Rewriting accounts
|
Rewriting accounts
|
||||||
You can define account alias rules which rewrite your account names, or
|
You can define account alias rules which rewrite your account names, or
|
||||||
@ -1004,13 +1085,22 @@ FILE FORMAT
|
|||||||
date must fall on a natural boundary of the interval. Eg
|
date must fall on a natural boundary of the interval. Eg
|
||||||
monthly from 2018/1/1 is valid, but monthly from 2018/1/15 is not.
|
monthly from 2018/1/1 is valid, but monthly from 2018/1/15 is not.
|
||||||
|
|
||||||
If you write a transaction description or same-line comment, it must be
|
Partial or relative dates (M/D, D, tomorrow, last week) in the period
|
||||||
separated from the period expression by two or more spaces. Eg:
|
expression can work (useful or not). They will be relative to today's
|
||||||
|
date, unless a Y default year directive is in effect, in which case
|
||||||
|
they will be relative to Y/1/1.
|
||||||
|
|
||||||
|
Period expressions must be terminated by two or more spaces if followed
|
||||||
|
by additional fields. For example, the periodic transaction given
|
||||||
|
below includes a transaction description "paycheck", which is separated
|
||||||
|
from the period expression by a double space. If not for the second
|
||||||
|
space, hledger would attempt (and fail) to parse "paycheck" as a part
|
||||||
|
of the period expression.
|
||||||
|
|
||||||
; 2 or more spaces
|
; 2 or more spaces
|
||||||
; ||
|
; ||
|
||||||
; vv
|
; vv
|
||||||
~ every 2 weeks from 2018/6 to 2018/9 paycheck
|
~ every 2 weeks from 2018/6/4 to 2018/9 paycheck
|
||||||
assets:bank:checking $1500
|
assets:bank:checking $1500
|
||||||
income:acme inc
|
income:acme inc
|
||||||
|
|
||||||
@ -1071,38 +1161,67 @@ FILE FORMAT
|
|||||||
extra postings (also known as "automated postings"). Transaction modi-
|
extra postings (also known as "automated postings"). Transaction modi-
|
||||||
fiers are enabled by the --auto flag.
|
fiers are enabled by the --auto flag.
|
||||||
|
|
||||||
A transaction modifier rule looks a bit like a normal journal entry,
|
A transaction modifier rule looks quite like a normal transaction,
|
||||||
except the first line is an equal sign (=) followed by a query
|
except the first line is an equals sign followed by a query that
|
||||||
(mnemonic: = suggests matching something.):
|
matches certain postings (mnemonic: = suggests matching). And each
|
||||||
|
"posting" is actually a posting-generating rule:
|
||||||
|
|
||||||
|
= QUERY
|
||||||
|
ACCT AMT
|
||||||
|
ACCT [AMT]
|
||||||
|
...
|
||||||
|
|
||||||
|
The posting rules look just like normal postings, except the amount can
|
||||||
|
be:
|
||||||
|
|
||||||
|
o a normal amount with a commodity symbol, eg $2. This will be used
|
||||||
|
as-is.
|
||||||
|
|
||||||
|
o a number, eg 2. The commodity symbol (if any) from the matched post-
|
||||||
|
ing will be added to this.
|
||||||
|
|
||||||
|
o a numeric multiplier, eg *2 (a star followed by a number N). The
|
||||||
|
matched posting's amount (and total price, if any) will be multiplied
|
||||||
|
by N.
|
||||||
|
|
||||||
|
o a multiplier with a commodity symbol, eg *$2 (a star, number N, and
|
||||||
|
symbol S). The matched posting's amount will be multiplied by N, and
|
||||||
|
its commodity symbol will be replaced with S.
|
||||||
|
|
||||||
|
Some examples:
|
||||||
|
|
||||||
|
; every time I buy food, schedule a dollar donation
|
||||||
|
= expenses:food
|
||||||
|
(liabilities:charity) $-1
|
||||||
|
|
||||||
|
; when I buy a gift, also deduct that amount from a budget envelope subaccount
|
||||||
= expenses:gifts
|
= expenses:gifts
|
||||||
budget:gifts *-1
|
assets:checking:gifts *-1
|
||||||
assets:budget *1
|
assets:checking *1
|
||||||
|
|
||||||
The posting amounts can be of the form *N, which means "the amount of
|
2017/12/1
|
||||||
the matched transaction's first posting, multiplied by N". They can
|
expenses:food $10
|
||||||
also be ordinary fixed amounts. Fixed amounts with no commodity symbol
|
assets:checking
|
||||||
will be given the same commodity as the matched transaction's first
|
|
||||||
posting.
|
|
||||||
|
|
||||||
This example adds a corresponding (unbalanced) budget posting to every
|
|
||||||
transaction involving the expenses:gifts account:
|
|
||||||
|
|
||||||
= expenses:gifts
|
|
||||||
(budget:gifts) *-1
|
|
||||||
|
|
||||||
2017-12-14
|
|
||||||
expenses:gifts $20
|
|
||||||
assets
|
|
||||||
|
|
||||||
$ hledger print --auto
|
|
||||||
2017/12/14
|
2017/12/14
|
||||||
expenses:gifts $20
|
expenses:gifts $20
|
||||||
(budget:gifts) $-20
|
assets:checking
|
||||||
assets
|
|
||||||
|
|
||||||
Like postings recorded by hand, automated postings participate in
|
$ hledger print --auto
|
||||||
transaction balancing, missing amount inference and balance assertions.
|
2017/12/01
|
||||||
|
expenses:food $10
|
||||||
|
assets:checking
|
||||||
|
(liabilities:charity) $-1
|
||||||
|
|
||||||
|
2017/12/14
|
||||||
|
expenses:gifts $20
|
||||||
|
assets:checking
|
||||||
|
assets:checking:gifts -$20
|
||||||
|
assets:checking $20
|
||||||
|
|
||||||
|
Postings added by transaction modifiers participate in transaction bal-
|
||||||
|
ancing, missing amount inference and balance assertions, like regular
|
||||||
|
postings.
|
||||||
|
|
||||||
EDITOR SUPPORT
|
EDITOR SUPPORT
|
||||||
Add-on modes exist for various text editors, to make working with jour-
|
Add-on modes exist for various text editors, to make working with jour-
|
||||||
@ -1151,4 +1270,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger 1.11.99 September 2018 hledger_journal(5)
|
hledger 1.12 December 2018 hledger_journal(5)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
.TH "hledger_timeclock" "5" "September 2018" "hledger 1.11.99" "hledger User Manuals"
|
.TH "hledger_timeclock" "5" "December 2018" "hledger 1.12" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,8 +4,8 @@ stdin.
|
|||||||
|
|
||||||
File: hledger_timeclock.info, Node: Top, Up: (dir)
|
File: hledger_timeclock.info, Node: Top, Up: (dir)
|
||||||
|
|
||||||
hledger_timeclock(5) hledger 1.11.99
|
hledger_timeclock(5) hledger 1.12
|
||||||
************************************
|
*********************************
|
||||||
|
|
||||||
hledger can read timeclock files. As with Ledger, these are (a subset
|
hledger can read timeclock files. As with Ledger, these are (a subset
|
||||||
of) timeclock.el's format, containing clock-in and clock-out entries as
|
of) timeclock.el's format, containing clock-in and clock-out entries as
|
||||||
|
|||||||
@ -77,4 +77,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger 1.11.99 September 2018 hledger_timeclock(5)
|
hledger 1.12 December 2018 hledger_timeclock(5)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
.TH "hledger_timedot" "5" "September 2018" "hledger 1.11.99" "hledger User Manuals"
|
.TH "hledger_timedot" "5" "December 2018" "hledger 1.12" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,8 +4,8 @@ stdin.
|
|||||||
|
|
||||||
File: hledger_timedot.info, Node: Top, Next: FILE FORMAT, Up: (dir)
|
File: hledger_timedot.info, Node: Top, Next: FILE FORMAT, Up: (dir)
|
||||||
|
|
||||||
hledger_timedot(5) hledger 1.11.99
|
hledger_timedot(5) hledger 1.12
|
||||||
**********************************
|
*******************************
|
||||||
|
|
||||||
Timedot is a plain text format for logging dated, categorised quantities
|
Timedot is a plain text format for logging dated, categorised quantities
|
||||||
(of time, usually), supported by hledger. It is convenient for
|
(of time, usually), supported by hledger. It is convenient for
|
||||||
@ -110,7 +110,7 @@ $ hledger -f t.timedot --alias /\\./=: bal date:2016/2/4
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top76
|
Node: Top76
|
||||||
Node: FILE FORMAT813
|
Node: FILE FORMAT807
|
||||||
Ref: #file-format914
|
Ref: #file-format908
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|||||||
@ -124,4 +124,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger 1.11.99 September 2018 hledger_timedot(5)
|
hledger 1.12 December 2018 hledger_timedot(5)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
.TH "hledger\-ui" "1" "September 2018" "hledger\-ui 1.11.99" "hledger User Manuals"
|
.TH "hledger\-ui" "1" "December 2018" "hledger\-ui 1.12" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@ This is hledger-ui.info, produced by makeinfo version 6.5 from stdin.
|
|||||||
|
|
||||||
File: hledger-ui.info, Node: Top, Next: OPTIONS, Up: (dir)
|
File: hledger-ui.info, Node: Top, Next: OPTIONS, Up: (dir)
|
||||||
|
|
||||||
hledger-ui(1) hledger-ui 1.11.99
|
hledger-ui(1) hledger-ui 1.12
|
||||||
********************************
|
*****************************
|
||||||
|
|
||||||
hledger-ui is hledger's curses-style interface, providing an efficient
|
hledger-ui is hledger's curses-style interface, providing an efficient
|
||||||
full-window text UI for viewing accounts and transactions, and some
|
full-window text UI for viewing accounts and transactions, and some
|
||||||
@ -396,19 +396,19 @@ to cancel the reload attempt.)
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top71
|
Node: Top71
|
||||||
Node: OPTIONS1090
|
Node: OPTIONS1084
|
||||||
Ref: #options1187
|
Ref: #options1181
|
||||||
Node: KEYS4606
|
Node: KEYS4600
|
||||||
Ref: #keys4701
|
Ref: #keys4695
|
||||||
Node: SCREENS7957
|
Node: SCREENS7951
|
||||||
Ref: #screens8042
|
Ref: #screens8036
|
||||||
Node: Accounts screen8132
|
Node: Accounts screen8126
|
||||||
Ref: #accounts-screen8260
|
Ref: #accounts-screen8254
|
||||||
Node: Register screen10476
|
Node: Register screen10470
|
||||||
Ref: #register-screen10631
|
Ref: #register-screen10625
|
||||||
Node: Transaction screen12628
|
Node: Transaction screen12622
|
||||||
Ref: #transaction-screen12786
|
Ref: #transaction-screen12780
|
||||||
Node: Error screen13656
|
Node: Error screen13650
|
||||||
Ref: #error-screen13778
|
Ref: #error-screen13772
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|||||||
@ -404,4 +404,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger-ui 1.11.99 September 2018 hledger-ui(1)
|
hledger-ui 1.12 December 2018 hledger-ui(1)
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
.TH "hledger\-web" "1" "September 2018" "hledger\-web 1.11.99" "hledger User Manuals"
|
.TH "hledger\-web" "1" "December 2018" "hledger\-web 1.12" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@ This is hledger-web.info, produced by makeinfo version 6.5 from stdin.
|
|||||||
|
|
||||||
File: hledger-web.info, Node: Top, Next: OPTIONS, Up: (dir)
|
File: hledger-web.info, Node: Top, Next: OPTIONS, Up: (dir)
|
||||||
|
|
||||||
hledger-web(1) hledger-web 1.11.99
|
hledger-web(1) hledger-web 1.12
|
||||||
**********************************
|
*******************************
|
||||||
|
|
||||||
hledger-web is hledger's web interface. It starts a simple web
|
hledger-web is hledger's web interface. It starts a simple web
|
||||||
application for browsing and adding transactions, and optionally opens
|
application for browsing and adding transactions, and optionally opens
|
||||||
@ -212,7 +212,7 @@ this, insert a '--' argument before.)
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top72
|
Node: Top72
|
||||||
Node: OPTIONS3160
|
Node: OPTIONS3154
|
||||||
Ref: #options3245
|
Ref: #options3239
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|||||||
@ -251,4 +251,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger-web 1.11.99 September 2018 hledger-web(1)
|
hledger-web 1.12 December 2018 hledger-web(1)
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
.\"t
|
.\"t
|
||||||
|
|
||||||
.TH "hledger" "1" "September 2018" "hledger 1.11.99" "hledger User Manuals"
|
.TH "hledger" "1" "December 2018" "hledger 1.12" "hledger User Manuals"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -344,46 +344,125 @@ line.
|
|||||||
To prevent this expansion of \f[C]\@\f[]\-arguments, precede them with a
|
To prevent this expansion of \f[C]\@\f[]\-arguments, precede them with a
|
||||||
\f[C]\-\-\f[] argument.
|
\f[C]\-\-\f[] argument.
|
||||||
For more, see Save frequently used options.
|
For more, see Save frequently used options.
|
||||||
.SS Special characters
|
.SS Special characters in arguments and queries
|
||||||
.PP
|
.PP
|
||||||
Option and argument values which contain problematic characters should
|
In shell command lines, option and argument values which contain
|
||||||
be escaped with double quotes, backslashes, or (best) single quotes.
|
\[lq]problematic\[rq] characters, ie spaces, and also characters
|
||||||
Problematic characters means spaces, and also characters which are
|
significant to your shell such as \f[C]<\f[], \f[C]>\f[], \f[C](\f[],
|
||||||
significant to your command shell, such as less\-than/greater\-than.
|
\f[C])\f[], \f[C]|\f[] and \f[C]$\f[], should be escaped by enclosing
|
||||||
|
them in quotes or by writing backslashes before the characters.
|
||||||
Eg:
|
Eg:
|
||||||
\f[C]hledger\ register\ \-p\ \[aq]last\ year\[aq]\ "accounts\ receivable\ (receivable|payable)"\ amt:\\>100\f[].
|
|
||||||
.PP
|
.PP
|
||||||
Characters which are significant both to the shell and in regular
|
\f[C]hledger\ register\ \-p\ \[aq]last\ year\[aq]\ "accounts\ receivable\ (receivable|payable)"\ amt:\\>100\f[].
|
||||||
expressions sometimes need to be double\-escaped.
|
.SS More escaping
|
||||||
|
.PP
|
||||||
|
Characters significant both to the shell and in regular expressions may
|
||||||
|
need one extra level of escaping.
|
||||||
These include parentheses, the pipe symbol and the dollar sign.
|
These include parentheses, the pipe symbol and the dollar sign.
|
||||||
Eg, to match the dollar symbol, bash users should do:
|
Eg, to match the dollar symbol, bash users should do:
|
||||||
\f[C]hledger\ balance\ cur:\[aq]\\$\[aq]\f[] or
|
|
||||||
\f[C]hledger\ balance\ cur:\\\\$\f[].
|
|
||||||
.PP
|
.PP
|
||||||
When hledger is invoking an addon executable (like hledger\-ui), options
|
\f[C]hledger\ balance\ cur:\[aq]\\$\[aq]\f[]
|
||||||
and arguments get de\-escaped once more, so you might need
|
.PP
|
||||||
\f[I]triple\f[]\-escaping.
|
or:
|
||||||
Eg: \f[C]hledger\ ui\ cur:\[aq]\\\\$\[aq]\f[] or
|
.PP
|
||||||
\f[C]hledger\ ui\ cur:\\\\\\\\$\f[] in bash.
|
\f[C]hledger\ balance\ cur:\\\\$\f[]
|
||||||
|
.SS Even more escaping
|
||||||
|
.PP
|
||||||
|
When hledger runs an addon executable (eg you type \f[C]hledger\ ui\f[],
|
||||||
|
hledger runs \f[C]hledger\-ui\f[]), it de\-escapes command\-line options
|
||||||
|
and arguments once, so you might need to \f[I]triple\f[]\-escape.
|
||||||
|
Eg in bash, running the ui command and matching the dollar sign, it's:
|
||||||
|
.PP
|
||||||
|
\f[C]hledger\ ui\ cur:\[aq]\\\\$\[aq]\f[]
|
||||||
|
.PP
|
||||||
|
or:
|
||||||
|
.PP
|
||||||
|
\f[C]hledger\ ui\ cur:\\\\\\\\$\f[]
|
||||||
|
.PP
|
||||||
|
If you asked why \f[I]four\f[] slashes above, this may help:
|
||||||
|
.PP
|
||||||
|
.TS
|
||||||
|
tab(@);
|
||||||
|
l l.
|
||||||
|
T{
|
||||||
|
unescaped:
|
||||||
|
T}@T{
|
||||||
|
\f[C]$\f[]
|
||||||
|
T}
|
||||||
|
T{
|
||||||
|
escaped:
|
||||||
|
T}@T{
|
||||||
|
\f[C]\\$\f[]
|
||||||
|
T}
|
||||||
|
T{
|
||||||
|
double\-escaped:
|
||||||
|
T}@T{
|
||||||
|
\f[C]\\\\$\f[]
|
||||||
|
T}
|
||||||
|
T{
|
||||||
|
triple\-escaped:
|
||||||
|
T}@T{
|
||||||
|
\f[C]\\\\\\\\$\f[]
|
||||||
|
T}
|
||||||
|
.TE
|
||||||
|
.PP
|
||||||
(The number of backslashes in fish shell is left as an exercise for the
|
(The number of backslashes in fish shell is left as an exercise for the
|
||||||
reader.)
|
reader.)
|
||||||
.PP
|
.PP
|
||||||
Inside a file used for argument expansion, one less level of escaping is
|
You can always avoid the extra escaping for addons by running the addon
|
||||||
enough.
|
directly:
|
||||||
(And in this case, backslashes seem to work better than quotes.
|
.PP
|
||||||
Eg: \f[C]cur:\\$\f[]).
|
\f[C]hledger\-ui\ cur:\\\\$\f[]
|
||||||
|
.SS Less escaping
|
||||||
|
.PP
|
||||||
|
Inside an argument file, or in the search field of hledger\-ui or
|
||||||
|
hledger\-web, or at a GHCI prompt, you need one less level of escaping
|
||||||
|
than at the command line.
|
||||||
|
And backslashes may work better than quotes.
|
||||||
|
Eg:
|
||||||
|
.PP
|
||||||
|
\f[C]ghci>\ :main\ balance\ cur:\\$\f[]
|
||||||
|
.SS Command line tips
|
||||||
.PP
|
.PP
|
||||||
If in doubt, keep things simple:
|
If in doubt, keep things simple:
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
run add\-on executables directly
|
write options after the command (\f[C]hledger\ CMD\ \-OPTIONS\ ARGS\f[])
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
write options after the command
|
run add\-on executables directly (\f[C]hledger\-ui\ \-OPTIONS\ ARGS\f[])
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
enclose problematic args in single quotes
|
enclose problematic args in single quotes
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
if needed, also add a backslash to escape regexp metacharacters
|
if needed, also add a backslash to escape regexp metacharacters
|
||||||
.PP
|
.PP
|
||||||
If you're really stumped, add \f[C]\-\-debug=2\f[] to troubleshoot.
|
To find out exactly how a command line is being parsed, add
|
||||||
|
\f[C]\-\-debug=2\f[] to troubleshoot.
|
||||||
|
.SS Unicode characters
|
||||||
|
.PP
|
||||||
|
hledger is expected to handle unicode (non\-ascii) characters, but this
|
||||||
|
requires a well\-configured environment.
|
||||||
|
.PP
|
||||||
|
To handle unicode characters in the command line or input data, a system
|
||||||
|
locale that can decode them must be configured (POSIX's default
|
||||||
|
\f[C]C\f[] locale will not work).
|
||||||
|
Eg in bash, you could do:
|
||||||
|
.IP
|
||||||
|
.nf
|
||||||
|
\f[C]
|
||||||
|
export\ LANG=en_US.UTF\-8
|
||||||
|
\f[]
|
||||||
|
.fi
|
||||||
|
.PP
|
||||||
|
See Troubleshooting for more about this.
|
||||||
|
.PP
|
||||||
|
Unicode characters should appear correctly in hledger's output.
|
||||||
|
For the hledger and hledger\-ui tools, this requires that
|
||||||
|
.IP \[bu] 2
|
||||||
|
your terminal supports unicode
|
||||||
|
.IP \[bu] 2
|
||||||
|
the terminal's font includes the required unicode glyphs
|
||||||
|
.IP \[bu] 2
|
||||||
|
the terminal is configured to display \[lq]wide\[rq] characters as
|
||||||
|
double width (otherwise report alignment will be off)
|
||||||
.SS Input files
|
.SS Input files
|
||||||
.PP
|
.PP
|
||||||
hledger reads transactions from a data file (and the add command writes
|
hledger reads transactions from a data file (and the add command writes
|
||||||
@ -2900,7 +2979,7 @@ according to various schemes.
|
|||||||
.SS irr
|
.SS irr
|
||||||
.PP
|
.PP
|
||||||
hledger\-irr calculates the internal rate of return of an investment
|
hledger\-irr calculates the internal rate of return of an investment
|
||||||
account.
|
account, but it's superseded now by the built\-in roi command.
|
||||||
.SS Experimental add\-ons
|
.SS Experimental add\-ons
|
||||||
.PP
|
.PP
|
||||||
These are available in source form in the hledger repo's bin/ directory;
|
These are available in source form in the hledger repo's bin/ directory;
|
||||||
|
|||||||
@ -3,8 +3,8 @@ This is hledger.info, produced by makeinfo version 6.5 from stdin.
|
|||||||
|
|
||||||
File: hledger.info, Node: Top, Next: EXAMPLES, Up: (dir)
|
File: hledger.info, Node: Top, Next: EXAMPLES, Up: (dir)
|
||||||
|
|
||||||
hledger(1) hledger 1.11.99
|
hledger(1) hledger 1.12
|
||||||
**************************
|
***********************
|
||||||
|
|
||||||
This is hledger's command-line interface (there are also curses and web
|
This is hledger's command-line interface (there are also curses and web
|
||||||
interfaces). Its basic function is to read a plain text file describing
|
interfaces). Its basic function is to read a plain text file describing
|
||||||
@ -119,7 +119,9 @@ File: hledger.info, Node: OPTIONS, Next: QUERIES, Prev: EXAMPLES, Up: Top
|
|||||||
* Command options::
|
* Command options::
|
||||||
* Command arguments::
|
* Command arguments::
|
||||||
* Argument files::
|
* Argument files::
|
||||||
* Special characters::
|
* Special characters in arguments and queries::
|
||||||
|
* Command line tips::
|
||||||
|
* Unicode characters::
|
||||||
* Input files::
|
* Input files::
|
||||||
* Smart dates::
|
* Smart dates::
|
||||||
* Report start & end date::
|
* Report start & end date::
|
||||||
@ -277,7 +279,7 @@ Most hledger commands accept arguments after the command name, which are
|
|||||||
often a query, filtering the data in some way.
|
often a query, filtering the data in some way.
|
||||||
|
|
||||||
|
|
||||||
File: hledger.info, Node: Argument files, Next: Special characters, Prev: Command arguments, Up: OPTIONS
|
File: hledger.info, Node: Argument files, Next: Special characters in arguments and queries, Prev: Command arguments, Up: OPTIONS
|
||||||
|
|
||||||
2.4 Argument files
|
2.4 Argument files
|
||||||
==================
|
==================
|
||||||
@ -288,47 +290,132 @@ prevent this expansion of '@'-arguments, precede them with a '--'
|
|||||||
argument. For more, see Save frequently used options.
|
argument. For more, see Save frequently used options.
|
||||||
|
|
||||||
|
|
||||||
File: hledger.info, Node: Special characters, Next: Input files, Prev: Argument files, Up: OPTIONS
|
File: hledger.info, Node: Special characters in arguments and queries, Next: Command line tips, Prev: Argument files, Up: OPTIONS
|
||||||
|
|
||||||
2.5 Special characters
|
2.5 Special characters in arguments and queries
|
||||||
======================
|
===============================================
|
||||||
|
|
||||||
Option and argument values which contain problematic characters should
|
In shell command lines, option and argument values which contain
|
||||||
be escaped with double quotes, backslashes, or (best) single quotes.
|
"problematic" characters, ie spaces, and also characters significant to
|
||||||
Problematic characters means spaces, and also characters which are
|
your shell such as '<', '>', '(', ')', '|' and '$', should be escaped by
|
||||||
significant to your command shell, such as less-than/greater-than. Eg:
|
enclosing them in quotes or by writing backslashes before the
|
||||||
'hledger register -p 'last year' "accounts receivable
|
characters. Eg:
|
||||||
|
|
||||||
|
'hledger register -p 'last year' "accounts receivable
|
||||||
(receivable|payable)" amt:\>100'.
|
(receivable|payable)" amt:\>100'.
|
||||||
|
* Menu:
|
||||||
|
|
||||||
Characters which are significant both to the shell and in regular
|
* More escaping::
|
||||||
expressions sometimes need to be double-escaped. These include
|
* Even more escaping::
|
||||||
parentheses, the pipe symbol and the dollar sign. Eg, to match the
|
* Less escaping::
|
||||||
dollar symbol, bash users should do: 'hledger balance cur:'\$'' or
|
|
||||||
'hledger balance cur:\\$'.
|
|
||||||
|
|
||||||
When hledger is invoking an addon executable (like hledger-ui),
|
|
||||||
options and arguments get de-escaped once more, so you might need
|
File: hledger.info, Node: More escaping, Next: Even more escaping, Up: Special characters in arguments and queries
|
||||||
_triple_-escaping. Eg: 'hledger ui cur:'\\$'' or 'hledger ui cur:\\\\$'
|
|
||||||
in bash. (The number of backslashes in fish shell is left as an
|
|
||||||
exercise for the reader.)
|
|
||||||
|
|
||||||
Inside a file used for argument expansion, one less level of escaping
|
2.5.1 More escaping
|
||||||
is enough. (And in this case, backslashes seem to work better than
|
-------------------
|
||||||
quotes. Eg: 'cur:\$').
|
|
||||||
|
|
||||||
If in doubt, keep things simple:
|
Characters significant both to the shell and in regular expressions may
|
||||||
|
need one extra level of escaping. These include parentheses, the pipe
|
||||||
|
symbol and the dollar sign. Eg, to match the dollar symbol, bash users
|
||||||
|
should do:
|
||||||
|
|
||||||
* run add-on executables directly
|
'hledger balance cur:'\$''
|
||||||
* write options after the command
|
|
||||||
|
or:
|
||||||
|
|
||||||
|
'hledger balance cur:\\$'
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger.info, Node: Even more escaping, Next: Less escaping, Prev: More escaping, Up: Special characters in arguments and queries
|
||||||
|
|
||||||
|
2.5.2 Even more escaping
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
When hledger runs an addon executable (eg you type 'hledger ui', hledger
|
||||||
|
runs 'hledger-ui'), it de-escapes command-line options and arguments
|
||||||
|
once, so you might need to _triple_-escape. Eg in bash, running the ui
|
||||||
|
command and matching the dollar sign, it's:
|
||||||
|
|
||||||
|
'hledger ui cur:'\\$''
|
||||||
|
|
||||||
|
or:
|
||||||
|
|
||||||
|
'hledger ui cur:\\\\$'
|
||||||
|
|
||||||
|
If you asked why _four_ slashes above, this may help:
|
||||||
|
|
||||||
|
unescaped: '$'
|
||||||
|
escaped: '\$'
|
||||||
|
double-escaped: '\\$'
|
||||||
|
triple-escaped: '\\\\$'
|
||||||
|
|
||||||
|
(The number of backslashes in fish shell is left as an exercise for
|
||||||
|
the reader.)
|
||||||
|
|
||||||
|
You can always avoid the extra escaping for addons by running the
|
||||||
|
addon directly:
|
||||||
|
|
||||||
|
'hledger-ui cur:\\$'
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger.info, Node: Less escaping, Prev: Even more escaping, Up: Special characters in arguments and queries
|
||||||
|
|
||||||
|
2.5.3 Less escaping
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Inside an argument file, or in the search field of hledger-ui or
|
||||||
|
hledger-web, or at a GHCI prompt, you need one less level of escaping
|
||||||
|
than at the command line. And backslashes may work better than quotes.
|
||||||
|
Eg:
|
||||||
|
|
||||||
|
'ghci> :main balance cur:\$'
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger.info, Node: Command line tips, Next: Unicode characters, Prev: Special characters in arguments and queries, Up: OPTIONS
|
||||||
|
|
||||||
|
2.6 Command line tips
|
||||||
|
=====================
|
||||||
|
|
||||||
|
If in doubt, keep things simple:
|
||||||
|
|
||||||
|
* write options after the command ('hledger CMD -OPTIONS ARGS')
|
||||||
|
* run add-on executables directly ('hledger-ui -OPTIONS ARGS')
|
||||||
* enclose problematic args in single quotes
|
* enclose problematic args in single quotes
|
||||||
* if needed, also add a backslash to escape regexp metacharacters
|
* if needed, also add a backslash to escape regexp metacharacters
|
||||||
|
|
||||||
If you're really stumped, add '--debug=2' to troubleshoot.
|
To find out exactly how a command line is being parsed, add
|
||||||
|
'--debug=2' to troubleshoot.
|
||||||
|
|
||||||
|
|
||||||
File: hledger.info, Node: Input files, Next: Smart dates, Prev: Special characters, Up: OPTIONS
|
File: hledger.info, Node: Unicode characters, Next: Input files, Prev: Command line tips, Up: OPTIONS
|
||||||
|
|
||||||
2.6 Input files
|
2.7 Unicode characters
|
||||||
|
======================
|
||||||
|
|
||||||
|
hledger is expected to handle unicode (non-ascii) characters, but this
|
||||||
|
requires a well-configured environment.
|
||||||
|
|
||||||
|
To handle unicode characters in the command line or input data, a
|
||||||
|
system locale that can decode them must be configured (POSIX's default
|
||||||
|
'C' locale will not work). Eg in bash, you could do:
|
||||||
|
|
||||||
|
export LANG=en_US.UTF-8
|
||||||
|
|
||||||
|
See Troubleshooting for more about this.
|
||||||
|
|
||||||
|
Unicode characters should appear correctly in hledger's output. For
|
||||||
|
the hledger and hledger-ui tools, this requires that
|
||||||
|
|
||||||
|
* your terminal supports unicode
|
||||||
|
* the terminal's font includes the required unicode glyphs
|
||||||
|
* the terminal is configured to display "wide" characters as double
|
||||||
|
width (otherwise report alignment will be off)
|
||||||
|
|
||||||
|
|
||||||
|
File: hledger.info, Node: Input files, Next: Smart dates, Prev: Unicode characters, Up: OPTIONS
|
||||||
|
|
||||||
|
2.8 Input files
|
||||||
===============
|
===============
|
||||||
|
|
||||||
hledger reads transactions from a data file (and the add command writes
|
hledger reads transactions from a data file (and the add command writes
|
||||||
@ -383,7 +470,7 @@ the files, eg: 'cat a.journal b.journal | hledger -f- CMD'.
|
|||||||
|
|
||||||
File: hledger.info, Node: Smart dates, Next: Report start & end date, Prev: Input files, Up: OPTIONS
|
File: hledger.info, Node: Smart dates, Next: Report start & end date, Prev: Input files, Up: OPTIONS
|
||||||
|
|
||||||
2.7 Smart dates
|
2.9 Smart dates
|
||||||
===============
|
===============
|
||||||
|
|
||||||
hledger's user interfaces accept a flexible "smart date" syntax (unlike
|
hledger's user interfaces accept a flexible "smart date" syntax (unlike
|
||||||
@ -416,8 +503,8 @@ results:
|
|||||||
|
|
||||||
File: hledger.info, Node: Report start & end date, Next: Report intervals, Prev: Smart dates, Up: OPTIONS
|
File: hledger.info, Node: Report start & end date, Next: Report intervals, Prev: Smart dates, Up: OPTIONS
|
||||||
|
|
||||||
2.8 Report start & end date
|
2.10 Report start & end date
|
||||||
===========================
|
============================
|
||||||
|
|
||||||
Most hledger reports show the full span of time represented by the
|
Most hledger reports show the full span of time represented by the
|
||||||
journal data, by default. So, the effective report start and end dates
|
journal data, by default. So, the effective report start and end dates
|
||||||
@ -445,8 +532,8 @@ need to write the date _after_ the last day you want to include.
|
|||||||
|
|
||||||
File: hledger.info, Node: Report intervals, Next: Period expressions, Prev: Report start & end date, Up: OPTIONS
|
File: hledger.info, Node: Report intervals, Next: Period expressions, Prev: Report start & end date, Up: OPTIONS
|
||||||
|
|
||||||
2.9 Report intervals
|
2.11 Report intervals
|
||||||
====================
|
=====================
|
||||||
|
|
||||||
A report interval can be specified so that commands like register,
|
A report interval can be specified so that commands like register,
|
||||||
balance and activity will divide their reports into multiple subperiods.
|
balance and activity will divide their reports into multiple subperiods.
|
||||||
@ -458,7 +545,7 @@ intervals can not be specified with a query, currently.
|
|||||||
|
|
||||||
File: hledger.info, Node: Period expressions, Next: Depth limiting, Prev: Report intervals, Up: OPTIONS
|
File: hledger.info, Node: Period expressions, Next: Depth limiting, Prev: Report intervals, Up: OPTIONS
|
||||||
|
|
||||||
2.10 Period expressions
|
2.12 Period expressions
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
The '-p/--period' option accepts period expressions, a shorthand way of
|
The '-p/--period' option accepts period expressions, a shorthand way of
|
||||||
@ -566,7 +653,7 @@ start date and exclusive end date):
|
|||||||
|
|
||||||
File: hledger.info, Node: Depth limiting, Next: Pivoting, Prev: Period expressions, Up: OPTIONS
|
File: hledger.info, Node: Depth limiting, Next: Pivoting, Prev: Period expressions, Up: OPTIONS
|
||||||
|
|
||||||
2.11 Depth limiting
|
2.13 Depth limiting
|
||||||
===================
|
===================
|
||||||
|
|
||||||
With the '--depth N' option (short form: '-N'), commands like account,
|
With the '--depth N' option (short form: '-N'), commands like account,
|
||||||
@ -578,7 +665,7 @@ less detail. This flag has the same effect as a 'depth:' query argument
|
|||||||
|
|
||||||
File: hledger.info, Node: Pivoting, Next: Cost, Prev: Depth limiting, Up: OPTIONS
|
File: hledger.info, Node: Pivoting, Next: Cost, Prev: Depth limiting, Up: OPTIONS
|
||||||
|
|
||||||
2.12 Pivoting
|
2.14 Pivoting
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Normally hledger sums amounts, and organizes them in a hierarchy, based
|
Normally hledger sums amounts, and organizes them in a hierarchy, based
|
||||||
@ -635,7 +722,7 @@ $ hledger balance --pivot member acct:.
|
|||||||
|
|
||||||
File: hledger.info, Node: Cost, Next: Market value, Prev: Pivoting, Up: OPTIONS
|
File: hledger.info, Node: Cost, Next: Market value, Prev: Pivoting, Up: OPTIONS
|
||||||
|
|
||||||
2.13 Cost
|
2.15 Cost
|
||||||
=========
|
=========
|
||||||
|
|
||||||
The '-B/--cost' flag converts amounts to their cost at transaction time,
|
The '-B/--cost' flag converts amounts to their cost at transaction time,
|
||||||
@ -644,7 +731,7 @@ if they have a transaction price specified.
|
|||||||
|
|
||||||
File: hledger.info, Node: Market value, Next: Combining -B and -V, Prev: Cost, Up: OPTIONS
|
File: hledger.info, Node: Market value, Next: Combining -B and -V, Prev: Cost, Up: OPTIONS
|
||||||
|
|
||||||
2.14 Market value
|
2.16 Market value
|
||||||
=================
|
=================
|
||||||
|
|
||||||
The '-V/--value' flag converts reported amounts to their current market
|
The '-V/--value' flag converts reported amounts to their current market
|
||||||
@ -696,7 +783,7 @@ of the prices on each column's end date.)
|
|||||||
|
|
||||||
File: hledger.info, Node: Combining -B and -V, Next: Output destination, Prev: Market value, Up: OPTIONS
|
File: hledger.info, Node: Combining -B and -V, Next: Output destination, Prev: Market value, Up: OPTIONS
|
||||||
|
|
||||||
2.15 Combining -B and -V
|
2.17 Combining -B and -V
|
||||||
========================
|
========================
|
||||||
|
|
||||||
Using -B/-cost and -V/-value together is currently allowed, but the
|
Using -B/-cost and -V/-value together is currently allowed, but the
|
||||||
@ -706,7 +793,7 @@ this.
|
|||||||
|
|
||||||
File: hledger.info, Node: Output destination, Next: Output format, Prev: Combining -B and -V, Up: OPTIONS
|
File: hledger.info, Node: Output destination, Next: Output format, Prev: Combining -B and -V, Up: OPTIONS
|
||||||
|
|
||||||
2.16 Output destination
|
2.18 Output destination
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
Some commands (print, register, stats, the balance commands) can write
|
Some commands (print, register, stats, the balance commands) can write
|
||||||
@ -719,7 +806,7 @@ $ hledger balance -o FILE # write to FILE
|
|||||||
|
|
||||||
File: hledger.info, Node: Output format, Next: Regular expressions, Prev: Output destination, Up: OPTIONS
|
File: hledger.info, Node: Output format, Next: Regular expressions, Prev: Output destination, Up: OPTIONS
|
||||||
|
|
||||||
2.17 Output format
|
2.19 Output format
|
||||||
==================
|
==================
|
||||||
|
|
||||||
Some commands can write their output in other formats. Eg print and
|
Some commands can write their output in other formats. Eg print and
|
||||||
@ -733,7 +820,7 @@ $ hledger balance -o FILE.csv # write CSV to FILE.csv
|
|||||||
|
|
||||||
File: hledger.info, Node: Regular expressions, Prev: Output format, Up: OPTIONS
|
File: hledger.info, Node: Regular expressions, Prev: Output format, Up: OPTIONS
|
||||||
|
|
||||||
2.18 Regular expressions
|
2.20 Regular expressions
|
||||||
========================
|
========================
|
||||||
|
|
||||||
hledger uses regular expressions in a number of places:
|
hledger uses regular expressions in a number of places:
|
||||||
@ -2419,7 +2506,7 @@ File: hledger.info, Node: irr, Prev: interest, Up: Third party add-ons
|
|||||||
---------
|
---------
|
||||||
|
|
||||||
hledger-irr calculates the internal rate of return of an investment
|
hledger-irr calculates the internal rate of return of an investment
|
||||||
account.
|
account, but it's superseded now by the built-in roi command.
|
||||||
|
|
||||||
|
|
||||||
File: hledger.info, Node: Experimental add-ons, Prev: Third party add-ons, Up: ADD-ON COMMANDS
|
File: hledger.info, Node: Experimental add-ons, Prev: Third party add-ons, Up: ADD-ON COMMANDS
|
||||||
@ -2467,142 +2554,152 @@ hledger-check.hs checks more powerful account balance assertions.
|
|||||||
|
|
||||||
Tag Table:
|
Tag Table:
|
||||||
Node: Top68
|
Node: Top68
|
||||||
Node: EXAMPLES1890
|
Node: EXAMPLES1884
|
||||||
Ref: #examples1990
|
Ref: #examples1984
|
||||||
Node: OPTIONS3636
|
Node: OPTIONS3630
|
||||||
Ref: #options3738
|
Ref: #options3732
|
||||||
Node: General options4103
|
Node: General options4167
|
||||||
Ref: #general-options4228
|
Ref: #general-options4292
|
||||||
Node: Command options6910
|
Node: Command options6974
|
||||||
Ref: #command-options7061
|
Ref: #command-options7125
|
||||||
Node: Command arguments7459
|
Node: Command arguments7523
|
||||||
Ref: #command-arguments7613
|
Ref: #command-arguments7677
|
||||||
Node: Argument files7734
|
Node: Argument files7798
|
||||||
Ref: #argument-files7885
|
Ref: #argument-files7974
|
||||||
Node: Special characters8151
|
Node: Special characters in arguments and queries8240
|
||||||
Ref: #special-characters8304
|
Ref: #special-characters-in-arguments-and-queries8474
|
||||||
Node: Input files9723
|
Node: More escaping8924
|
||||||
Ref: #input-files9859
|
Ref: #more-escaping9086
|
||||||
Node: Smart dates11829
|
Node: Even more escaping9382
|
||||||
Ref: #smart-dates11970
|
Ref: #even-more-escaping9576
|
||||||
Node: Report start & end date13376
|
Node: Less escaping10247
|
||||||
Ref: #report-start-end-date13546
|
Ref: #less-escaping10409
|
||||||
Node: Report intervals14611
|
Node: Command line tips10654
|
||||||
Ref: #report-intervals14774
|
Ref: #command-line-tips10840
|
||||||
Node: Period expressions15175
|
Node: Unicode characters11217
|
||||||
Ref: #period-expressions15335
|
Ref: #unicode-characters11373
|
||||||
Node: Depth limiting19292
|
Node: Input files12098
|
||||||
Ref: #depth-limiting19436
|
Ref: #input-files12234
|
||||||
Node: Pivoting19778
|
Node: Smart dates14204
|
||||||
Ref: #pivoting19896
|
Ref: #smart-dates14345
|
||||||
Node: Cost21572
|
Node: Report start & end date15751
|
||||||
Ref: #cost21680
|
Ref: #report-start-end-date15923
|
||||||
Node: Market value21798
|
Node: Report intervals16988
|
||||||
Ref: #market-value21933
|
Ref: #report-intervals17153
|
||||||
Node: Combining -B and -V23299
|
Node: Period expressions17554
|
||||||
Ref: #combining--b-and--v23462
|
Ref: #period-expressions17714
|
||||||
Node: Output destination23609
|
Node: Depth limiting21671
|
||||||
Ref: #output-destination23771
|
Ref: #depth-limiting21815
|
||||||
Node: Output format24054
|
Node: Pivoting22157
|
||||||
Ref: #output-format24206
|
Ref: #pivoting22275
|
||||||
Node: Regular expressions24591
|
Node: Cost23951
|
||||||
Ref: #regular-expressions24728
|
Ref: #cost24059
|
||||||
Node: QUERIES26089
|
Node: Market value24177
|
||||||
Ref: #queries26191
|
Ref: #market-value24312
|
||||||
Node: COMMANDS30153
|
Node: Combining -B and -V25678
|
||||||
Ref: #commands30265
|
Ref: #combining--b-and--v25841
|
||||||
Node: accounts31265
|
Node: Output destination25988
|
||||||
Ref: #accounts31363
|
Ref: #output-destination26150
|
||||||
Node: activity32609
|
Node: Output format26433
|
||||||
Ref: #activity32719
|
Ref: #output-format26585
|
||||||
Node: add33079
|
Node: Regular expressions26970
|
||||||
Ref: #add33178
|
Ref: #regular-expressions27107
|
||||||
Node: balance35839
|
Node: QUERIES28468
|
||||||
Ref: #balance35950
|
Ref: #queries28570
|
||||||
Node: Classic balance report39033
|
Node: COMMANDS32532
|
||||||
Ref: #classic-balance-report39206
|
Ref: #commands32644
|
||||||
Node: Customising the classic balance report40575
|
Node: accounts33644
|
||||||
Ref: #customising-the-classic-balance-report40803
|
Ref: #accounts33742
|
||||||
Node: Colour support42877
|
Node: activity34988
|
||||||
Ref: #colour-support43044
|
Ref: #activity35098
|
||||||
Node: Flat mode43217
|
Node: add35458
|
||||||
Ref: #flat-mode43365
|
Ref: #add35557
|
||||||
Node: Depth limited balance reports43778
|
Node: balance38218
|
||||||
Ref: #depth-limited-balance-reports43978
|
Ref: #balance38329
|
||||||
Node: Multicolumn balance report44434
|
Node: Classic balance report41412
|
||||||
Ref: #multicolumn-balance-report44632
|
Ref: #classic-balance-report41585
|
||||||
Node: Budget report49812
|
Node: Customising the classic balance report42954
|
||||||
Ref: #budget-report49955
|
Ref: #customising-the-classic-balance-report43182
|
||||||
Ref: #output-format-152989
|
Node: Colour support45256
|
||||||
Node: balancesheet53067
|
Ref: #colour-support45423
|
||||||
Ref: #balancesheet53203
|
Node: Flat mode45596
|
||||||
Node: balancesheetequity55514
|
Ref: #flat-mode45744
|
||||||
Ref: #balancesheetequity55663
|
Node: Depth limited balance reports46157
|
||||||
Node: cashflow56200
|
Ref: #depth-limited-balance-reports46357
|
||||||
Ref: #cashflow56328
|
Node: Multicolumn balance report46813
|
||||||
Node: check-dates58451
|
Ref: #multicolumn-balance-report47011
|
||||||
Ref: #check-dates58578
|
Node: Budget report52191
|
||||||
Node: check-dupes58695
|
Ref: #budget-report52334
|
||||||
Ref: #check-dupes58819
|
Ref: #output-format-155368
|
||||||
Node: close58956
|
Node: balancesheet55446
|
||||||
Ref: #close59064
|
Ref: #balancesheet55582
|
||||||
Node: files59394
|
Node: balancesheetequity57893
|
||||||
Ref: #files59495
|
Ref: #balancesheetequity58042
|
||||||
Node: help59636
|
Node: cashflow58579
|
||||||
Ref: #help59736
|
Ref: #cashflow58707
|
||||||
Node: import60810
|
Node: check-dates60830
|
||||||
Ref: #import60924
|
Ref: #check-dates60957
|
||||||
Node: incomestatement61654
|
Node: check-dupes61074
|
||||||
Ref: #incomestatement61788
|
Ref: #check-dupes61198
|
||||||
Node: prices64192
|
Node: close61335
|
||||||
Ref: #prices64307
|
Ref: #close61443
|
||||||
Node: print64579
|
Node: files61773
|
||||||
Ref: #print64689
|
Ref: #files61874
|
||||||
Node: print-unique69583
|
Node: help62015
|
||||||
Ref: #print-unique69709
|
Ref: #help62115
|
||||||
Node: register69777
|
Node: import63189
|
||||||
Ref: #register69904
|
Ref: #import63303
|
||||||
Node: Custom register output74405
|
Node: incomestatement64033
|
||||||
Ref: #custom-register-output74534
|
Ref: #incomestatement64167
|
||||||
Node: register-match75764
|
Node: prices66571
|
||||||
Ref: #register-match75898
|
Ref: #prices66686
|
||||||
Node: rewrite76081
|
Node: print66958
|
||||||
Ref: #rewrite76196
|
Ref: #print67068
|
||||||
Node: roi76265
|
Node: print-unique71962
|
||||||
Ref: #roi76363
|
Ref: #print-unique72088
|
||||||
Node: stats76479
|
Node: register72156
|
||||||
Ref: #stats76578
|
Ref: #register72283
|
||||||
Node: tags77448
|
Node: Custom register output76784
|
||||||
Ref: #tags77546
|
Ref: #custom-register-output76913
|
||||||
Node: test77782
|
Node: register-match78143
|
||||||
Ref: #test77866
|
Ref: #register-match78277
|
||||||
Node: ADD-ON COMMANDS78574
|
Node: rewrite78460
|
||||||
Ref: #add-on-commands78684
|
Ref: #rewrite78575
|
||||||
Node: Official add-ons79971
|
Node: roi78644
|
||||||
Ref: #official-add-ons80111
|
Ref: #roi78742
|
||||||
Node: api80198
|
Node: stats78858
|
||||||
Ref: #api80287
|
Ref: #stats78957
|
||||||
Node: ui80339
|
Node: tags79827
|
||||||
Ref: #ui80438
|
Ref: #tags79925
|
||||||
Node: web80496
|
Node: test80161
|
||||||
Ref: #web80585
|
Ref: #test80245
|
||||||
Node: Third party add-ons80631
|
Node: ADD-ON COMMANDS80953
|
||||||
Ref: #third-party-add-ons80806
|
Ref: #add-on-commands81063
|
||||||
Node: diff80941
|
Node: Official add-ons82350
|
||||||
Ref: #diff81038
|
Ref: #official-add-ons82490
|
||||||
Node: iadd81137
|
Node: api82577
|
||||||
Ref: #iadd81251
|
Ref: #api82666
|
||||||
Node: interest81334
|
Node: ui82718
|
||||||
Ref: #interest81455
|
Ref: #ui82817
|
||||||
Node: irr81550
|
Node: web82875
|
||||||
Ref: #irr81648
|
Ref: #web82964
|
||||||
Node: Experimental add-ons81726
|
Node: Third party add-ons83010
|
||||||
Ref: #experimental-add-ons81878
|
Ref: #third-party-add-ons83185
|
||||||
Node: autosync82158
|
Node: diff83320
|
||||||
Ref: #autosync82269
|
Ref: #diff83417
|
||||||
Node: chart82508
|
Node: iadd83516
|
||||||
Ref: #chart82627
|
Ref: #iadd83630
|
||||||
Node: check82698
|
Node: interest83713
|
||||||
Ref: #check82800
|
Ref: #interest83834
|
||||||
|
Node: irr83929
|
||||||
|
Ref: #irr84027
|
||||||
|
Node: Experimental add-ons84158
|
||||||
|
Ref: #experimental-add-ons84310
|
||||||
|
Node: autosync84590
|
||||||
|
Ref: #autosync84701
|
||||||
|
Node: chart84940
|
||||||
|
Ref: #chart85059
|
||||||
|
Node: check85130
|
||||||
|
Ref: #check85232
|
||||||
|
|
||||||
End Tag Table
|
End Tag Table
|
||||||
|
|||||||
@ -238,41 +238,98 @@ OPTIONS
|
|||||||
prevent this expansion of @-arguments, precede them with a -- argument.
|
prevent this expansion of @-arguments, precede them with a -- argument.
|
||||||
For more, see Save frequently used options.
|
For more, see Save frequently used options.
|
||||||
|
|
||||||
Special characters
|
Special characters in arguments and queries
|
||||||
Option and argument values which contain problematic characters should
|
In shell command lines, option and argument values which contain "prob-
|
||||||
be escaped with double quotes, backslashes, or (best) single quotes.
|
lematic" characters, ie spaces, and also characters significant to your
|
||||||
Problematic characters means spaces, and also characters which are sig-
|
shell such as <, >, (, ), | and $, should be escaped by enclosing them
|
||||||
nificant to your command shell, such as less-than/greater-than. Eg:
|
in quotes or by writing backslashes before the characters. Eg:
|
||||||
|
|
||||||
hledger register -p 'last year' "accounts receivable (receiv-
|
hledger register -p 'last year' "accounts receivable (receiv-
|
||||||
able|payable)" amt:\>100.
|
able|payable)" amt:\>100.
|
||||||
|
|
||||||
Characters which are significant both to the shell and in regular
|
More escaping
|
||||||
expressions sometimes need to be double-escaped. These include paren-
|
Characters significant both to the shell and in regular expressions may
|
||||||
theses, the pipe symbol and the dollar sign. Eg, to match the dollar
|
need one extra level of escaping. These include parentheses, the pipe
|
||||||
symbol, bash users should do: hledger balance cur:'\$' or hledger bal-
|
symbol and the dollar sign. Eg, to match the dollar symbol, bash users
|
||||||
ance cur:\\$.
|
should do:
|
||||||
|
|
||||||
When hledger is invoking an addon executable (like hledger-ui), options
|
hledger balance cur:'\$'
|
||||||
and arguments get de-escaped once more, so you might need triple-escap-
|
|
||||||
ing. Eg: hledger ui cur:'\\$' or hledger ui cur:\\\\$ in bash. (The
|
or:
|
||||||
number of backslashes in fish shell is left as an exercise for the
|
|
||||||
|
hledger balance cur:\\$
|
||||||
|
|
||||||
|
Even more escaping
|
||||||
|
When hledger runs an addon executable (eg you type hledger ui, hledger
|
||||||
|
runs hledger-ui), it de-escapes command-line options and arguments
|
||||||
|
once, so you might need to triple-escape. Eg in bash, running the ui
|
||||||
|
command and matching the dollar sign, it's:
|
||||||
|
|
||||||
|
hledger ui cur:'\\$'
|
||||||
|
|
||||||
|
or:
|
||||||
|
|
||||||
|
hledger ui cur:\\\\$
|
||||||
|
|
||||||
|
If you asked why four slashes above, this may help:
|
||||||
|
|
||||||
|
|
||||||
|
unescaped: $
|
||||||
|
escaped: \$
|
||||||
|
double-escaped: \\$
|
||||||
|
triple-escaped: \\\\$
|
||||||
|
|
||||||
|
(The number of backslashes in fish shell is left as an exercise for the
|
||||||
reader.)
|
reader.)
|
||||||
|
|
||||||
Inside a file used for argument expansion, one less level of escaping
|
You can always avoid the extra escaping for addons by running the addon
|
||||||
is enough. (And in this case, backslashes seem to work better than
|
directly:
|
||||||
quotes. Eg: cur:\$).
|
|
||||||
|
|
||||||
|
hledger-ui cur:\\$
|
||||||
|
|
||||||
|
Less escaping
|
||||||
|
Inside an argument file, or in the search field of hledger-ui or
|
||||||
|
hledger-web, or at a GHCI prompt, you need one less level of escaping
|
||||||
|
than at the command line. And backslashes may work better than quotes.
|
||||||
|
Eg:
|
||||||
|
|
||||||
|
ghci> :main balance cur:\$
|
||||||
|
|
||||||
|
Command line tips
|
||||||
If in doubt, keep things simple:
|
If in doubt, keep things simple:
|
||||||
|
|
||||||
o run add-on executables directly
|
o write options after the command (hledger CMD -OPTIONS ARGS)
|
||||||
|
|
||||||
o write options after the command
|
o run add-on executables directly (hledger-ui -OPTIONS ARGS)
|
||||||
|
|
||||||
o enclose problematic args in single quotes
|
o enclose problematic args in single quotes
|
||||||
|
|
||||||
o if needed, also add a backslash to escape regexp metacharacters
|
o if needed, also add a backslash to escape regexp metacharacters
|
||||||
|
|
||||||
If you're really stumped, add --debug=2 to troubleshoot.
|
To find out exactly how a command line is being parsed, add --debug=2
|
||||||
|
to troubleshoot.
|
||||||
|
|
||||||
|
Unicode characters
|
||||||
|
hledger is expected to handle unicode (non-ascii) characters, but this
|
||||||
|
requires a well-configured environment.
|
||||||
|
|
||||||
|
To handle unicode characters in the command line or input data, a sys-
|
||||||
|
tem locale that can decode them must be configured (POSIX's default C
|
||||||
|
locale will not work). Eg in bash, you could do:
|
||||||
|
|
||||||
|
export LANG=en_US.UTF-8
|
||||||
|
|
||||||
|
See Troubleshooting for more about this.
|
||||||
|
|
||||||
|
Unicode characters should appear correctly in hledger's output. For
|
||||||
|
the hledger and hledger-ui tools, this requires that
|
||||||
|
|
||||||
|
o your terminal supports unicode
|
||||||
|
|
||||||
|
o the terminal's font includes the required unicode glyphs
|
||||||
|
|
||||||
|
o the terminal is configured to display "wide" characters as double
|
||||||
|
width (otherwise report alignment will be off)
|
||||||
|
|
||||||
Input files
|
Input files
|
||||||
hledger reads transactions from a data file (and the add command writes
|
hledger reads transactions from a data file (and the add command writes
|
||||||
@ -340,6 +397,7 @@ OPTIONS
|
|||||||
4+ digits, month is 1-12,
|
4+ digits, month is 1-12,
|
||||||
day is 1-31
|
day is 1-31
|
||||||
2004 start of year
|
2004 start of year
|
||||||
|
|
||||||
2004/10 start of month
|
2004/10 start of month
|
||||||
10/1 month and day in current
|
10/1 month and day in current
|
||||||
year
|
year
|
||||||
@ -397,7 +455,6 @@ OPTIONS
|
|||||||
rent month
|
rent month
|
||||||
-p thismonth all transactions in the
|
-p thismonth all transactions in the
|
||||||
current month
|
current month
|
||||||
|
|
||||||
date:2016/3/17- the above written as
|
date:2016/3/17- the above written as
|
||||||
queries instead
|
queries instead
|
||||||
date:-12/1
|
date:-12/1
|
||||||
@ -531,7 +588,6 @@ OPTIONS
|
|||||||
-p "every 2nd Monday" - period bound-
|
-p "every 2nd Monday" - period bound-
|
||||||
aries will be on second Monday of each
|
aries will be on second Monday of each
|
||||||
month
|
month
|
||||||
|
|
||||||
-p "every 11/05" - yearly periods with
|
-p "every 11/05" - yearly periods with
|
||||||
boundaries on 5th of Nov
|
boundaries on 5th of Nov
|
||||||
-p "every 5th Nov" - same
|
-p "every 5th Nov" - same
|
||||||
@ -2094,7 +2150,7 @@ ADD-ON COMMANDS
|
|||||||
|
|
||||||
irr
|
irr
|
||||||
hledger-irr calculates the internal rate of return of an investment
|
hledger-irr calculates the internal rate of return of an investment
|
||||||
account.
|
account, but it's superseded now by the built-in roi command.
|
||||||
|
|
||||||
Experimental add-ons
|
Experimental add-ons
|
||||||
These are available in source form in the hledger repo's bin/ direc-
|
These are available in source form in the hledger repo's bin/ direc-
|
||||||
@ -2230,4 +2286,4 @@ SEE ALSO
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
hledger 1.11.99 September 2018 hledger(1)
|
hledger 1.12 December 2018 hledger(1)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user