diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | glib/gregex.c | 39 |
2 files changed, 43 insertions, 0 deletions
@@ -1,5 +1,9 @@ 2009-01-02 Matthias Clasen <mclasen@redhat.com> + * glib/gregex.c: Add an example to the g_regex_replace_eval() docs. + +2009-01-02 Matthias Clasen <mclasen@redhat.com> + * glib/gstrfuncs.c: Move docs inline, adding references to g_free() where appropriate. diff --git a/glib/gregex.c b/glib/gregex.c index 31d0323f1..94440efc5 100644 --- a/glib/gregex.c +++ b/glib/gregex.c @@ -2530,6 +2530,45 @@ g_regex_replace_literal (const GRegex *regex, * string and setting #G_REGEX_MATCH_NOTBOL in the case of a pattern * that begins with any kind of lookbehind assertion, such as "\b". * + * The following example uses g_regex_replace_eval() to replace multiple + * strings at once: + * |[ + * static gboolean + * eval_cb (const GMatchInfo *info, + * GString *res, + * gpointer data) + * { + * gchar *match; + * gchar *r; + * + * match = g_match_info_fetch (info, 0); + * r = g_hash_table_lookup ((GHashTable *)data, match); + * g_string_append (res, r); + * g_free (match); + * + * return FALSE; + * } + * + * /* ... */ + * + * GRegex *reg; + * GHashTable *h; + * gchar *res; + * + * h = g_hash_table_new (g_str_hash, g_str_equal); + * + * g_hash_table_insert (h, "1", "ONE"); + * g_hash_table_insert (h, "2", "TWO"); + * g_hash_table_insert (h, "3", "THREE"); + * g_hash_table_insert (h, "4", "FOUR"); + * + * reg = g_regex_new ("1|2|3|4", 0, 0, NULL); + * res = g_regex_replace_eval (reg, text, -1, 0, 0, eval_cb, h, NULL); + * g_hash_table_destroy (h); + * + * /* ... */ + * ]| + * * Returns: a newly allocated string containing the replacements * * Since: 2.14 |