import Data.Maybe
import Data.String.Utils (join, splitWs)
+import Data.Time (ZonedTime, formatTime, readsTime)
+import System.Locale (defaultTimeLocale, rfc822DateFormat)
import Test.HUnit
import Text.Regex (matchRegex, mkRegex)
import Text.XML.HaXml
+import Text.XML.HaXml.Posn (noPos)
import StringUtils (listify)
import Twitter.User
-- |Given some XML content, create a 'Status' from it.
-status_from_content :: Content -> (Maybe Status)
+status_from_content :: Content i -> (Maybe Status)
status_from_content content =
if (length status_ids) == 0
catMaybes maybe_status
where
(Document _ _ root _) = xmlParse xml_file_name xml_data
- root_elem = CElem root
+ root_elem = CElem root noPos
status_element = (single_status root_elem)
maybe_status = map status_from_content status_element
catMaybes maybe_statuses
where
(Document _ _ root _) = xmlParse xml_file_name xml_data
- root_elem = CElem root
+ root_elem = CElem root noPos
status_elements = (all_statuses root_elem)
maybe_statuses = map status_from_content status_elements
xml_file_name :: String
xml_file_name = ""
+
+created_at_to_rfc822 :: String -> Maybe String
+created_at_to_rfc822 s =
+ case reads_result of
+ [(t,_)] ->
+ Just $ formatTime defaultTimeLocale rfc822DateFormat t
+ _ -> Nothing
+ where
+ -- Should match e.g. "Sun Oct 24 18:21:41 +0000 2010"
+ fmt :: String
+ fmt = "%a %b %d %H:%M:%S %z %Y"
+
+ reads_result :: [(ZonedTime, String)]
+ reads_result = readsTime defaultTimeLocale fmt s
+
-- |Returns a nicely-formatted String representing the given 'Status'
-- object.
pretty_print :: Status -> String
matches = matchRegex username_regex word
--- |Parse all usernames of the form @username from a status.
+-- |Parse all usernames of the form \@username from a status.
parse_usernames_from_status :: Status -> [String]
parse_usernames_from_status status =
catMaybes (map parse_username status_words)