mirror of
https://github.com/simonmichael/hledger.git
synced 2025-01-04 00:07:29 +03:00
drop old design doc
This commit is contained in:
parent
616a25979a
commit
6e03ed42fd
78
RULES.md
78
RULES.md
@ -1,78 +0,0 @@
|
|||||||
# hledger conversion rules v2 (draft)
|
|
||||||
|
|
||||||
When hledger reads CSV files, it looks for conversion rules that help
|
|
||||||
it transform the CSV records into meaningful journal entries. These
|
|
||||||
usually come from a file, named like the csv file with a `.rules`
|
|
||||||
suffix added.
|
|
||||||
|
|
||||||
The version 2 rules format aims to be more powerful and more
|
|
||||||
understandable than version 1. This design document describes the
|
|
||||||
proposed rules and syntax for discussion and refinement.
|
|
||||||
|
|
||||||
## Rules syntax
|
|
||||||
|
|
||||||
Several kinds of rule may be used. In order of increasing complexity:
|
|
||||||
|
|
||||||
1. A **FIELD LIST** is an easy way to name CSV fields, and also to
|
|
||||||
assign them to entry fields. It is a comma-separated list of names
|
|
||||||
on one line, as is often found at the start of a CSV file. When
|
|
||||||
standard journal entry field names are used (`date`, `date2`,
|
|
||||||
`status`, `code`, `description`, `account`, `account2`, `amount`,
|
|
||||||
`comment`, `tag`), the csv values in that position are used for
|
|
||||||
those entry fields. Eg:
|
|
||||||
|
|
||||||
date, desc, amount, notes, some other field
|
|
||||||
|
|
||||||
2. **FIELD ASSIGNMENTS** are a slightly more flexible way to define
|
|
||||||
entry fields. They consist of an entry field name, then a colon
|
|
||||||
(optional), then a string containing 0 or more CSV field
|
|
||||||
references. Eg, here the entry description is built from three CSV
|
|
||||||
fields:
|
|
||||||
|
|
||||||
description: %desc (%notes) %"some other field"
|
|
||||||
|
|
||||||
3. **ENTRY TEMPLATES** give most flexibility, defining the entire
|
|
||||||
journal entry at once. They look like a standard journal entry, but
|
|
||||||
with CSV field references instead of values, beginning with `%date`
|
|
||||||
on the first line. Eg, this builds an entry with an extra virtual
|
|
||||||
posting:
|
|
||||||
|
|
||||||
%date %description
|
|
||||||
%account %amount
|
|
||||||
%default-account
|
|
||||||
(some special account) %amount
|
|
||||||
|
|
||||||
4. **CONDITIONAL BLOCKS** enable field assignments or an entry
|
|
||||||
template, when a CSV field matches a certain pattern. They consist
|
|
||||||
of the word `if` (optional), then a CSV field name, then either `~`
|
|
||||||
(for case-insensitive infix regular expression matching) or `=`
|
|
||||||
(for case-insensitive exact matching), then the regular expression
|
|
||||||
or value to match, then one or more field assignments or one entry
|
|
||||||
template, and finally a blank line. Eg, here if description
|
|
||||||
contains "groc" then the entry's account and comment are set as
|
|
||||||
shown:
|
|
||||||
|
|
||||||
description ~ groc
|
|
||||||
account: expenses:groceries
|
|
||||||
comment: household
|
|
||||||
|
|
||||||
5. **DIRECTIVES** influence the overall conversion process. They are:
|
|
||||||
|
|
||||||
skip-lines 1 # skips this number of CSV header lines
|
|
||||||
date-format %d/%m/%y # parses the CSV date field in this way
|
|
||||||
default-currency $ # adds this currency symbol to amounts without one
|
|
||||||
default-account assets:checking # uses this value as the default for account2
|
|
||||||
|
|
||||||
## Other rules syntax features:
|
|
||||||
|
|
||||||
- **COMMENTS** beginning with `#` or `;` are ignored, as are (except
|
|
||||||
as noted above) blank lines.
|
|
||||||
|
|
||||||
- **FIELD NAMES** are either a word containing no whitespace and no
|
|
||||||
comment character (`;` or `#`), or a phrase enclosed by double quotes.
|
|
||||||
|
|
||||||
- **FIELD REFERENCES** look like `%name` or `%1`. They are replaced by
|
|
||||||
the content of the CSV field with that name or position. A reference
|
|
||||||
to a field containing an amount may be written `%-name`, in which
|
|
||||||
case the amount's sign will be reversed.
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user