]> gitweb.michael.orlitzky.com - dead/halcyon.git/blobdiff - src/Twitter/Status.hs
Use hyphens instead of underscores in access-token et al.
[dead/halcyon.git] / src / Twitter / Status.hs
index ef4e1037b9ca54b212f5666d60271ff832468301..176619d0ed5a6e2d9f2720b13fe4abed61350cfd 100644 (file)
@@ -1,3 +1,5 @@
+{-# LANGUAGE NoMonomorphismRestriction #-}
+
 -- | Functions and data for working with Twitter statuses.
 module Twitter.Status
 where
@@ -5,7 +7,7 @@ where
 import Control.Applicative ((<$>), (<*>))
 import Control.Monad (liftM)
 import Data.Aeson ((.:), FromJSON(..), Value(Object))
-import Data.Maybe (catMaybes, isJust)
+import Data.Maybe (fromMaybe, mapMaybe, isJust)
 import Data.Monoid (mempty)
 import Data.String.Utils (join, splitWs)
 import Data.Text (pack)
@@ -17,6 +19,7 @@ import System.Locale (defaultTimeLocale, rfc822DateFormat)
 import Test.HUnit
 import Text.Regex (matchRegex, mkRegex)
 
+import Html (replace_entities)
 import StringUtils (listify)
 import Twitter.User
 
@@ -38,7 +41,7 @@ instance FromJSON Status where
       (t .: id_field) <*>
       liftM isJustInt (t .: in_reply_to_status_id_field) <*>
       (t .: retweeted_field) <*>
-      (t .: text_field) <*>
+      liftM replace_entities (t .: text_field) <*>
       (t .: user_field)
     where
       -- The typechecker flips out without this.
@@ -74,7 +77,7 @@ utc_time_to_rfc822 mtz utc =
 
 show_created_at :: Maybe TimeZone -> Status -> String
 show_created_at mtz =
-  (maybe "" id) . (fmap $ utc_time_to_rfc822 mtz) . created_at
+  (fromMaybe "") . (fmap $ utc_time_to_rfc822 mtz) . created_at
 
 -- | Returns a nicely-formatted String representing the given 'Status'
 --   object.
@@ -121,7 +124,7 @@ parse_username word =
 -- | 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)
+  mapMaybe parse_username status_words
   where
     status_words = splitWs (text status)