Mercurial > pidgin-twitter
comparison pidgin-twitter.c @ 42:68db38b5b401
fixed changeset 41:0a81ccfa1941
author | mikanbako <maoutwo@gmail.com> |
---|---|
date | Tue, 13 May 2008 02:06:32 +0900 |
parents | 0a81ccfa1941 |
children | caa42301f520 |
comparison
equal
deleted
inserted
replaced
41:0a81ccfa1941 | 42:68db38b5b401 |
---|---|
34 #define RECIPIENT 0 | 34 #define RECIPIENT 0 |
35 #define SENDER 1 | 35 #define SENDER 1 |
36 #define COMMAND 2 | 36 #define COMMAND 2 |
37 #define PSEUDO 3 | 37 #define PSEUDO 3 |
38 #define EXCESS_MARKUP 4 | 38 #define EXCESS_MARKUP 4 |
39 #define FONT_MARKUP 5 | |
40 #define ATMARK_AFTER_A 6 | |
39 | 41 |
40 #define PLUGIN_ID "gtk-honeyplanet-pidgin_twitter" | 42 #define PLUGIN_ID "gtk-honeyplanet-pidgin_twitter" |
41 #define PLUGIN_NAME "pidgin-twitter" | 43 #define PLUGIN_NAME "pidgin-twitter" |
42 | 44 |
43 #define OPT_PIDGINTWITTER "/plugins/pidgin_twitter" | 45 #define OPT_PIDGINTWITTER "/plugins/pidgin_twitter" |
60 | 62 |
61 #define twitter_debug(fmt, ...) purple_debug(PURPLE_DEBUG_INFO, PLUGIN_NAME, "%s():%4d: " fmt, __FUNCTION__, (int)__LINE__, ## __VA_ARGS__); | 63 #define twitter_debug(fmt, ...) purple_debug(PURPLE_DEBUG_INFO, PLUGIN_NAME, "%s():%4d: " fmt, __FUNCTION__, (int)__LINE__, ## __VA_ARGS__); |
62 #define twitter_error(fmt, ...) purple_debug(PURPLE_DEBUG_ERROR, PLUGIN_NAME, "%s():%4d: " fmt, __FUCTION__, (int)__LINE__, ## __VA_ARGS__); | 64 #define twitter_error(fmt, ...) purple_debug(PURPLE_DEBUG_ERROR, PLUGIN_NAME, "%s():%4d: " fmt, __FUCTION__, (int)__LINE__, ## __VA_ARGS__); |
63 | 65 |
64 /* globals */ | 66 /* globals */ |
65 static GRegex *regp[5]; | 67 static GRegex *regp[7]; |
66 static gboolean suppress_oops = FALSE; | 68 static gboolean suppress_oops = FALSE; |
67 | 69 |
68 /* prototypes */ | 70 /* prototypes */ |
69 static void strip_excess_markup(gchar **str); | 71 static void strip_excess_markup(gchar **str); |
70 static void escape(gchar **str); | 72 static void escape(gchar **str); |
93 static void | 95 static void |
94 strip_excess_markup(gchar **str) | 96 strip_excess_markup(gchar **str) |
95 { | 97 { |
96 gchar *newstr = NULL; | 98 gchar *newstr = NULL; |
97 | 99 |
98 /* replace senders with link */ | 100 /* strip font */ |
101 newstr = g_regex_replace(regp[FONT_MARKUP], *str, -1, 0, "\\1", 0, NULL); | |
102 twitter_debug("*str = %s newstr = %s\n", *str, newstr); | |
103 g_free(*str); | |
104 *str = newstr; | |
105 | |
106 /* change from atmark after a to atmark before a */ | |
107 newstr = g_regex_replace(regp[ATMARK_AFTER_A], *str, -1, 0, "@\\1", 0, NULL); | |
108 twitter_debug("*str = %s newstr = %s\n", *str, newstr); | |
109 g_free(*str); | |
110 *str = newstr; | |
111 | |
112 /* strip link */ | |
99 newstr = | 113 newstr = |
100 g_regex_replace(regp[EXCESS_MARKUP], *str, -1, 0, "\\1\\2\\3", 0, NULL); | 114 g_regex_replace(regp[EXCESS_MARKUP], *str, -1, 0, "\\1", 0, NULL); |
101 | 115 |
102 twitter_debug("*str = %s newstr = %s\n", *str, newstr); | 116 twitter_debug("*str = %s newstr = %s\n", *str, newstr); |
103 | 117 |
104 g_free(*str); | 118 g_free(*str); |
105 *str = newstr; | 119 *str = newstr; |
515 g_regex_new | 529 g_regex_new |
516 ("^\\s*(?:[\"#$%&'()*+,\\-./:;<=>?\\[\\\\\\]_`{|}~]|[^\\s\\x21-\\x7E])*([dDfFgGlLmMnNtTwW]{1})(?:\\Z|\\s+|[^\\x21-\\x7E]+\\Z)", | 530 ("^\\s*(?:[\"#$%&'()*+,\\-./:;<=>?\\[\\\\\\]_`{|}~]|[^\\s\\x21-\\x7E])*([dDfFgGlLmMnNtTwW]{1})(?:\\Z|\\s+|[^\\x21-\\x7E]+\\Z)", |
517 G_REGEX_RAW, 0, NULL); | 531 G_REGEX_RAW, 0, NULL); |
518 regp[EXCESS_MARKUP] = | 532 regp[EXCESS_MARKUP] = |
519 g_regex_new | 533 g_regex_new |
520 ("([@dDfFgGlLmMnNtTwW]{1})(\\s?)(?:<font .+>)?<a href=.+>(?:<font .+>)?([A-Za-z0-9_]+)(?:</font>)?</a>(?:</font>)?", 0, 0, | 534 ("<a href=\"http://twitter.com/([A-Za-z0-9_]+)\">\\1</a>", 0, 0, |
521 NULL); | 535 NULL); |
536 regp[FONT_MARKUP] = g_regex_new("<font .+?>(.+?)</font>", 0, 0, NULL); | |
537 regp[ATMARK_AFTER_A] = g_regex_new("(<a href=.+?>)@", 0, 0, NULL); | |
522 | 538 |
523 /* attach counter to the existing twitter window */ | 539 /* attach counter to the existing twitter window */ |
524 gboolean enabled = purple_prefs_get_bool(OPT_COUNTER); | 540 gboolean enabled = purple_prefs_get_bool(OPT_COUNTER); |
525 if(enabled) { | 541 if(enabled) { |
526 attach_to_window(); | 542 attach_to_window(); |
552 g_regex_unref(regp[RECIPIENT]); | 568 g_regex_unref(regp[RECIPIENT]); |
553 g_regex_unref(regp[SENDER]); | 569 g_regex_unref(regp[SENDER]); |
554 g_regex_unref(regp[COMMAND]); | 570 g_regex_unref(regp[COMMAND]); |
555 g_regex_unref(regp[PSEUDO]); | 571 g_regex_unref(regp[PSEUDO]); |
556 g_regex_unref(regp[EXCESS_MARKUP]); | 572 g_regex_unref(regp[EXCESS_MARKUP]); |
573 g_regex_unref(regp[FONT_MARKUP]); | |
574 g_regex_unref(regp[ATMARK_AFTER_A]); | |
557 | 575 |
558 /* detach from twitter window */ | 576 /* detach from twitter window */ |
559 detach_from_window(); | 577 detach_from_window(); |
560 | 578 |
561 return TRUE; | 579 return TRUE; |