# HG changeset patch # User Yoshiki Yazawa # Date 1210606542 -32400 # Node ID 0a81ccfa194197c9d665db09a6260d507ef106e3 # Parent e60e6cbdc4c47b5cd9620f27b36249fb0e87fb37 strip excessive markup where it is not needed. (work in progress) diff -r e60e6cbdc4c4 -r 0a81ccfa1941 pidgin-twitter.c --- a/pidgin-twitter.c Mon May 12 23:13:29 2008 +0900 +++ b/pidgin-twitter.c Tue May 13 00:35:42 2008 +0900 @@ -35,7 +35,7 @@ #define SENDER 1 #define COMMAND 2 #define PSEUDO 3 -#define SENDER_WITH_LINK 4 +#define EXCESS_MARKUP 4 #define PLUGIN_ID "gtk-honeyplanet-pidgin_twitter" #define PLUGIN_NAME "pidgin-twitter" @@ -66,7 +66,7 @@ static gboolean suppress_oops = FALSE; /* prototypes */ -static void delete_sender_with_link(gchar **str); +static void strip_excess_markup(gchar **str); static void escape(gchar **str); static gboolean sending_im_cb(PurpleAccount *account, char *recipient, char **buffer, void *data); static gboolean eval(const GMatchInfo *match_info, GString *result, gpointer user_data); @@ -91,13 +91,13 @@ /* implementation */ static void -delete_sender_with_link(gchar **str) +strip_excess_markup(gchar **str) { gchar *newstr = NULL; /* replace senders with link */ newstr = - g_regex_replace(regp[SENDER_WITH_LINK], *str, -1, 0, "@\\1", 0, NULL); + g_regex_replace(regp[EXCESS_MARKUP], *str, -1, 0, "\\1\\2\\3", 0, NULL); twitter_debug("*str = %s newstr = %s\n", *str, newstr); @@ -156,14 +156,14 @@ { /* check if the message is from twitter */ if(is_twitter_account(account, recipient)) { - /* escape */ + /* strip excess markup */ + strip_excess_markup(buffer); + + /* escape pseudo command */ if(purple_prefs_get_bool(OPT_ESCAPE_PSEUDO)) { escape(buffer); } - /* strip excessive link from @username */ - delete_sender_with_link(buffer); - /* try to suppress oops message */ gint utflen = g_utf8_strlen(*buffer, -1); gint bytes = strlen(*buffer); @@ -266,6 +266,9 @@ playsound(buffer, RECIPIENT); } + /* strip excess markup */ + strip_excess_markup(buffer); + /* translate */ if(purple_prefs_get_bool(OPT_TRANSLATE_SENDER)) { translate(buffer, SENDER); @@ -274,7 +277,7 @@ translate(buffer, RECIPIENT); } - /* escape */ + /* escape pseudo command */ if(purple_prefs_get_bool(OPT_ESCAPE_PSEUDO)) { escape(buffer); } @@ -505,15 +508,16 @@ regp[RECIPIENT] = g_regex_new("@([A-Za-z0-9_]+)", 0, 0, NULL); regp[SENDER] = g_regex_new("([A-Za-z0-9_]+): ", 0, 0, NULL); regp[COMMAND] = - g_regex_new("^(?:\\s*)([dDfFgGlLmMnNtTwW]{1}\\s+[A-Za-z0-9_]+\\Z)", +// g_regex_new("^(?:\\s*)([dDfFgGlLmMnNtTwW]{1}\\s+[A-Za-z0-9_]+\\Z)", + g_regex_new("^(?:\\s*)([dDfFgGlLmMnNtTwW]{1}\\s+[A-Za-z0-9_]+)(?:\\s*\\Z)", G_REGEX_RAW, 0, NULL); regp[PSEUDO] = g_regex_new ("^\\s*(?:[\"#$%&'()*+,\\-./:;<=>?\\[\\\\\\]_`{|}~]|[^\\s\\x21-\\x7E])*([dDfFgGlLmMnNtTwW]{1})(?:\\Z|\\s+|[^\\x21-\\x7E]+\\Z)", G_REGEX_RAW, 0, NULL); - regp[SENDER_WITH_LINK] = + regp[EXCESS_MARKUP] = g_regex_new - ("@(?:)?([A-Za-z0-9_]+?)(?:)?", 0, 0, + ("([@dDfFgGlLmMnNtTwW]{1})(\\s?)(?:)?(?:)?([A-Za-z0-9_]+)(?:)?(?:)?", 0, 0, NULL); /* attach counter to the existing twitter window */ @@ -549,7 +553,7 @@ g_regex_unref(regp[SENDER]); g_regex_unref(regp[COMMAND]); g_regex_unref(regp[PSEUDO]); - g_regex_unref(regp[SENDER_WITH_LINK]); + g_regex_unref(regp[EXCESS_MARKUP]); /* detach from twitter window */ detach_from_window();