← Back to team overview

birdie-team team mailing list archive

[Merge] lp:~edersohe/birdie/fix-1148426-118427 into lp:birdie

 

Eder Sosa has proposed merging lp:~edersohe/birdie/fix-1148426-118427 into lp:birdie.

Requested reviews:
  Birdie Team (birdie-team)
Related bugs:
  Bug #1148426 in Birdie: "highlight mentions in timeline"
  https://bugs.launchpad.net/birdie/+bug/1148426
  Bug #1148427 in Birdie: "highlight hashtags in timeline"
  https://bugs.launchpad.net/birdie/+bug/1148427

For more details, see:
https://code.launchpad.net/~edersohe/birdie/fix-1148426-118427/+merge/153623
-- 
https://code.launchpad.net/~edersohe/birdie/fix-1148426-118427/+merge/153623
Your team Birdie Team is requested to review the proposed merge of lp:~edersohe/birdie/fix-1148426-118427 into lp:birdie.
=== modified file 'src/Twitter.vala'
--- src/Twitter.vala	2013-03-13 21:05:27 +0000
+++ src/Twitter.vala	2013-03-15 20:56:20 +0000
@@ -260,6 +260,21 @@
             
             return profile_image_file;
         }
+
+        public string highligh_links (owned string text) {
+            text = text.replace ("\n", " ");
+
+            try {
+                urls = new Regex("((http|https|ftp)://([\\S]+))");
+                text = urls.replace(text, -1, 0, "<a href='\\0'>\\0</a>");
+                urls = new Regex("([@#][a-zA-Z0-9_]+)");
+                text = urls.replace(text, -1, 0, "<a href='https://twitter.com/\\0'>\\0</a>");
+            } catch (RegexError e) {
+                warning ("regex error: %s", e.message);
+            }
+
+            return text;
+        }
         
         public Tweet get_tweet (Json.Node tweetnode) {
             var tweetobject = tweetnode.get_object();
@@ -267,24 +282,11 @@
             var id = tweetobject.get_string_member ("id_str");
 			var user_name = tweetobject.get_object_member ("user").get_string_member ("name");
 			var user_screen_name = tweetobject.get_object_member ("user").get_string_member ("screen_name");
-			var text = tweetobject.get_string_member ("text");
+			var text = highligh_links(tweetobject.get_string_member ("text"));
 			var created_at = tweetobject.get_string_member ("created_at");
 			var profile_image_url = tweetobject.get_object_member ("user").get_string_member ("profile_image_url");
 			var retweeted = tweetobject.get_boolean_member ("retweeted");
-			var favorited = tweetobject.get_boolean_member ("favorited");
-			        
-			if ("\n" in text)
-			    text = text.replace ("\n", " ");
-			            
-			// replace urls with markup links
-			try {
-                urls = new Regex("((http|https|ftp)://([\\S]+))");
-            } catch (RegexError e) {
-                warning ("regex error: %s", e.message);
-            }
-            
-			text = urls.replace(text, -1, 0, "<a href='\\0'>\\0</a>");
-			       
+			var favorited = tweetobject.get_boolean_member ("favorited");       
 			var profile_image_file = get_avatar (profile_image_url);
 			
 			return new Tweet (id, user_name, user_screen_name, text, created_at, profile_image_url, profile_image_file, retweeted, favorited);
@@ -404,22 +406,9 @@
                     var id = tweetobject.get_string_member ("id_str");
 			        var user_name = tweetobject.get_object_member ("sender").get_string_member ("name");
 			        var user_screen_name = tweetobject.get_object_member ("sender").get_string_member ("screen_name");
-			        var text = tweetobject.get_string_member ("text");
+			        var text = highligh_links(tweetobject.get_string_member ("text"));
 			        var created_at = tweetobject.get_string_member ("created_at");
-			        var profile_image_url = tweetobject.get_object_member ("sender").get_string_member ("profile_image_url");
-			                
-			        if ("\n" in text)
-			            text = text.replace ("\n", " ");
-			                    
-			        // replace urls with markup links
-			        try {
-                        urls = new Regex("((http|https|ftp)://([\\S]+))");
-                    } catch (RegexError e) {
-                        warning ("regex error: %s", e.message);
-                    }
-                    
-			        text = urls.replace(text, -1, 0, "<a href='\\0'>\\0</a>");
-			               
+			        var profile_image_url = tweetobject.get_object_member ("sender").get_string_member ("profile_image_url");               
 			        var profile_image_file = get_avatar (profile_image_url);
 			
 			        var tweet = new Tweet (id, user_name, user_screen_name, text, created_at, profile_image_url, profile_image_file, false, false, true);
@@ -463,22 +452,9 @@
                     var id = tweetobject.get_string_member ("id_str");
 			        var user_name = tweetobject.get_object_member ("sender").get_string_member ("name");
 			        var user_screen_name = tweetobject.get_object_member ("recipient").get_string_member ("screen_name");
-			        var text = tweetobject.get_string_member ("text");
+			        var text = highligh_links(tweetobject.get_string_member ("text"));
 			        var created_at = tweetobject.get_string_member ("created_at");
-			        var profile_image_url = tweetobject.get_object_member ("sender").get_string_member ("profile_image_url");
-			                
-			        if ("\n" in text)
-			            text = text.replace ("\n", " ");
-			                    
-			        // replace urls with markup links
-			        try {
-                        urls = new Regex("((http|https|ftp)://([\\S]+))");
-                    } catch (RegexError e) {
-                        warning ("regex error: %s", e.message);
-                    }
-                    
-			        text = urls.replace(text, -1, 0, "<a href='\\0'>\\0</a>");
-			               
+			        var profile_image_url = tweetobject.get_object_member ("sender").get_string_member ("profile_image_url");			               
 			        var profile_image_file = get_avatar (profile_image_url);
 			
 			        var tweet = new Tweet (id, user_name, user_screen_name, text, created_at, profile_image_url, profile_image_file, false, false, true);


Follow ups