From 1a8faeb14fad864bc760abbfef385f65868aa21d Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Sun, 1 Jun 2014 00:13:42 -0400 Subject: [PATCH] Begin the implementation of TSN.XML.GameInfo. --- src/TSN/XML/GameInfo.hs | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) 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]) + -- 2.43.2