;update manuals
This commit is contained in:
parent
d42070ee87
commit
8b97d31db4
@ -1087,31 +1087,80 @@ If an amount value begins with a plus sign, that will be removed
|
||||
.SS Setting currency/commodity
|
||||
.PP
|
||||
If the currency/commodity symbol is included in the CSV\[aq]s amount
|
||||
field(s), you don\[aq]t have to do anything special.
|
||||
.PP
|
||||
If the currency is provided as a separate CSV field, you can either:
|
||||
.IP \[bu] 2
|
||||
assign that to \f[C]currency\f[R], which adds it to all posting amounts.
|
||||
The symbol will prepended to the amount quantity (on the left side).
|
||||
If you write a trailing space after the symbol, there will be a space
|
||||
between symbol and amount (an exception to the usual whitespace
|
||||
stripping).
|
||||
.IP \[bu] 2
|
||||
or assign it to \f[C]currencyN\f[R] which adds it to posting N\[aq]s
|
||||
amount only.
|
||||
.IP \[bu] 2
|
||||
or for more control, construct the amount from symbol and quantity using
|
||||
field assignment, eg:
|
||||
.RS 2
|
||||
field(s):
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
fields date,description,currency,quantity
|
||||
# add currency symbol on the right:
|
||||
amount %quantity %currency
|
||||
2020-01-01,foo,$123.00
|
||||
\f[R]
|
||||
.fi
|
||||
.RE
|
||||
.PP
|
||||
you don\[aq]t have to do anything special for the commodity symbol, it
|
||||
will be assigned as part of the amount.
|
||||
Eg:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
fields date,description,amount
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
2020-01-01 foo
|
||||
expenses:unknown $123.00
|
||||
income:unknown $-123.00
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
If the currency is provided as a separate CSV field:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
2020-01-01,foo,USD,123.00
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
You can assign that to the \f[C]currency\f[R] pseudo-field, which has
|
||||
the special effect of prepending itself to every amount in the
|
||||
transaction (on the left, with no separating space):
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
fields date,description,currency,amount
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
2020-01-01 foo
|
||||
expenses:unknown USD123.00
|
||||
income:unknown USD-123.00
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Or, you can use a field assignment to construct the amount yourself,
|
||||
with more control.
|
||||
Eg to put the symbol on the right, and separated by a space:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
fields date,description,cur,amt
|
||||
amount %amt %cur
|
||||
\f[R]
|
||||
.fi
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
2020-01-01 foo
|
||||
expenses:unknown 123.00 USD
|
||||
income:unknown -123.00 USD
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Note we used temporary field names \f[C]cur\f[R] (and \f[C]amt\f[R]) -
|
||||
not \f[C]currency\f[R], since in this case we don\[aq]t want to trigger
|
||||
that name\[aq]s special effect.
|
||||
.SS Referencing other fields
|
||||
.PP
|
||||
In field assignments, you can interpolate only CSV fields, not hledger
|
||||
|
||||
@ -1049,25 +1049,47 @@ File: hledger_csv.info, Node: Setting currency/commodity, Next: Referencing ot
|
||||
==============================
|
||||
|
||||
If the currency/commodity symbol is included in the CSV's amount
|
||||
field(s), you don't have to do anything special.
|
||||
field(s):
|
||||
|
||||
If the currency is provided as a separate CSV field, you can either:
|
||||
2020-01-01,foo,$123.00
|
||||
|
||||
* assign that to 'currency', which adds it to all posting amounts.
|
||||
The symbol will prepended to the amount quantity (on the left
|
||||
side). If you write a trailing space after the symbol, there will
|
||||
be a space between symbol and amount (an exception to the usual
|
||||
whitespace stripping).
|
||||
you don't have to do anything special for the commodity symbol, it
|
||||
will be assigned as part of the amount. Eg:
|
||||
|
||||
* or assign it to 'currencyN' which adds it to posting N's amount
|
||||
only.
|
||||
fields date,description,amount
|
||||
|
||||
* or for more control, construct the amount from symbol and quantity
|
||||
using field assignment, eg:
|
||||
2020-01-01 foo
|
||||
expenses:unknown $123.00
|
||||
income:unknown $-123.00
|
||||
|
||||
fields date,description,currency,quantity
|
||||
# add currency symbol on the right:
|
||||
amount %quantity %currency
|
||||
If the currency is provided as a separate CSV field:
|
||||
|
||||
2020-01-01,foo,USD,123.00
|
||||
|
||||
You can assign that to the 'currency' pseudo-field, which has the
|
||||
special effect of prepending itself to every amount in the transaction
|
||||
(on the left, with no separating space):
|
||||
|
||||
fields date,description,currency,amount
|
||||
|
||||
2020-01-01 foo
|
||||
expenses:unknown USD123.00
|
||||
income:unknown USD-123.00
|
||||
|
||||
Or, you can use a field assignment to construct the amount yourself,
|
||||
with more control. Eg to put the symbol on the right, and separated by
|
||||
a space:
|
||||
|
||||
fields date,description,cur,amt
|
||||
amount %amt %cur
|
||||
|
||||
2020-01-01 foo
|
||||
expenses:unknown 123.00 USD
|
||||
income:unknown -123.00 USD
|
||||
|
||||
Note we used temporary field names 'cur' (and 'amt') - not
|
||||
'currency', since in this case we don't want to trigger that name's
|
||||
special effect.
|
||||
|
||||
|
||||
File: hledger_csv.info, Node: Referencing other fields, Next: How CSV rules are evaluated, Prev: Setting currency/commodity, Up: TIPS
|
||||
@ -1224,10 +1246,10 @@ Node: Setting amounts34895
|
||||
Ref: #setting-amounts35064
|
||||
Node: Setting currency/commodity36051
|
||||
Ref: #setting-currencycommodity36243
|
||||
Node: Referencing other fields37046
|
||||
Ref: #referencing-other-fields37246
|
||||
Node: How CSV rules are evaluated38143
|
||||
Ref: #how-csv-rules-are-evaluated38316
|
||||
Node: Referencing other fields37423
|
||||
Ref: #referencing-other-fields37623
|
||||
Node: How CSV rules are evaluated38520
|
||||
Ref: #how-csv-rules-are-evaluated38693
|
||||
|
||||
End Tag Table
|
||||
|
||||
|
||||
@ -804,29 +804,51 @@ TIPS
|
||||
|
||||
Setting currency/commodity
|
||||
If the currency/commodity symbol is included in the CSV's amount
|
||||
field(s), you don't have to do anything special.
|
||||
field(s):
|
||||
|
||||
If the currency is provided as a separate CSV field, you can either:
|
||||
2020-01-01,foo,$123.00
|
||||
|
||||
o assign that to currency, which adds it to all posting amounts. The
|
||||
symbol will prepended to the amount quantity (on the left side). If
|
||||
you write a trailing space after the symbol, there will be a space
|
||||
between symbol and amount (an exception to the usual whitespace
|
||||
stripping).
|
||||
you don't have to do anything special for the commodity symbol, it will
|
||||
be assigned as part of the amount. Eg:
|
||||
|
||||
o or assign it to currencyN which adds it to posting N's amount only.
|
||||
fields date,description,amount
|
||||
|
||||
o or for more control, construct the amount from symbol and quantity
|
||||
using field assignment, eg:
|
||||
2020-01-01 foo
|
||||
expenses:unknown $123.00
|
||||
income:unknown $-123.00
|
||||
|
||||
fields date,description,currency,quantity
|
||||
# add currency symbol on the right:
|
||||
amount %quantity %currency
|
||||
If the currency is provided as a separate CSV field:
|
||||
|
||||
2020-01-01,foo,USD,123.00
|
||||
|
||||
You can assign that to the currency pseudo-field, which has the special
|
||||
effect of prepending itself to every amount in the transaction (on the
|
||||
left, with no separating space):
|
||||
|
||||
fields date,description,currency,amount
|
||||
|
||||
2020-01-01 foo
|
||||
expenses:unknown USD123.00
|
||||
income:unknown USD-123.00
|
||||
|
||||
Or, you can use a field assignment to construct the amount yourself,
|
||||
with more control. Eg to put the symbol on the right, and separated by
|
||||
a space:
|
||||
|
||||
fields date,description,cur,amt
|
||||
amount %amt %cur
|
||||
|
||||
2020-01-01 foo
|
||||
expenses:unknown 123.00 USD
|
||||
income:unknown -123.00 USD
|
||||
|
||||
Note we used temporary field names cur (and amt) - not currency, since
|
||||
in this case we don't want to trigger that name's special effect.
|
||||
|
||||
Referencing other fields
|
||||
In field assignments, you can interpolate only CSV fields, not hledger
|
||||
fields. In the example below, there's both a CSV field and a hledger
|
||||
field named amount1, but %amount1 always means the CSV field, not the
|
||||
In field assignments, you can interpolate only CSV fields, not hledger
|
||||
fields. In the example below, there's both a CSV field and a hledger
|
||||
field named amount1, but %amount1 always means the CSV field, not the
|
||||
hledger field:
|
||||
|
||||
# Name the third CSV field "amount1"
|
||||
@ -838,7 +860,7 @@ TIPS
|
||||
# Set comment to the CSV amount1 (not the amount1 assigned above)
|
||||
comment %amount1
|
||||
|
||||
Here, since there's no CSV amount1 field, %amount1 will produce a lit-
|
||||
Here, since there's no CSV amount1 field, %amount1 will produce a lit-
|
||||
eral "amount1":
|
||||
|
||||
fields date,description,csvamount
|
||||
@ -846,7 +868,7 @@ TIPS
|
||||
# Can't interpolate amount1 here
|
||||
comment %amount1
|
||||
|
||||
When there are multiple field assignments to the same hledger field,
|
||||
When there are multiple field assignments to the same hledger field,
|
||||
only the last one takes effect. Here, comment's value will be be B, or
|
||||
C if "something" is matched, but never A:
|
||||
|
||||
@ -856,14 +878,14 @@ TIPS
|
||||
comment C
|
||||
|
||||
How CSV rules are evaluated
|
||||
Here's how to think of CSV rules being evaluated (if you really need
|
||||
Here's how to think of CSV rules being evaluated (if you really need
|
||||
to). First,
|
||||
|
||||
o include - all includes are inlined, from top to bottom, depth first.
|
||||
(At each include point the file is inlined and scanned for further
|
||||
o include - all includes are inlined, from top to bottom, depth first.
|
||||
(At each include point the file is inlined and scanned for further
|
||||
includes, recursively, before proceeding.)
|
||||
|
||||
Then "global" rules are evaluated, top to bottom. If a rule is re-
|
||||
Then "global" rules are evaluated, top to bottom. If a rule is re-
|
||||
peated, the last one wins:
|
||||
|
||||
o skip (at top level)
|
||||
@ -877,30 +899,30 @@ TIPS
|
||||
|
||||
Then for each CSV record in turn:
|
||||
|
||||
o test all if blocks. If any of them contain a end rule, skip all re-
|
||||
maining CSV records. Otherwise if any of them contain a skip rule,
|
||||
skip that many CSV records. If there are multiple matched skip
|
||||
o test all if blocks. If any of them contain a end rule, skip all re-
|
||||
maining CSV records. Otherwise if any of them contain a skip rule,
|
||||
skip that many CSV records. If there are multiple matched skip
|
||||
rules, the first one wins.
|
||||
|
||||
o collect all field assignments at top level and in matched if blocks.
|
||||
When there are multiple assignments for a field, keep only the last
|
||||
o collect all field assignments at top level and in matched if blocks.
|
||||
When there are multiple assignments for a field, keep only the last
|
||||
one.
|
||||
|
||||
o compute a value for each hledger field - either the one that was as-
|
||||
o compute a value for each hledger field - either the one that was as-
|
||||
signed to it (and interpolate the %CSVFIELDNAME references), or a de-
|
||||
fault
|
||||
|
||||
o generate a synthetic hledger transaction from these values.
|
||||
|
||||
This is all part of the CSV reader, one of several readers hledger can
|
||||
use to parse input files. When all files have been read successfully,
|
||||
the transactions are passed as input to whichever hledger command the
|
||||
This is all part of the CSV reader, one of several readers hledger can
|
||||
use to parse input files. When all files have been read successfully,
|
||||
the transactions are passed as input to whichever hledger command the
|
||||
user specified.
|
||||
|
||||
|
||||
|
||||
REPORTING BUGS
|
||||
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
|
||||
Report bugs at http://bugs.hledger.org (or on the #hledger IRC channel
|
||||
or hledger mail list)
|
||||
|
||||
|
||||
@ -914,7 +936,7 @@ COPYRIGHT
|
||||
|
||||
|
||||
SEE ALSO
|
||||
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
|
||||
hledger(1), hledger-ui(1), hledger-web(1), hledger-api(1),
|
||||
hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
|
||||
dot(5), ledger(1)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user