Przeglądaj źródła

2006-10-08 Gonzalo Paniagua Javier <[email protected]>

	* test/string-util.c:
	* TODO:
	* src/gstr.c:
	* src/glib.h: implemented g_strdelimit.


svn path=/trunk/mono/; revision=66393
Gonzalo Paniagua Javier 19 lat temu
rodzic
commit
3950b3e1af
5 zmienionych plików z 49 dodań i 1 usunięć
  1. 7 0
      eglib/ChangeLog
  2. 0 1
      eglib/TODO
  3. 3 0
      eglib/src/glib.h
  4. 20 0
      eglib/src/gstr.c
  5. 19 0
      eglib/test/string-util.c

+ 7 - 0
eglib/ChangeLog

@@ -1,3 +1,10 @@
+2006-10-08 Gonzalo Paniagua Javier <[email protected]>
+
+	* test/string-util.c:
+	* TODO:
+	* src/gstr.c:
+	* src/glib.h: implemented g_strdelimit.
+
 2006-10-07 Gonzalo Paniagua Javier <[email protected]>
 
 	* test/spawn.c: add search path flag when running ls.

+ 0 - 1
eglib/TODO

@@ -22,7 +22,6 @@ Important Groups:
 	* String manipulation
 	      1 g_filename_from_utf8	[LIMITATION: UTF8 only today]
 	     10 g_strlcpy
-	      2 g_strdelimit
 	      1 g_strescape
 	
 	* Miscelaneous

+ 3 - 0
eglib/src/glib.h

@@ -175,6 +175,7 @@ guint        g_strv_length    (gchar **str_array);
 gchar       *g_strjoin        (const gchar *separator, ...);
 gchar       *g_strchug        (gchar *str);
 gchar       *g_strchomp       (gchar *str);
+gchar       *g_strdelimit     (gchar *string, const gchar *delimiters, gchar new_delimiter);
 
 gchar       *g_filename_to_uri   (const gchar *filename, const gchar *hostname, GError **error);
 gchar       *g_filename_from_uri (const gchar *uri, gchar **hostname, GError **error);
@@ -204,6 +205,8 @@ gint         g_snprintf        (gchar *string, gulong n, gchar const *format, ..
 #define g_strncasecmp strncasecmp
 #define g_strstrip(a) g_strchug (g_strchomp (a))
 
+#define	G_STR_DELIMITERS "_-|> <."
+
 /*
  * String type
  */

+ 20 - 0
eglib/src/gstr.c

@@ -508,3 +508,23 @@ g_ascii_strdown (const gchar *str, gssize len)
 	
 	return ret;
 }
+
+
+gchar *
+g_strdelimit (gchar *string, const gchar *delimiters, gchar new_delimiter)
+{
+	gchar *ptr;
+
+	g_return_val_if_fail (string != NULL, NULL);
+
+	if (delimiters == NULL)
+		delimiters = G_STR_DELIMITERS;
+
+	for (ptr = string; *ptr; ptr++) {
+		if (strchr (delimiters, *ptr))
+			*ptr = new_delimiter;
+	}
+	
+	return string;
+}
+

+ 19 - 0
eglib/test/string-util.c

@@ -267,6 +267,24 @@ test_ascii_xdigit_value ()
 	return OK;
 }
 
+RESULT
+test_strdelimit ()
+{
+	gchar *str;
+
+	str = g_strdup (G_STR_DELIMITERS);
+	str = g_strdelimit (str, NULL, 'a');
+	if (0 != strcmp ("aaaaaaa", str))
+		return FAILED ("All delimiters: '%s'", str);
+	g_free (str);
+	str = g_strdup ("hola");
+	str = g_strdelimit (str, "ha", '+');
+	if (0 != strcmp ("+ol+", str))
+		return FAILED ("2 delimiters: '%s'", str);
+	g_free (str);
+	return OK;
+}
+
 static Test strutil_tests [] = {
 	{"g_strfreev", test_strfreev},
 	{"g_strconcat", test_concat},
@@ -279,6 +297,7 @@ static Test strutil_tests [] = {
 	{"g_filename_to_uri", test_filename_to_uri},
 	{"g_filename_from_uri", test_filename_from_uri},
 	{"g_ascii_xdigit_value", test_ascii_xdigit_value},
+	{"g_strdelimit", test_strdelimit},
 	{NULL, NULL}
 };