From: Michael Orlitzky Date: Sun, 1 Jun 2014 04:13:42 +0000 (-0400) Subject: Begin the implementation of TSN.XML.GameInfo. X-Git-Tag: 0.0.6~250 X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=1a8faeb14fad864bc760abbfef385f65868aa21d;p=dead%2Fhtsn-import.git Begin the implementation of TSN.XML.GameInfo. --- diff --git a/src/TSN/XML/GameInfo.hs b/src/TSN/XML/GameInfo.hs index b3ac3f6..af622f0 100644 --- a/src/TSN/XML/GameInfo.hs +++ b/src/TSN/XML/GameInfo.hs @@ -5,9 +5,19 @@ -- 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 @@ -37,3 +47,24 @@ dtds = "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]) +