X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Fhalcyon.git;a=blobdiff_plain;f=src%2FTwitter%2FStatus.hs;h=176619d0ed5a6e2d9f2720b13fe4abed61350cfd;hp=ef4e1037b9ca54b212f5666d60271ff832468301;hb=bbd3f429da0e9e5906f6aecb85f1c00683500428;hpb=9b6d95a82745ced2a58d9bc4ded555ee36b36673 diff --git a/src/Twitter/Status.hs b/src/Twitter/Status.hs index ef4e103..176619d 100644 --- a/src/Twitter/Status.hs +++ b/src/Twitter/Status.hs @@ -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)