use longer but standard and clearer getCurrentTime/Day

This commit is contained in:
Simon Michael 2009-01-24 19:48:37 +00:00
parent b0178b88cc
commit 44cbed59cb
4 changed files with 13 additions and 16 deletions

View File

@ -42,14 +42,11 @@ showDate d = formatTime defaultTimeLocale "%Y/%m/%d" d
mkUTCTime :: Day -> TimeOfDay -> UTCTime
mkUTCTime day tod = localTimeToUTC utc (LocalTime day tod)
today :: IO Day
today = do
getCurrentDay :: IO Day
getCurrentDay = do
t <- getZonedTime
return $ localDay (zonedTimeToLocalTime t)
now :: IO UTCTime
now = getCurrentTime
elapsedSeconds :: Fractional a => UTCTime -> UTCTime -> a
elapsedSeconds t1 t2 = realToFrac $ diffUTCTime t1 t2
@ -231,7 +228,7 @@ Assumes any text in the parse stream has been lowercased.
-}
smartdate :: GenParser Char st SmartDate
smartdate = do
let dateparsers = [yyyymmdd, ymd, ym, md, y, d, month, mon, today', yesterday, tomorrow,
let dateparsers = [yyyymmdd, ymd, ym, md, y, d, month, mon, today, yesterday, tomorrow,
lastthisnextthing
]
(y,m,d) <- choice $ map try dateparsers
@ -310,8 +307,8 @@ mon = do
let i = monIndex m
return ("",show i,"")
today',yesterday,tomorrow :: GenParser Char st SmartDate
today' = string "today" >> return ("","","today")
today,yesterday,tomorrow :: GenParser Char st SmartDate
today = string "today" >> return ("","","today")
yesterday = string "yesterday" >> return ("","","yesterday")
tomorrow = string "tomorrow" >> return ("","","tomorrow")

View File

@ -147,14 +147,14 @@ parseArguments = do
-- based on today's date.
fixOptDates :: [Opt] -> IO [Opt]
fixOptDates opts = do
t <- today
return $ map (fixopt t) opts
d <- getCurrentDay
return $ map (fixopt d) opts
where
fixopt t (Begin s) = Begin $ fixSmartDateStr t s
fixopt t (End s) = End $ fixSmartDateStr t s
fixopt t (Display s) = -- hacky
fixopt d (Begin s) = Begin $ fixSmartDateStr d s
fixopt d (End s) = End $ fixSmartDateStr d s
fixopt d (Display s) = -- hacky
Display $ gsubRegexPRBy "\\[.+?\\]" fixbracketeddatestr s
where fixbracketeddatestr s = "[" ++ (fixSmartDateStr t $ init $ tail s) ++ "]"
where fixbracketeddatestr s = "[" ++ (fixSmartDateStr d $ init $ tail s) ++ "]"
fixopt _ o = o
-- | Figure out the overall date span we should report on, based on any

View File

@ -41,7 +41,7 @@ ledgerfromfilewithopts :: [Opt] -> [String] -> FilePath -> IO Ledger
ledgerfromfilewithopts opts args f = do
s <- readFile f
rl <- rawledgerfromstring s
reftime <- now
reftime <- getCurrentTime
return $ prepareLedger opts args reftime s rl
-- | Get a Ledger from your default ledger file, or raise an error.

View File

@ -97,6 +97,6 @@ parseLedgerAndDo opts args cmd = do
-- and, doesn't work with stdin. kludge it, stdin won't work with ui command
let f' = if f == "-" then "/dev/null" else f
rawtext <- readFile f'
reftime <- now
reftime <- getCurrentTime
let runcmd = cmd opts args . prepareLedger opts args reftime rawtext
return f >>= runErrorT . parseLedgerFile >>= either (hPutStrLn stderr) runcmd