]> gitweb.michael.orlitzky.com - dead/htsn-import.git/blobdiff - src/TSN/Picklers.hs
Don't bother with the three-character limit on team_id fields; Postgres doesn't care.
[dead/htsn-import.git] / src / TSN / Picklers.hs
index 8076b29fc08566e3467c1976cad9fbbf626f52b1..054d0f6512724158e614c8264b8e2de1427616e1 100644 (file)
@@ -3,15 +3,13 @@
 --
 module TSN.Picklers (
   xp_date,
-  xp_team_id )
+  xp_time )
 where
 
 -- System imports.
 import Data.Time.Clock ( UTCTime )
 import Data.Time.Format ( formatTime, parseTime )
 import System.Locale ( defaultTimeLocale )
-import Text.Printf ( printf )
-import Text.Read ( readMaybe )
 import Text.XML.HXT.Arrow.Pickle (
   xpText,
   xpWrapMaybe )
@@ -33,19 +31,17 @@ xp_date =
     from_date = formatTime defaultTimeLocale format
 
 
--- | Parse a team_id. These are (so far!) three characters long, and
---   not necessarily numeric. For simplicity, we return a 'String'
---   rather than e.g. a @(Char, Char, Char)@. But unpickling will fail
---   if the team_id is longer than three characters.
+-- | (Un)pickle a UTCTime without the date portion.
 --
-xp_team_id :: PU String
-xp_team_id =
-  (to_team_id, from_team_id) `xpWrapMaybe` xpText
+xp_time :: PU UTCTime
+xp_time =
+  (to_time, from_time) `xpWrapMaybe` xpText
   where
-    to_team_id :: String -> Maybe String
-    to_team_id s
-      | length s <= 3 = Just s
-      | otherwise = Nothing
+    format = "%I:%M %p"
+
+    to_time :: String -> Maybe UTCTime
+    to_time = parseTime defaultTimeLocale format
+
+    from_time :: UTCTime -> String
+    from_time = formatTime defaultTimeLocale format
 
-    from_team_id :: String -> String
-    from_team_id = id