-- See also: TSN.XML.SportInfo
--
module TSN.XML.GameInfo (
- dtds )
+ dtds,
+ from_xml )
where
+import Data.Time.Clock ( UTCTime )
+import Text.XML.HXT.Core ( XmlTree )
+import Text.XML.HXT.DOM.ShowXml ( xshow )
+
+import TSN.Parse (
+ parse_message,
+ parse_xmlfid,
+ parse_xml_time_stamp )
+
-- | The DTDs for everything that we consider "Game Info."
--
-- TODO: This is the list from the old implementation. We need to
"nhlpreviewxml.dtd",
"recapxml.dtd",
"WorldBaseballPreviewXML.dtd" ]
+
+
+-- | The data structure that holds the XML representation of a
+-- GameInfo message.
+--
+data Message =
+ Message {
+ dtd :: String,
+ xml_file_id :: Int,
+ time_stamp :: UTCTime,
+ xml :: String }
+ deriving (Eq, Show)
+
+
+from_xml :: String -> XmlTree -> Either String Message
+from_xml dtdname xmltree = do
+ xmlfid <- parse_xmlfid xmltree
+ timestamp <- parse_xml_time_stamp xmltree
+ message <- parse_message xmltree
+ return $ Message dtdname (fromInteger xmlfid) timestamp (xshow [message])
+