journal: support ledger3-compatible "apply account"
This commit is contained in:
		
							parent
							
								
									eaaaf6ddec
								
							
						
					
					
						commit
						a2b989d898
					
				| @ -295,19 +295,19 @@ journalAddFile f j@Journal{files=fs} = j{files=fs++[f]} | |||||||
| 
 | 
 | ||||||
| accountdirectivep :: ParsecT [Char] JournalContext (ExceptT String IO) JournalUpdate | accountdirectivep :: ParsecT [Char] JournalContext (ExceptT String IO) JournalUpdate | ||||||
| accountdirectivep = do | accountdirectivep = do | ||||||
|   string "account" |   (try $ string "apply" >> many1 spacenonewline >> string "account") | ||||||
|  |     <|> string "account" | ||||||
|   many1 spacenonewline |   many1 spacenonewline | ||||||
|   parent <- accountnamep |   parent <- accountnamep | ||||||
|   newline |   newline | ||||||
|   pushParentAccount parent |   pushParentAccount parent | ||||||
|   -- return $ return id |  | ||||||
|   return $ ExceptT $ return $ Right id |   return $ ExceptT $ return $ Right id | ||||||
| 
 | 
 | ||||||
| enddirectivep :: ParsecT [Char] JournalContext (ExceptT String IO) JournalUpdate | enddirectivep :: ParsecT [Char] JournalContext (ExceptT String IO) JournalUpdate | ||||||
| enddirectivep = do | enddirectivep = do | ||||||
|   string "end" |   string "end" | ||||||
|  |   optional $ many1 spacenonewline >> string "apply" >> many1 spacenonewline >> string "account" | ||||||
|   popParentAccount |   popParentAccount | ||||||
|   -- return (return id) |  | ||||||
|   return $ ExceptT $ return $ Right id |   return $ ExceptT $ return $ Right id | ||||||
| 
 | 
 | ||||||
| aliasdirectivep :: ParsecT [Char] JournalContext (ExceptT String IO) JournalUpdate | aliasdirectivep :: ParsecT [Char] JournalContext (ExceptT String IO) JournalUpdate | ||||||
|  | |||||||
| @ -596,10 +596,10 @@ $ hledger print | |||||||
| ## Default parent account | ## 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 `account` directive like so: | within a section of the journal. Use the `apply account` directive like so: | ||||||
| 
 | 
 | ||||||
| ``` {.journal} | ``` {.journal} | ||||||
| account home | apply account home | ||||||
| 
 | 
 | ||||||
| 2010/1/1 | 2010/1/1 | ||||||
|     food    $10 |     food    $10 | ||||||
| @ -608,6 +608,8 @@ account home | |||||||
| end | end | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | (`!account`, `account`, and `end apply account` are also supported). | ||||||
|  | 
 | ||||||
| If `end` is omitted, the effect lasts to the end of the file. | If `end` is omitted, the effect lasts to the end of the file. | ||||||
| The above is equivalent to: | The above is equivalent to: | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -711,10 +711,10 @@ $ hledger print | |||||||
| ##### Default parent account | ##### 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 `account` directive like so: | within a section of the journal. Use the `apply account` directive like so: | ||||||
| 
 | 
 | ||||||
| ``` {.journal} | ``` {.journal} | ||||||
| account home | apply account home | ||||||
| 
 | 
 | ||||||
| 2010/1/1 | 2010/1/1 | ||||||
|     food    $10 |     food    $10 | ||||||
| @ -723,6 +723,8 @@ account home | |||||||
| end | end | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | (`!account`, `account`, and `end apply account` are also supported). | ||||||
|  | 
 | ||||||
| If `end` is omitted, the effect lasts to the end of the file. | If `end` is omitted, the effect lasts to the end of the file. | ||||||
| The above is equivalent to: | The above is equivalent to: | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										48
									
								
								tests/journal/directives.test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								tests/journal/directives.test
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | |||||||
|  | # Accept three forms of the account directive | ||||||
|  | # . !account, !end (ledger 2, hledger) | ||||||
|  | hledger -f - accounts | ||||||
|  | <<< | ||||||
|  | !account a | ||||||
|  | 2016/1/1 | ||||||
|  |     (b)  1 | ||||||
|  | !end | ||||||
|  | 2016/1/2 | ||||||
|  |     (c)  1 | ||||||
|  | >>> | ||||||
|  | a:b | ||||||
|  | c | ||||||
|  | >>>=0 | ||||||
|  | 
 | ||||||
|  | # . account, end (ledger 3 pre ?, hledger) | ||||||
|  | hledger -f - accounts | ||||||
|  | <<< | ||||||
|  | account a | ||||||
|  | 2016/1/1 | ||||||
|  |     (b)  1 | ||||||
|  | end | ||||||
|  | 2016/1/2 | ||||||
|  |     (c)  1 | ||||||
|  | >>> | ||||||
|  | a:b | ||||||
|  | c | ||||||
|  | >>>=0 | ||||||
|  | 
 | ||||||
|  | # . apply account, end [apply account] (ledger 3, hledger) | ||||||
|  | # . now: apply account | ||||||
|  | hledger -f - accounts | ||||||
|  | <<< | ||||||
|  | apply account a | ||||||
|  | 2016/1/1 | ||||||
|  |     (b)  1 | ||||||
|  | end | ||||||
|  | apply account aa | ||||||
|  | 2016/1/1 | ||||||
|  |     (b)  1 | ||||||
|  | end apply account | ||||||
|  | 2016/1/2 | ||||||
|  |     (c)  1 | ||||||
|  | >>> | ||||||
|  | a:b | ||||||
|  | aa:b | ||||||
|  | c | ||||||
|  | >>>=0 | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user