imp: doc: more compact/accurate directives overview
This commit is contained in:
parent
7e4b2af361
commit
d8205306dc
@ -2466,74 +2466,81 @@ $ hledger print --explicit
|
||||
## Directives
|
||||
|
||||
A directive is a line in the journal beginning with a special keyword,
|
||||
that influences how the journal is processed.
|
||||
hledger's directives are based on a subset of Ledger's, but there are many differences
|
||||
(and also some differences between hledger versions).
|
||||
that influences how the journal is processed, how things are displayed, and so on.
|
||||
hledger's directives are based on (a subset of) Ledger's, but there are many differences,
|
||||
and also some differences between hledger versions.
|
||||
<!-- Directives' behaviour and interactions can get [complex](https://github.com/simonmichael/hledger/issues/793). -->
|
||||
Here are some more definitions:
|
||||
|
||||
Directives' behaviour and interactions can get a little bit [complex](https://github.com/simonmichael/hledger/issues/793),
|
||||
so here is a table summarising the directives and their effects, with links to more detailed docs.
|
||||
- *subdirective* - Some directives support subdirectives, written
|
||||
indented below the parent directive.
|
||||
|
||||
- *decimal mark* - The character to interpret as a decimal mark
|
||||
(period or comma) when parsing amounts of a commodity.
|
||||
|
||||
- *display style* - How to display amounts of a commodity in output:
|
||||
symbol side and spacing, digit groups, decimal mark, and number of
|
||||
decimal places.
|
||||
|
||||
Here are all the directives and their precise effects, with links to more detailed docs below:
|
||||
|
||||
<!-- <style> -->
|
||||
<!-- table a code { white-space:nowrap; } -->
|
||||
<!-- h1,h2,h3,h4,h5,h6 { color:red; } -->
|
||||
<!-- </style> -->
|
||||
|
||||
| directive | end directive | subdirectives | purpose | can affect (as of 2018/06)
|
||||
|-------------------|---------------------|-----------------|--------------------------------------------------------------------|----------------------------------------------
|
||||
| [`account`] | | any text | document account names, declare account types & display order | all entries in all files, before or after
|
||||
| [`alias`] | `end aliases` | | rewrite account names | following entries until end of current file or end directive
|
||||
| [`apply account`] | `end apply account` | | prepend a common parent to account names | following entries until end of current file or end directive
|
||||
| [`comment`] | `end comment` | | ignore part of journal | following entries until end of current file or end directive
|
||||
| [`commodity`] | | `format` | declare a commodity and its number notation & display style | number notation: following entries until end of current file; <br>display style: amounts of that commodity in reports
|
||||
| [`decimal-mark`] | | | declare the decimal mark character for parsing this file | following entries until next decimal-mark or end of current file; included files can override
|
||||
| [`D`] | | | declare a commodity to be used for commodityless amounts, and its number notation & display style | default commodity: following commodityless entries until end of current file; <br>number notation: following entries in that commodity until end of current file; <br>display style: amounts of that commodity in reports
|
||||
| [`include`] | | | include entries/directives from another file | what the included directives affect
|
||||
| [`payee`] | | | declare a payee name | following entries until end of current file
|
||||
| [`P`] | | | declare a market price for a commodity | amounts of that commodity in reports, when -V is used
|
||||
| [`Y`] | | | declare a year for yearless dates | following entries until end of current file
|
||||
| [`=`] | | | declare an auto posting rule, adding postings to other transactions | all entries in parent/current/child files (but not sibling files, see [#1212](https://github.com/simonmichael/hledger/issues/1212))
|
||||
| directive | effects |
|
||||
|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| **[`account`]** | Declare an account, for [checking](#check) all entries in all files;<br>and its [display order](#account-display-order) and [type](#declaring-account-types), for reports.<br>Subdirectives: any text, ignored. |
|
||||
| **[`alias`]** | Rewrites account names, in following entries until end of current file or [`end aliases`]. |
|
||||
| **[`apply account`]** | Prepends a common parent account to all account names, in following entries until end of current file or [`end apply account`]. |
|
||||
| **[`comment`]** | Ignores part of the journal file, until end of current file or [`end comment`]. |
|
||||
| **[`commodity`]** | Declares a commodity, for checking all entries in all files;<br>the decimal mark for parsing amounts of this commodity, for following entries until end of current file;<br>and its display style, for reports. Takes precedence over `D`.<br>Subdirectives: [`format`] (alternate syntax). |
|
||||
| **[`D`]** | Sets a default commodity to use for no-symbol amounts,<br>and its decimal mark for parsing amounts of this commodity in following entries until end of current file;<br>and its display style, for reports. |
|
||||
| **[`decimal-mark`]** | Declares the decimal mark, for parsing amounts of all commodities in following entries until next `decimal-mark` or end of current file. Included files can override. Takes precedence over `commodity` and `D`. |
|
||||
| **[`include`]** | Includes entries and directives from another file, as if they were written inline. |
|
||||
| **[`payee`]** | Declares a payee name, for checking all entries in all files. |
|
||||
| **[`P`]** | Declares a market price for a commodity on some date, for [valuation](#valuation) reports. |
|
||||
| **[`Y`]** | Declares a year for yearless dates, for following entries until end of current file. |
|
||||
| **[`~`]** (tilde) | Declares a periodic transaction rule that generates future transactions with `--forecast` and budget goals with `balance --budget`. |
|
||||
| **[`=`]** (equals) | Declares an auto posting rule that generates extra postings on matched transactions with `--auto`, in current, parent, and child files (but not sibling files, see [#1212](https://github.com/simonmichael/hledger/issues/1212)). |
|
||||
|
||||
[`account`]: #declaring-accounts
|
||||
[`alias`]: #rewriting-accounts
|
||||
[`apply account`]: #default-parent-account
|
||||
[`comment`]: #comment-blocks
|
||||
[`commodity`]: #declaring-commodities
|
||||
[`D`]: #default-commodity
|
||||
[`include`]: #including-other-files
|
||||
[`payee`]: #declaring-payees
|
||||
[`P`]: #market-prices
|
||||
[`Y`]: #default-year
|
||||
[`=`]: #auto-postings
|
||||
And here is an overview of which directives are useful for what:
|
||||
|
||||
And some definitions:
|
||||
| purpose | directives | command line options with similar effect |
|
||||
|---------------------------------------------------------------------------------|-----------------------------------------------|------------------------------------------|
|
||||
| Declaring a commodity's or file's decimal mark to help parse amounts accurately | `commodity`, `D`, `decimal-mark` | |
|
||||
| Modifying the journal file while parsing | `alias`, `apply account`, `comment`, `D`, `Y` | `--alias` |
|
||||
| Inlining or concatenating extra data files | `include` | multiple `-f/--file`'s |
|
||||
| Generating extra transactions or budget goals | `~` | |
|
||||
| Generating extra postings | `=` | |
|
||||
| Defining entities to help with error checking | `account`, `commodity`, `payee` | |
|
||||
| Defining accounts' display order and accounting type | `account` | |
|
||||
| Defining commodity display styles for output | `commodity`, `D` | `-c/--commodity-style` |
|
||||
|
||||
| | |
|
||||
|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| subdirective | optional indented directive line immediately following a parent directive |
|
||||
| number notation | how to interpret numbers when parsing journal entries (the identity of the decimal separator character). (Currently each commodity can have its own notation, even in the same file.) |
|
||||
| display style | how to display amounts of a commodity in reports (symbol side and spacing, digit groups, decimal separator, decimal places) |
|
||||
| directive scope | which entries and (when there are multiple files) which files are affected by a directive |
|
||||
|
||||
<!-- | **entries affected:** | -->
|
||||
<!-- | following | subsequent entries in the file/parse stream -->
|
||||
<!-- | delimited | subsequent entries, until an optional end directive -->
|
||||
<!-- | all | all preceding and following entries -->
|
||||
<!-- | **files affected:** | -->
|
||||
<!-- | current | affects current file only -->
|
||||
<!-- | children | affects current file and files included by it -->
|
||||
<!-- | siblings | affects current file, included files, and other same-level files, but not higher-level files -->
|
||||
<!-- | all | affects all files -->
|
||||
|
||||
As you can see, directives vary in which journal entries and files they affect,
|
||||
and whether they are focussed on input (parsing) or output (reports).
|
||||
Some directives have multiple effects.
|
||||
[`account`]: #declaring-accounts
|
||||
[`alias`]: #rewriting-accounts
|
||||
[`end aliases`]: #end-aliases
|
||||
[`apply account`]: #default-parent-account
|
||||
[`end apply account`]: #end-apply-account
|
||||
[`comment`]: #comment-blocks
|
||||
[`end comment`]: #end-comment
|
||||
[`commodity`]: #declaring-commodities
|
||||
[`format`]: #format
|
||||
[`D`]: #default-commodity
|
||||
[`include`]: #including-other-files
|
||||
[`payee`]: #declaring-payees
|
||||
[`P`]: #market-prices
|
||||
[`Y`]: #default-year
|
||||
[`~`]: #periodic-transactions
|
||||
[`=`]: #auto-postings
|
||||
|
||||
## Directives and multiple files
|
||||
|
||||
If you use multiple `-f`/`--file` options, or the `include` directive,
|
||||
hledger will process multiple input files. But note that directives
|
||||
which affect input (see above) typically last only until the end of
|
||||
the file in which they occur.
|
||||
hledger will process multiple input files. But directives which affect
|
||||
input typically have effect only until the end of the file in which
|
||||
they occur (and on any included files in that region).
|
||||
|
||||
This may seem inconvenient, but it's intentional; it makes reports
|
||||
stable and deterministic, independent of the order of input. Otherwise
|
||||
@ -2721,10 +2728,9 @@ or the end of the journal.
|
||||
For compatibility/historical reasons, `D` also acts like a [`commodity` directive](#declaring-commodities)
|
||||
(setting the commodity's decimal mark for parsing and [display style](#amount-display-format) for output).
|
||||
|
||||
The syntax is `D AMOUNT`.
|
||||
As with `commodity`, the amount must include a decimal mark (either period or comma).
|
||||
If both `commodity` and `D` directives are used for the same commodity, the `commodity` style takes precedence.
|
||||
|
||||
The syntax is `D AMOUNT`. Eg:
|
||||
Eg:
|
||||
```journal
|
||||
; commodity-less amounts should be treated as dollars
|
||||
; (and displayed with the dollar sign on the left, thousands separators and two decimal places)
|
||||
@ -2735,6 +2741,13 @@ D $1,000.00
|
||||
b
|
||||
```
|
||||
|
||||
If both `commodity` and `D` directives are found for a commodity,
|
||||
`commodity` takes precedence for setting decimal mark and display style.
|
||||
|
||||
If you are using `D` and also [checking](#check) commodities, you will need
|
||||
to add a `commodity` directive similar to the `D`.
|
||||
(The `hledger check commodities` command expects `commodity` directives, and ignores `D`).
|
||||
|
||||
## Declaring market prices
|
||||
|
||||
The `P` directive declares a market price, which is
|
||||
@ -3097,8 +3110,9 @@ include c.journal ; also affected
|
||||
|
||||
### `end aliases`
|
||||
|
||||
You can clear (forget) all currently defined aliases with the `end
|
||||
aliases` directive:
|
||||
You can clear (forget) all currently defined aliases
|
||||
(seen in the journal so far, or defined on the command line)
|
||||
with this directive:
|
||||
|
||||
```journal
|
||||
end aliases
|
||||
|
||||
Loading…
Reference in New Issue
Block a user