]> gitweb.michael.orlitzky.com - dead/htsn-import.git/commitdiff
Add/rework picklers tests, and use the new picklers in TSN.XML.EarlyLine.
authorMichael Orlitzky <michael@orlitzky.com>
Wed, 23 Jul 2014 03:20:36 +0000 (23:20 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Wed, 23 Jul 2014 03:20:36 +0000 (23:20 -0400)
src/TSN/Picklers.hs
src/TSN/XML/EarlyLine.hs

index 232f3579c7a6f257c018b7ad24d6d4c01e40c095..3d7215a07744436055a7eff73a8169201d394301 100644 (file)
@@ -107,6 +107,10 @@ xp_date =
 --   >>> unpickleDoc xp_date_padded tn
 --   Just 1983-02-15 00:00:00 UTC
 --
+--   >>> let tn = text_node "06/07/2014"
+--   >>> unpickleDoc xp_date_padded tn
+--   Just 2014-06-07 00:00:00 UTC
+--
 xp_date_padded :: PU UTCTime
 xp_date_padded =
   (to_date, from_date) `xpWrapMaybe` xpText
@@ -222,26 +226,16 @@ xp_datetime =
 --
 --   Examples:
 --
+--   >>> import Data.Maybe ( fromJust )
 --   >>> :{
 --         let parse_date :: String -> Maybe UTCTime;
 --         parse_date = parseTime defaultTimeLocale date_format;
 --       :}
 --
---   >>> let (Just d1) = parse_date "1/1/1970"
---   >>> date_suffix d1
---   "st"
---
---   >>> let (Just d2) = parse_date "1/2/1970"
---   >>> date_suffix d2
---   "nd"
---
---   >>> let (Just d3) = parse_date "1/3/1970"
---   >>> date_suffix d3
---   "rd"
---
---   >>> let (Just d4) = parse_date "1/4/1970"
---   >>> date_suffix d4
---   "th"
+--   >>> let dates = [ "1/" ++ (d : "/1970") | d <- ['1'..'9'] ]
+--   >>> let suffixes = map (date_suffix . fromJust . parse_date) dates
+--   >>> suffixes
+--   ["st","nd","rd","th","th","th","th","th","th"]
 --
 date_suffix :: UTCTime -> String
 date_suffix t =
@@ -480,6 +474,13 @@ xp_ambiguous_time =
 --   >>> pickleDoc xp_early_line_date result
 --   NTree (XTag "/" []) [NTree (XText "SUNDAY, MAY 25TH (05/25/2014)") []]
 --
+--   >>> let tn = text_node "SATURDAY, JUNE 7TH (06/07/2014)"
+--   >>> let (Just result) = unpickleDoc xp_early_line_date tn
+--   >>> result
+--   2014-06-07 00:00:00 UTC
+--   >>> pickleDoc xp_early_line_date result
+--   NTree (XTag "/" []) [NTree (XText "SATURDAY, JUNE 7TH (06/07/2014)") []]
+--
 xp_early_line_date :: PU UTCTime
 xp_early_line_date =
   (to_time, from_time) `xpWrapMaybe` xpText
@@ -504,7 +505,7 @@ xp_early_line_date =
 
     wacko_date_formats :: [String]
     wacko_date_formats =
-      ["%A, %B %d" ++ suffix ++ " (" ++ date_format_padded ++ ")" |
+      ["%A, %B %-d" ++ suffix ++ " (" ++ date_format_padded ++ ")" |
          suffix <- ["ST", "ND", "RD","TH"] ]
 
     to_time :: String -> Maybe UTCTime
@@ -519,7 +520,9 @@ xp_early_line_date =
       formatTime caps_time_locale fmt t
       where
         upper_suffix = map toUpper (date_suffix t)
-        fmt = "%A, %B %d" ++ upper_suffix ++ " (" ++ date_format_padded ++ ")"
+        fmt = "%A, %B %-d" ++ upper_suffix ++ " (" ++ date_format_padded ++ ")"
+
+
 
 -- | Create an 'XmlTree' containing only the given text. This is
 --   useful for testing (un)picklers, where we don't want to have to
index 627238f92bfbf280eb02b764be45f20c6b0fff5d..26625e748b2dec6d769ea0be068c5b9b3962b644 100644 (file)
@@ -36,7 +36,10 @@ import Text.XML.HXT.Core (
 -- Local imports.
 import TSN.Codegen ( tsn_codegen_config )
 import TSN.DbImport ( DbImport(..) )
-import TSN.Picklers ( xp_time_stamp )
+import TSN.Picklers (
+  xp_ambiguous_time,
+  xp_early_line_date,
+  xp_time_stamp )
 import TSN.XmlImport ( XmlImport(..) )
 import Xml (
   FromXml(..),
@@ -244,7 +247,7 @@ pickle_date :: PU EarlyLineDateXml
 pickle_date =
   xpElem "date" $
     xpWrap (from_tuple, to_tuple) $
-    xpTriple (xpAttr "value" undefined)
+    xpTriple (xpAttr "value" xp_early_line_date)
              (xpElem "note" xpText)
              pickle_game
   where
@@ -256,7 +259,7 @@ pickle_game :: PU EarlyLineGameXml
 pickle_game =
   xpElem "game" $
     xpWrap (from_tuple, to_tuple) $
-    xp4Tuple (xpElem "time" undefined)
+    xp4Tuple (xpElem "time" xp_ambiguous_time)
              pickle_away_team
              pickle_home_team
              (xpElem "over_under" xpText)