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 :: Day -> UTCTime | ||||||
| dayToUTC d = localTimeToUTC utc (LocalTime d midnight) | dayToUTC d = localTimeToUTC utc (LocalTime d midnight) | ||||||
| 
 | 
 | ||||||
| -- | Convert a smart date string to a date span using the provided date as | -- | Convert a period expression to a date span using the provided reference date. | ||||||
| -- reference point. | spanFromPeriodExpr refdate = spanFromSmartDateString refdate | ||||||
|  | 
 | ||||||
|  | -- | Convert a smart date string to a date span using the provided reference date. | ||||||
| spanFromSmartDateString :: Day -> String -> DateSpan | spanFromSmartDateString :: Day -> String -> DateSpan | ||||||
| spanFromSmartDateString refdate s = DateSpan (Just b) (Just e) | spanFromSmartDateString refdate s = DateSpan (Just b) (Just e) | ||||||
|     where |     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) |       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 | -- | 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 :: Day -> String -> String | ||||||
| fixSmartDateStr t s = printf "%04d/%02d/%02d" y m d | fixSmartDateStr t s = printf "%04d/%02d/%02d" y m d | ||||||
|     where |     where | ||||||
|       (y,m,d) = toGregorian $ fixSmartDate t sdate |       (y,m,d) = toGregorian $ fixSmartDate t sdate | ||||||
|       sdate = fromparse $ parsewith smartdate $ map toLower s |       sdate = fromparse $ parsewith smartdate $ map toLower s | ||||||
| 
 | 
 | ||||||
| -- | Convert a SmartDate to an absolute date using the provided date as | -- | Convert a SmartDate to an absolute date using the provided reference date. | ||||||
| -- reference point. |  | ||||||
| fixSmartDate :: Day -> SmartDate -> Day | fixSmartDate :: Day -> SmartDate -> Day | ||||||
| fixSmartDate refdate sdate = fix sdate | fixSmartDate refdate sdate = fix sdate | ||||||
|     where |     where | ||||||
|  | |||||||
							
								
								
									
										74
									
								
								Options.hs
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								Options.hs
									
									
									
									
									
								
							| @ -126,76 +126,26 @@ dateSpanFromOpts refdate opts | |||||||
|       parse s = parsedate $ printf "%04s/%02s/%02s" y m d |       parse s = parsedate $ printf "%04s/%02s/%02s" y m d | ||||||
|           where (y,m,d) = fromparse $ parsewith smartdate $ s |           where (y,m,d) = fromparse $ parsewith smartdate $ s | ||||||
| 
 | 
 | ||||||
| spanFromPeriodExpr refdate = spanFromSmartDateString refdate | -- | Get the value of the (first) depth option, if any. | ||||||
| 
 |  | ||||||
| -- | 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. |  | ||||||
| depthFromOpts :: [Opt] -> Maybe Int | depthFromOpts :: [Opt] -> Maybe Int | ||||||
| depthFromOpts opts = | depthFromOpts opts = listtomaybeint $ optValuesForConstructor Depth opts | ||||||
|     case depthopts of |  | ||||||
|       (x:_) -> Just $ read x |  | ||||||
|       _     -> Nothing |  | ||||||
|     where |     where | ||||||
|       depthopts = concatMap getdepth opts |       listtomaybeint [] = Nothing | ||||||
|       getdepth (Depth s) = [s] |       listtomaybeint vs = Just $ read $ head vs | ||||||
|       getdepth _ = [] |  | ||||||
| 
 | 
 | ||||||
| -- | Get the value of the display option, if any. | -- | Get the value of the (first) display option, if any. | ||||||
| displayFromOpts :: [Opt] -> Maybe String | displayFromOpts :: [Opt] -> Maybe String | ||||||
| displayFromOpts opts = | displayFromOpts opts = listtomaybe $ optValuesForConstructor Display opts | ||||||
|     case displayopts of |  | ||||||
|       (s:_) -> Just s |  | ||||||
|       _     -> Nothing |  | ||||||
|     where |     where | ||||||
|       displayopts = concatMap getdisplay opts |       listtomaybe [] = Nothing | ||||||
|       getdisplay (Display s) = [s] |       listtomaybe vs = Just $ head vs | ||||||
|       getdisplay _ = [] |  | ||||||
| 
 | 
 | ||||||
| -- | Get the ledger file path from options, an environment variable, or a default | -- | Get the ledger file path from options, an environment variable, or a default | ||||||
| ledgerFilePathFromOpts :: [Opt] -> IO String | ledgerFilePathFromOpts :: [Opt] -> IO String | ||||||
| ledgerFilePathFromOpts opts = do | ledgerFilePathFromOpts opts = do | ||||||
|   envordefault <- getEnv fileenvvar `catch` \_ -> return defaultfile |   envordefault <- getEnv fileenvvar `catch` \_ -> return defaultfile | ||||||
|   paths <- mapM tildeExpand $ [envordefault] ++ (concatMap getfile opts) |   paths <- mapM tildeExpand $ [envordefault] ++ optValuesForConstructor File opts | ||||||
|   return $ last paths |   return $ last paths | ||||||
|     where |  | ||||||
|       getfile (File s) = [s] |  | ||||||
|       getfile _ = [] |  | ||||||
| 
 | 
 | ||||||
| -- | Expand ~ in a file path (does not handle ~name). | -- | Expand ~ in a file path (does not handle ~name). | ||||||
| tildeExpand :: FilePath -> IO FilePath | tildeExpand :: FilePath -> IO FilePath | ||||||
| @ -221,9 +171,3 @@ parseAccountDescriptionArgs opts args = (as, ds') | |||||||
|           negchar |           negchar | ||||||
|               | OptionsAnywhere `elem` opts = '^' |               | OptionsAnywhere `elem` opts = '^' | ||||||
|               | otherwise = '-' |               | 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