extra: fix up hledger-rewrite to work with Megaparsec
This commit is contained in:
		
							parent
							
								
									8c7e7c02c3
								
							
						
					
					
						commit
						96fc6ced6a
					
				| @ -17,19 +17,20 @@ See the command-line help for more details. | ||||
| Currently does not work when invoked via hledger, run hledger-rewrite[.hs] directly. | ||||
| 
 | ||||
| Needs to work on unbalanced entries, eg while editing one. | ||||
| 
 | ||||
| / | ||||
| Tested-with: hledger HEAD ~ 2016/3/2 | ||||
| 
 | ||||
| |-} | ||||
| 
 | ||||
| import qualified Data.Text as T | ||||
| -- hledger lib, cli and cmdargs utils | ||||
| import Hledger.Cli | ||||
| -- more utils for parsing | ||||
| -- #if !MIN_VERSION_base(4,8,0) | ||||
| -- import Control.Applicative.Compat ((<*)) | ||||
| -- #endif | ||||
| import Text.Parsec | ||||
| 
 | ||||
| import Text.Megaparsec | ||||
| import Text.Megaparsec.Text | ||||
| 
 | ||||
| cmdmode :: Mode RawOpts | ||||
| cmdmode = (defCommandMode ["hledger-rewrite"]) { | ||||
| @ -51,11 +52,11 @@ type PostingExpr = (AccountName, AmountExpr) | ||||
| data AmountExpr = AmountLiteral String | AmountMultiplier Quantity deriving (Show) | ||||
| 
 | ||||
| addPostingExprsFromOpts :: RawOpts -> [PostingExpr] | ||||
| addPostingExprsFromOpts = map (either parseerror id . runParser (postingexprp <* eof) nulljps "") . map stripquotes . listofstringopt "add-posting" | ||||
| addPostingExprsFromOpts = map (either parseerror id . runParser (postingexprp <* eof) "") . map (stripquotes . T.pack) . listofstringopt "add-posting" | ||||
| 
 | ||||
| postingexprp = do | ||||
|   a <- accountnamep | ||||
|   spacenonewline >> many1 spacenonewline | ||||
|   spacenonewline >> some spacenonewline | ||||
|   aex <- amountexprp | ||||
|   many spacenonewline | ||||
|   return (a,aex) | ||||
| @ -98,4 +99,3 @@ main = do | ||||
|     let j' = j{jtxns=map (\t -> if q `matchesTransaction` t then rewriteTransaction t addps else t) ts} | ||||
|     -- run the print command, showing all transactions | ||||
|     print' opts{reportopts_=ropts{query_=""}} j' | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user