X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTwitter%2FStatus.hs;h=59b98761fce86d62ed6fdaab46d8c950c19fb174;hb=ee2deb5a51e416d607cce45ddd10d4e19c050771;hp=93b3f4e1cc2621cebac388766d567fa2401a0f0d;hpb=94484087fbfe98d6735aa82798a9bf506f97fd19;p=dead%2Fhalcyon.git diff --git a/src/Twitter/Status.hs b/src/Twitter/Status.hs index 93b3f4e..59b9876 100644 --- a/src/Twitter/Status.hs +++ b/src/Twitter/Status.hs @@ -1,3 +1,4 @@ +-- |Functions and data for working with Twitter statuses. module Twitter.Status where @@ -7,6 +8,8 @@ import Text.XML.HaXml import Twitter.User import Twitter.Xml +-- |Represents one Twitter status. We don't care about any of their +-- other properties. data Status = Status { status_id :: Integer, created_at :: String, text :: String, @@ -14,7 +17,7 @@ data Status = Status { status_id :: Integer, deriving (Show, Eq) - +-- |Given some XML content, create a 'Status' from it. status_from_content :: Content -> (Maybe Status) status_from_content content = @@ -52,7 +55,21 @@ status_from_content content = first_user = user_from_content (users !! 0) +-- |Takes an XML String as an argument, and returns the +-- status that was parsed from it. Should only be used +-- on XML string where a is a top-level element. +parse_status :: String -> [Status] +parse_status xml_data = + catMaybes maybe_status + where + (Document _ _ root _) = xmlParse xml_file_name xml_data + root_elem = CElem root + status_element = (single_status root_elem) + maybe_status = map status_from_content status_element + +-- |Takes an XML String as an argument, and returns the list of +-- statuses that can be parsed from it. parse_statuses :: String -> [Status] parse_statuses xml_data = catMaybes maybe_statuses @@ -63,12 +80,14 @@ parse_statuses xml_data = maybe_statuses = map status_from_content status_elements --- This is a required parameter to the xmlParse function used in --- error reporting. We're not parsing a function, though, so we --- leave it blank. +-- |This is a required parameter to the xmlParse function used in +-- error reporting. We're not parsing a function, though, so we leave +-- it blank. xml_file_name :: String xml_file_name = "" +-- |Returns a nicely-formatted String representing the given 'Status' +-- object. pretty_print :: Status -> String pretty_print status = concat [ name, @@ -84,8 +103,10 @@ pretty_print status = +-- |Given a list of statuses, returns the greatest status_id belonging +-- to one of the statuses in the list. get_max_status_id :: [Status] -> Integer get_max_status_id statuses = maximum status_ids where - status_ids = map status_id statuses \ No newline at end of file + status_ids = map status_id statuses