rename parseError, parsePatternArgs, fix a bug
This commit is contained in:
		
							parent
							
								
									59f0a2fabe
								
							
						
					
					
						commit
						fa1b4bdfa2
					
				| @ -122,8 +122,8 @@ parseLedgerFile :: String -> IO (Either ParseError RawLedger) | ||||
| parseLedgerFile "-" = fmap (parse ledgerfile "-") $ hGetContents stdin | ||||
| parseLedgerFile f   = parseFromFile ledgerfile f | ||||
|      | ||||
| parseError :: (Show a) => a -> IO () | ||||
| parseError e = do putStr "ledger parse error at "; print e | ||||
| printParseError :: (Show a) => a -> IO () | ||||
| printParseError e = do putStr "ledger parse error at "; print e | ||||
| 
 | ||||
| -- set up token parsing, though we're not yet using these much | ||||
| ledgerLanguageDef = LanguageDef { | ||||
|  | ||||
							
								
								
									
										15
									
								
								Options.hs
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								Options.hs
									
									
									
									
									
								
							| @ -5,7 +5,7 @@ parseArguments, | ||||
| ledgerFilePathFromOpts, | ||||
| beginDateFromOpts, | ||||
| endDateFromOpts, | ||||
| parsePatternArgs,  | ||||
| parseAccountDescriptionArgs, | ||||
| regexFor,  | ||||
| nullpats,  | ||||
| wildcard,  | ||||
| @ -19,8 +19,6 @@ import Data.Maybe (fromMaybe) | ||||
|      | ||||
| import Ledger.Utils | ||||
| import Ledger.Types | ||||
| import Ledger.Parse (parseLedgerFile, parseError) | ||||
| import Ledger.Ledger (cacheLedger) | ||||
| 
 | ||||
| 
 | ||||
| usagehdr    = "Usage: hledger [OPTIONS] "++commands++" [ACCTPATTERNS] [-- DESCPATTERNS]\nOptions:" | ||||
| @ -107,12 +105,11 @@ endDateFromOpts opts = | ||||
|       getenddate _ = [] | ||||
|       defaultdate = "" | ||||
| 
 | ||||
| -- | ledger pattern arguments are: 0 or more account patterns | ||||
| -- optionally followed by -- and 0 or more description patterns. | ||||
| -- No arguments implies match all. Here we gather these into two lists. | ||||
| -- parsePatternArgs :: [String] -> (Regex,Regex) | ||||
| parsePatternArgs :: [String] -> ([String],[String]) | ||||
| parsePatternArgs args = (as, ds') | ||||
| -- | Gather any ledger-style account/description pattern arguments into | ||||
| -- two lists.  These are 0 or more account patterns optionally followed by | ||||
| -- 0 or more description patterns. | ||||
| parseAccountDescriptionArgs :: [String] -> ([String],[String]) | ||||
| parseAccountDescriptionArgs args = (as, ds') | ||||
|     where (as, ds) = break (=="--") args | ||||
|           ds' = dropWhile (=="--") ds | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										6
									
								
								Tests.hs
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Tests.hs
									
									
									
									
									
								
							| @ -14,11 +14,9 @@ assertEqual' e a = assertEqual "" e a | ||||
| 
 | ||||
| parse' p ts = parse p "" ts | ||||
| 
 | ||||
| -- | Assert a parsed thing equals some expected thing, or print a parse error. | ||||
| assertParseEqual :: (Show a, Eq a) => a -> (Either ParseError a) -> Assertion | ||||
| assertParseEqual expected parsed = | ||||
|     case parsed of | ||||
|       Left e -> parseError e | ||||
|       Right v -> assertEqual " " expected v | ||||
| assertParseEqual expected parsed = either printParseError (assertEqual " " expected) parsed | ||||
| 
 | ||||
| -- find tests with template haskell | ||||
| -- | ||||
|  | ||||
							
								
								
									
										12
									
								
								hledger.hs
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								hledger.hs
									
									
									
									
									
								
							| @ -37,7 +37,7 @@ import qualified Data.Map as Map (lookup) | ||||
| 
 | ||||
| import Options | ||||
| import Tests (hunit, quickcheck) | ||||
| import Ledger.Parse (parseLedgerFile, parseError) | ||||
| import Ledger.Parse (parseLedgerFile, printParseError) | ||||
| import Ledger.Utils hiding (test) | ||||
| import Ledger hiding (rawledger) | ||||
| 
 | ||||
| @ -75,7 +75,7 @@ balance opts args = parseLedgerAndDo opts args printbalance | ||||
|       printbalance l = putStr $ showLedgerAccountBalances l depth | ||||
|           where  | ||||
|             showsubs = (ShowSubs `elem` opts) | ||||
|             pats = parsePatternArgs args | ||||
|             pats = parseAccountDescriptionArgs args | ||||
|             depth = case (pats, showsubs) of | ||||
|                       -- when there is no -s or pattern args, show with depth 1 | ||||
|                       (([],[]), False) -> 1 | ||||
| @ -85,14 +85,14 @@ balance opts args = parseLedgerAndDo opts args printbalance | ||||
| -- (or report a parse error). This function makes the whole thing go. | ||||
| parseLedgerAndDo :: [Opt] -> [String] -> (Ledger -> IO ()) -> IO () | ||||
| parseLedgerAndDo opts args cmd =  | ||||
|     ledgerFilePathFromOpts opts >>= parseLedgerFile >>= either parseError runthecommand | ||||
|     ledgerFilePathFromOpts opts >>= parseLedgerFile >>= either printParseError runthecommand | ||||
|     where | ||||
|       runthecommand = cmd . cacheLedger . filterLedger begin end aregex dregex | ||||
|       begin = beginDateFromOpts opts | ||||
|       end = endDateFromOpts opts | ||||
|       aregex = regexFor apats | ||||
|       dregex = regexFor dpats | ||||
|       (acctpats,descpats) = parsePatternArgs args | ||||
|       aregex = regexFor acctpats | ||||
|       dregex = regexFor descpats | ||||
|       (acctpats,descpats) = parseAccountDescriptionArgs args | ||||
| 
 | ||||
| -- ghci helpers | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user