X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTSN%2FPicklers.hs;h=dc3ed9a05cb452fbba1ad884593fc5ace02967c9;hb=0fa2d93c7fe436038e0f2b14d68b9e3cc3e165f7;hp=608f907e5b43896dc059e6aca8ea5be144b9fc46;hpb=cb5fd814ce4dbb761ebbff4771f16d97b1910173;p=dead%2Fhtsn-import.git diff --git a/src/TSN/Picklers.hs b/src/TSN/Picklers.hs index 608f907..dc3ed9a 100644 --- a/src/TSN/Picklers.hs +++ b/src/TSN/Picklers.hs @@ -3,7 +3,9 @@ -- module TSN.Picklers ( xp_date, + xp_date_padded, xp_gamedate, + xp_racedate, xp_tba_time, xp_time, xp_time_stamp ) @@ -26,19 +28,73 @@ import TSN.Parse ( time_stamp_format ) +-- | The format string for a base date in m/d/yyyy format. The +-- day/month are not padded at all. This will match for example, +-- +-- * 2/15/1983 +-- * 1/1/0000 +-- +date_format :: String +date_format = "%-m/%-d/%Y" + + +-- | The format string for a base date in mm/dd/yyyy format. The +-- day/month are padded to two characters with zeros. This will +-- match for example, +-- +-- * 02/15/1983 +-- * 01/01/0000 +-- +date_format_padded :: String +date_format_padded = "%0m/%0d/%Y" + + -- | (Un)pickle a UTCTime without the time portion. -- xp_date :: PU UTCTime xp_date = (to_date, from_date) `xpWrapMaybe` xpText where - format = "%-m/%-d/%Y" + to_date :: String -> Maybe UTCTime + to_date = parseTime defaultTimeLocale date_format + + from_date :: UTCTime -> String + from_date = formatTime defaultTimeLocale date_format + +-- | (Un)pickle a UTCTime without the time portion. The day/month are +-- padded to two characters with zeros. +-- +xp_date_padded :: PU UTCTime +xp_date_padded = + (to_date, from_date) `xpWrapMaybe` xpText + where to_date :: String -> Maybe UTCTime - to_date = parseTime defaultTimeLocale format + to_date = parseTime defaultTimeLocale date_format_padded from_date :: UTCTime -> String - from_date = formatTime defaultTimeLocale format + from_date = formatTime defaultTimeLocale date_format_padded + + +-- | (Un)pickle a 'UTCTime' from a \ element in an +-- 'AutoRaceResults' message. +-- +-- Example: +-- +-- 6/1/2014 1:00:00 PM +-- 5/24/2014 2:45:00 PM +-- +xp_racedate :: PU UTCTime +xp_racedate = + (to_racedate, from_racedate) `xpWrapMaybe` xpText + where + format = date_format ++ " " ++ "%-I:%M:%S %p" + + to_racedate :: String -> Maybe UTCTime + to_racedate = parseTime defaultTimeLocale format + + from_racedate :: UTCTime -> String + from_racedate = formatTime defaultTimeLocale format -- | (Un)pickle a UTCTime from a weather forecast's gamedate. Example