options cleanup
This commit is contained in:
		
							parent
							
								
									57c31f5ab0
								
							
						
					
					
						commit
						c3bec2a3de
					
				| @ -53,8 +53,10 @@ elapsedSeconds t1 t2 = realToFrac $ diffUTCTime t1 t2 | ||||
| dayToUTC :: Day -> UTCTime | ||||
| dayToUTC d = localTimeToUTC utc (LocalTime d midnight) | ||||
| 
 | ||||
| -- | Convert a smart date string to a date span using the provided date as | ||||
| -- reference point. | ||||
| -- | Convert a period expression to a date span using the provided reference date. | ||||
| spanFromPeriodExpr refdate = spanFromSmartDateString refdate | ||||
| 
 | ||||
| -- | Convert a smart date string to a date span using the provided reference date. | ||||
| spanFromSmartDateString :: Day -> String -> DateSpan | ||||
| spanFromSmartDateString refdate s = DateSpan (Just b) (Just e) | ||||
|     where | ||||
| @ -88,15 +90,14 @@ spanFromSmartDateString refdate s = DateSpan (Just b) (Just e) | ||||
|       span (y,m,d)               = (day, nextday day) where day = fromGregorian (read y) (read m) (read d) | ||||
| 
 | ||||
| -- | Convert a smart date string to an explicit yyyy/mm/dd string using | ||||
| -- the provided date as reference point. | ||||
| -- the provided reference date. | ||||
| fixSmartDateStr :: Day -> String -> String | ||||
| fixSmartDateStr t s = printf "%04d/%02d/%02d" y m d | ||||
|     where | ||||
|       (y,m,d) = toGregorian $ fixSmartDate t sdate | ||||
|       sdate = fromparse $ parsewith smartdate $ map toLower s | ||||
| 
 | ||||
| -- | Convert a SmartDate to an absolute date using the provided date as | ||||
| -- reference point. | ||||
| -- | Convert a SmartDate to an absolute date using the provided reference date. | ||||
| fixSmartDate :: Day -> SmartDate -> Day | ||||
| fixSmartDate refdate sdate = fix sdate | ||||
|     where | ||||
|  | ||||
							
								
								
									
										74
									
								
								Options.hs
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								Options.hs
									
									
									
									
									
								
							| @ -126,76 +126,26 @@ dateSpanFromOpts refdate opts | ||||
|       parse s = parsedate $ printf "%04s/%02s/%02s" y m d | ||||
|           where (y,m,d) = fromparse $ parsewith smartdate $ s | ||||
| 
 | ||||
| spanFromPeriodExpr refdate = spanFromSmartDateString refdate | ||||
| 
 | ||||
| -- | Get the value of the begin date option, if any. | ||||
| beginDateFromOpts :: [Opt] -> Maybe Day | ||||
| beginDateFromOpts opts = | ||||
|     if null beginopts  | ||||
|     then Nothing | ||||
|     else Just $ parsedate $ printf "%04s/%02s/%02s" y m d | ||||
|     where | ||||
|       beginopts = concatMap getbegindate opts | ||||
|       getbegindate (Begin s) = [s] | ||||
|       getbegindate _ = [] | ||||
|       defaultdate = "" | ||||
|       (y,m,d) = fromparse $ parsewith smartdate $ last beginopts | ||||
| 
 | ||||
| -- | Get the value of the end date option, if any. | ||||
| endDateFromOpts :: [Opt] -> Maybe Day | ||||
| endDateFromOpts opts = | ||||
|     if null endopts  | ||||
|     then Nothing | ||||
|     else Just $ parsedate $ printf "%04s/%02s/%02s" y m d | ||||
|     where | ||||
|       endopts = concatMap getenddate opts | ||||
|       getenddate (End s) = [s] | ||||
|       getenddate _ = [] | ||||
|       defaultdate = "" | ||||
|       (y,m,d) = fromparse $ parsewith smartdate $ last endopts | ||||
| 
 | ||||
| -- | Get the value of the period option, if any. | ||||
| periodFromOpts :: [Opt] -> Maybe String | ||||
| periodFromOpts opts = | ||||
|     if null periodopts  | ||||
|     then Nothing | ||||
|     else Just $ head periodopts | ||||
|     where | ||||
|       periodopts = concatMap getperiod opts | ||||
|       getperiod (Period s) = [s] | ||||
|       getperiod _ = [] | ||||
| 
 | ||||
| -- | Get the value of the depth option, if any. | ||||
| -- | Get the value of the (first) depth option, if any. | ||||
| depthFromOpts :: [Opt] -> Maybe Int | ||||
| depthFromOpts opts = | ||||
|     case depthopts of | ||||
|       (x:_) -> Just $ read x | ||||
|       _     -> Nothing | ||||
| depthFromOpts opts = listtomaybeint $ optValuesForConstructor Depth opts | ||||
|     where | ||||
|       depthopts = concatMap getdepth opts | ||||
|       getdepth (Depth s) = [s] | ||||
|       getdepth _ = [] | ||||
|       listtomaybeint [] = Nothing | ||||
|       listtomaybeint vs = Just $ read $ head vs | ||||
| 
 | ||||
| -- | Get the value of the display option, if any. | ||||
| -- | Get the value of the (first) display option, if any. | ||||
| displayFromOpts :: [Opt] -> Maybe String | ||||
| displayFromOpts opts = | ||||
|     case displayopts of | ||||
|       (s:_) -> Just s | ||||
|       _     -> Nothing | ||||
| displayFromOpts opts = listtomaybe $ optValuesForConstructor Display opts | ||||
|     where | ||||
|       displayopts = concatMap getdisplay opts | ||||
|       getdisplay (Display s) = [s] | ||||
|       getdisplay _ = [] | ||||
|       listtomaybe [] = Nothing | ||||
|       listtomaybe vs = Just $ head vs | ||||
| 
 | ||||
| -- | Get the ledger file path from options, an environment variable, or a default | ||||
| ledgerFilePathFromOpts :: [Opt] -> IO String | ||||
| ledgerFilePathFromOpts opts = do | ||||
|   envordefault <- getEnv fileenvvar `catch` \_ -> return defaultfile | ||||
|   paths <- mapM tildeExpand $ [envordefault] ++ (concatMap getfile opts) | ||||
|   paths <- mapM tildeExpand $ [envordefault] ++ optValuesForConstructor File opts | ||||
|   return $ last paths | ||||
|     where | ||||
|       getfile (File s) = [s] | ||||
|       getfile _ = [] | ||||
| 
 | ||||
| -- | Expand ~ in a file path (does not handle ~name). | ||||
| tildeExpand :: FilePath -> IO FilePath | ||||
| @ -221,9 +171,3 @@ parseAccountDescriptionArgs opts args = (as, ds') | ||||
|           negchar | ||||
|               | OptionsAnywhere `elem` opts = '^' | ||||
|               | otherwise = '-' | ||||
| 
 | ||||
| testoptions order cmdline = putStr $  | ||||
|     case getOpt order options cmdline of | ||||
|       (o,n,[]  ) -> "options=" ++ show o ++ "  args=" ++ show n | ||||
|       (o,_,errs) -> concat errs ++ usage | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user