fix parseTime warnings with time 1.5+ (#239)

This commit is contained in:
Simon Michael 2015-03-29 16:12:54 -07:00
parent e838ed0637
commit f8a24ccead
3 changed files with 29 additions and 8 deletions

View File

@ -427,13 +427,23 @@ nthdayofweekcontaining n d | d1 >= d = d1
-- parseTime defaultTimeLocale "%Y-%m-%d %H:%M:%S" s -- parseTime defaultTimeLocale "%Y-%m-%d %H:%M:%S" s
-- ] -- ]
parsetime :: ParseTime t => TimeLocale -> String -> String -> Maybe t
parsetime =
#if MIN_VERSION_time(1,5,0)
parseTimeM True
#else
parseTime
#endif
-- | Parse a couple of date string formats to a time type. -- | Parse a couple of date string formats to a time type.
parsedateM :: String -> Maybe Day parsedateM :: String -> Maybe Day
parsedateM s = firstJust [ parsedateM s = firstJust [
parseTime defaultTimeLocale "%Y/%m/%d" s, parsetime defaultTimeLocale "%Y/%m/%d" s,
parseTime defaultTimeLocale "%Y-%m-%d" s parsetime defaultTimeLocale "%Y-%m-%d" s
] ]
-- -- | Parse a date-time string to a time type, or raise an error. -- -- | Parse a date-time string to a time type, or raise an error.
-- parsedatetime :: String -> LocalTime -- parsedatetime :: String -> LocalTime
-- parsedatetime s = fromMaybe (error' $ "could not parse timestamp \"" ++ s ++ "\"") -- parsedatetime s = fromMaybe (error' $ "could not parse timestamp \"" ++ s ++ "\"")
@ -447,7 +457,7 @@ parsedate s = fromMaybe (error' $ "could not parse date \"" ++ s ++ "\"")
-- | Parse a time string to a time type using the provided pattern, or -- | Parse a time string to a time type using the provided pattern, or
-- return the default. -- return the default.
parsetimewith :: ParseTime t => String -> String -> t -> t parsetimewith :: ParseTime t => String -> String -> t -> t
parsetimewith pat s def = fromMaybe def $ parseTime defaultTimeLocale pat s parsetimewith pat s def = fromMaybe def $ parsetime defaultTimeLocale pat s
{-| {-|
Parse a date in any of the formats allowed in ledger's period expressions, Parse a date in any of the formats allowed in ledger's period expressions,

View File

@ -14,7 +14,7 @@ import Data.Time.Calendar
import Data.Time.Clock import Data.Time.Clock
import Data.Time.Format import Data.Time.Format
import Data.Time.LocalTime import Data.Time.LocalTime
#if !MIN_VERSION_time(1,5,0) #if !(MIN_VERSION_time(1,5,0))
import System.Locale (defaultTimeLocale) import System.Locale (defaultTimeLocale)
#endif #endif
import Test.HUnit import Test.HUnit
@ -112,7 +112,12 @@ tests_Hledger_Data_TimeLog = TestList [
nowstr = showtime now nowstr = showtime now
yesterday = prevday today yesterday = prevday today
clockin = TimeLogEntry nullsourcepos In clockin = TimeLogEntry nullsourcepos In
mktime d = LocalTime d . fromMaybe midnight . parseTime defaultTimeLocale "%H:%M:%S" mktime d = LocalTime d . fromMaybe midnight .
#if MIN_VERSION_time(1,5,0)
parseTimeM True defaultTimeLocale "%H:%M:%S"
#else
parseTime defaultTimeLocale "%H:%M:%S"
#endif
showtime = formatTime defaultTimeLocale "%H:%M" showtime = formatTime defaultTimeLocale "%H:%M"
assertEntriesGiveStrings name es ss = assertEqual name ss (map tdescription $ timeLogEntriesToTransactions now es) assertEntriesGiveStrings name es ss = assertEqual name ss (map tdescription $ timeLogEntriesToTransactions now es)

View File

@ -32,10 +32,10 @@ import Data.List
import Data.Maybe import Data.Maybe
import Data.Ord import Data.Ord
import Data.Time.Calendar (Day) import Data.Time.Calendar (Day)
import Data.Time.Format (parseTime)
#if MIN_VERSION_time(1,5,0) #if MIN_VERSION_time(1,5,0)
import Data.Time.Format (defaultTimeLocale) import Data.Time.Format (parseTimeM, defaultTimeLocale)
#else #else
import Data.Time.Format (parseTime)
import System.Locale (defaultTimeLocale) import System.Locale (defaultTimeLocale)
#endif #endif
import Safe import Safe
@ -720,7 +720,13 @@ renderTemplate rules record t = regexReplaceBy "%[A-z0-9]+" replace t
parseDateWithFormatOrDefaultFormats :: Maybe DateFormat -> String -> Maybe Day parseDateWithFormatOrDefaultFormats :: Maybe DateFormat -> String -> Maybe Day
parseDateWithFormatOrDefaultFormats mformat s = firstJust $ map parsewith formats parseDateWithFormatOrDefaultFormats mformat s = firstJust $ map parsewith formats
where where
parsewith = flip (parseTime defaultTimeLocale) s parsetime =
#if MIN_VERSION_time(1,5,0)
parseTimeM True
#else
parseTime
#endif
parsewith = flip (parsetime defaultTimeLocale) s
formats = maybe formats = maybe
["%Y/%-m/%-d" ["%Y/%-m/%-d"
,"%Y-%-m-%-d" ,"%Y-%-m-%-d"