]> gitweb.michael.orlitzky.com - dead/htsn-import.git/commitdiff
Add a new (un)pickler for the auto racing schedule "TBA"-able time field.
authorMichael Orlitzky <michael@orlitzky.com>
Thu, 23 Jan 2014 20:37:53 +0000 (15:37 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Thu, 23 Jan 2014 20:37:53 +0000 (15:37 -0500)
src/TSN/Picklers.hs

index f80b085efb1dd06507b0735cff9b2d5ba217bc6d..c70b2ba84edc5d627575622d1bb2a609f99bb195 100644 (file)
@@ -4,6 +4,7 @@
 module TSN.Picklers (
   xp_date,
   xp_gamedate,
+  xp_tba_time,
   xp_time,
   xp_time_stamp )
 where
@@ -14,6 +15,7 @@ import Data.Time.Format ( formatTime, parseTime )
 import System.Locale ( defaultTimeLocale )
 import Text.XML.HXT.Arrow.Pickle (
   xpText,
+  xpWrap,
   xpWrapMaybe )
 import Text.XML.HXT.Arrow.Pickle.Xml ( PU )
 
@@ -100,6 +102,22 @@ xp_time =
     from_time = formatTime defaultTimeLocale xp_time_format
 
 
+-- | (Un)pickle a UTCTime without the date portion, allowing for a
+--   value of \"TBA\" (which gets translated to 'Nothing').
+--
+xp_tba_time :: PU (Maybe UTCTime)
+xp_tba_time =
+  (to_time, from_time) `xpWrap` xpText
+  where
+    to_time :: String -> Maybe UTCTime
+    to_time s
+      | s == "TBA" = Nothing
+      | otherwise = parseTime defaultTimeLocale xp_time_format s
+
+    from_time :: Maybe UTCTime -> String
+    from_time Nothing = ""
+    from_time (Just t) = formatTime defaultTimeLocale xp_time_format t
+
 
 -- | (Un)pickle the \<time_stamp\> element format to/from a 'UTCTime'.
 --