+-- |Functions and data for working with Twitter statuses.
module Twitter.Status
where
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,
deriving (Show, Eq)
-
-
+-- |Given some XML content, create a 'Status' from it.
status_from_content :: Content -> (Maybe Status)
status_from_content content =
case (reads status_id_data :: [(Integer, String)]) of
[] -> Nothing
parseresult:_ -> Just (Status (fst parseresult) created_at_data all_text user_object)
-
+
where
status_ids = (unique_id content)
first_status_id = get_char_data (status_ids !! 0)
-
+
created_ats = (status_created_at content)
- first_created_at = get_char_data (created_ats !! 0)
+ first_created_at = get_char_data (created_ats !! 0)
texts = (status_text content)
all_text = concat $ catMaybes (map get_char_data texts)
-
- users = (status_user content)
- first_user = user_from_content (users !! 0)
+ users = (status_user content)
+ first_user = user_from_content (users !! 0)
+-- |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
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,
+-- |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 =
+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