5 import Text.Regex (mkRegex, subRegex)
8 get_char_data :: Content -> (Maybe CharData)
9 get_char_data (CString _ cd) = Just cd
10 get_char_data (CRef ref) = Just (verbatim ref) -- Entities.
11 get_char_data _ = Nothing
14 all_statuses :: CFilter
15 all_statuses = (tag "statuses" /> tag "status")
17 -- Called unique_id here because status_id is used elsewhere.
19 unique_id = keep /> (tag "id") /> txt
21 status_created_at :: CFilter
22 status_created_at = keep /> (tag "created_at") /> txt
24 status_text :: CFilter
25 status_text = keep /> (tag "text") /> txt
27 status_user :: CFilter
28 status_user = keep /> (tag "user")
30 user_screen_name :: CFilter
31 user_screen_name = keep /> (tag "screen_name") /> txt
34 xml_entities :: [(String, String)]
35 xml_entities = [("[lr]dquo", "\""),
43 replace_entities :: String -> String
44 replace_entities target = unescape_recursive xml_entities target
46 unescape_recursive :: [(String, String)] -> String -> String
47 unescape_recursive [] target = target
48 unescape_recursive replacements target =
49 unescape_recursive (tail replacements) (subRegex (mkRegex from) target to)
51 replacement = (replacements !! 0)
52 from = "&" ++ (fst replacement) ++ ";"
53 to = (snd replacement)