49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # How to use another account separator character
 | |
| 
 | |
| [Timedot format](manual.html#timedot) makes me want to use dots (`.`) for separating account components, instead of colon (`:`). 
 | |
| For example, instead of `fos:hledger:timedot` I'd like to write `fos.hledger.timedot`.
 | |
| We can use the powerful [account aliases](manual.html#account-aliases) feature 
 | |
| to rewrite account names before hledger's account name parser sees them.
 | |
| 
 | |
| In journal files, we can use an alias directive.
 | |
| Note the backslash which tells the regular expression engine it's a literal `.` not a wildcard:
 | |
| 
 | |
| ```journal
 | |
| # alias /REGEX/=REPLACEMENT
 | |
| alias /\./=:
 | |
| 
 | |
| 2008/01/01 income
 | |
|     assets.bank.checking  $1
 | |
|     income.salary
 | |
| ```
 | |
| Check that subaccounts are recognised:
 | |
| ```shell
 | |
| $ hledger -f t.journal bal --no-elide
 | |
|                   $1  assets
 | |
|                   $1    bank
 | |
|                   $1      checking
 | |
|                  $-1  income
 | |
|                  $-1    salary
 | |
| --------------------
 | |
|                    0
 | |
| ```
 | |
| 
 | |
| Alias directives aren't supported in the timedot format,
 | |
| 
 | |
| ```timedot
 | |
| 2016/2/4
 | |
| fos.hledger.timedot  2
 | |
| fos.ledger           1
 | |
| ```
 | |
| so we would use the `--alias` command line option instead.
 | |
| The second backslash tells the shell that's a literal backslash, not a shell escape sequence:
 | |
| ```shell
 | |
| $ hledger --alias /\\./=: -f t.timedot bal --no-elide
 | |
|                 3.00  fos
 | |
|                 2.00    hledger
 | |
|                 2.00      timedot
 | |
|                 1.00    ledger
 | |
| --------------------
 | |
|                 3.00
 | |
| ```
 |