annotate pidgin/smileyparser.c @ 32827:4a34689eeb33 default tip

merged from im.pidgin.pidgin
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Sat, 19 Nov 2011 14:42:54 +0900
parents 8e1ec44ede75
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
1 /* pidgin
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
2 *
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
3 * Pidgin is the legal property of its developers, whose names are too numerous
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
5 * source distribution.
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
6 *
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
7 * This program is free software; you can redistribute it and/or modify
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
8 * it under the terms of the GNU General Public License as published by
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
10 * (at your option) any later version.
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
11 *
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
12 * This program is distributed in the hope that it will be useful,
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
15 * GNU General Public License for more details.
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
16 *
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
17 * You should have received a copy of the GNU General Public License
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
18 * along with this program; if not, write to the Free Software
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
20 *
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
21 */
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
22
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
23 #include <gtk/gtk.h>
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
24 #include <debug.h>
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
25 #include "smileyparser.h"
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
26 #include <smiley.h>
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
27 #include <string.h>
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
28 #include "gtkthemes.h"
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
29
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
30 static char *
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
31 get_fullpath(const char *filename)
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
32 {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
33 if (g_path_is_absolute(filename))
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
34 return g_strdup(filename);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
35 else
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
36 return g_build_path(g_get_current_dir(), filename, NULL);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
37 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
38
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
39 static void
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
40 parse_for_shortcut_plaintext(const char *text, const char *shortcut, const char *file, GString *ret)
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
41 {
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
42 const char *tmp = text;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
43
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
44 for (;*tmp;) {
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
45 const char *end = strstr(tmp, shortcut);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
46 char *path;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
47 char *escaped_path;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
48
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
49 if (end == NULL) {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
50 g_string_append(ret, tmp);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
51 break;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
52 }
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
53 path = get_fullpath(file);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
54 escaped_path = g_markup_escape_text(path, -1);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
55
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
56 g_string_append_len(ret, tmp, end-tmp);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
57 g_string_append_printf(ret,"<img alt='%s' src='%s' />",
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
58 shortcut, escaped_path);
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
59 g_free(path);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
60 g_free(escaped_path);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
61 g_assert(strlen(tmp) >= strlen(shortcut));
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
62 tmp = end + strlen(shortcut);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
63 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
64 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
65
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
66 static char *
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
67 parse_for_shortcut(const char *markup, const char *shortcut, const char *file)
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
68 {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
69 GString* ret = g_string_new("");
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
70 char *local_markup = g_strdup(markup);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
71 char *escaped_shortcut = g_markup_escape_text(shortcut, -1);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
72
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
73 char *temp = local_markup;
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
74
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
75 for (;*temp;) {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
76 char *end = strchr(temp, '<');
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
77 char *end_of_tag;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
78
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
79 if (!end) {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
80 parse_for_shortcut_plaintext(temp, escaped_shortcut, file, ret);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
81 break;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
82 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
83
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
84 *end = 0;
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
85 parse_for_shortcut_plaintext(temp, escaped_shortcut, file, ret);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
86 *end = '<';
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
87
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
88 /* if this is well-formed, then there should be no '>' within
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
89 * the tag. TODO: handle a comment tag better :( */
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
90 end_of_tag = strchr(end, '>');
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
91 if (!end_of_tag) {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
92 g_string_append(ret, end);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
93 break;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
94 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
95
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
96 g_string_append_len(ret, end, end_of_tag - end + 1);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
97
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
98 temp = end_of_tag + 1;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
99 }
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
100 g_free(local_markup);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
101 g_free(escaped_shortcut);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
102 return g_string_free(ret, FALSE);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
103 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
104
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
105 static char *
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
106 parse_for_purple_smiley(const char *markup, PurpleSmiley *smiley)
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
107 {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
108 char *file = purple_smiley_get_full_path(smiley);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
109 char *ret = parse_for_shortcut(markup, purple_smiley_get_shortcut(smiley), file);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
110 g_free(file);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
111 return ret;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
112 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
113
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
114 static char *
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
115 parse_for_smiley_list(const char *markup, GHashTable *smileys)
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
116 {
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
117 GHashTableIter iter;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
118 char *key, *value;
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
119 char *ret = g_strdup(markup);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
120
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
121 g_hash_table_iter_init(&iter, smileys);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
122 while (g_hash_table_iter_next(&iter, (gpointer *)&key, (gpointer *)&value))
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
123 {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
124 char *temp = parse_for_shortcut(ret, key, value);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
125 g_free(ret);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
126 ret = temp;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
127 }
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
128
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
129 return ret;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
130 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
131
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
132 char *
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
133 smiley_parse_markup(const char *markup, const char *proto_id)
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
134 {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
135 GList *smileys = purple_smileys_get_all();
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
136 char *temp = g_strdup(markup), *temp2;
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
137 struct smiley_list *list;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
138 const char *proto_name = "default";
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
139
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
140 if (proto_id != NULL) {
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
141 PurplePlugin *proto;
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
142 proto = purple_find_prpl(proto_id);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
143 proto_name = proto->info->name;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
144 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
145
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
146 /* unnecessarily slow, but lets manage for now. */
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
147 for (; smileys; smileys = g_list_next(smileys)) {
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
148 temp2 = parse_for_purple_smiley(temp, PURPLE_SMILEY(smileys->data));
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
149 g_free(temp);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
150 temp = temp2;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
151 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
152
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
153 /* now for each theme smiley, observe that this does look nasty */
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
154 if (!current_smiley_theme || !(current_smiley_theme->list)) {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
155 purple_debug_warning("smiley", "theme does not exist\n");
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
156 return temp;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
157 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
158
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
159 for (list = current_smiley_theme->list; list; list = list->next) {
32594
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
160 if (g_str_equal(list->sml, proto_name)) {
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
161 temp2 = parse_for_smiley_list(temp, list->files);
8e1ec44ede75 Clean up this WebKit stuff. Fix up broken merging, mark unfinished
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32528
diff changeset
162 g_free(temp);
32528
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
163 temp = temp2;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
164 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
165 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
166
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
167 return temp;
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
168 }
fe5b5fc21274 added smileyparser code.
tdrhq@soc.pidgin.im
parents:
diff changeset
169