[geany/geany-plugins] 9e8b05: Improve way how worker is being called. Thanks to b4n and elextr.

Frank Lanitz git-noreply at geany.org
Thu Jan 31 22:27:42 UTC 2013


Branch:      refs/heads/master
Author:      Frank Lanitz <frank at frank.uvena.de>
Committer:   Frank Lanitz <frank at frank.uvena.de>
Date:        Thu, 31 Jan 2013 22:27:42 UTC
Commit:      9e8b050c51e4ca8001c51d97fe17ee878fef8a70
             https://github.com/geany/geany-plugins/commit/9e8b050c51e4ca8001c51d97fe17ee878fef8a70

Log Message:
-----------
Improve way how worker is being called. Thanks to b4n and elextr.


Modified Paths:
--------------
    tableconvert/src/tableconvert.c

Modified: tableconvert/src/tableconvert.c
67 files changed, 41 insertions(+), 26 deletions(-)
===================================================================
@@ -79,8 +79,8 @@ enum {
 		"<table>\n",
 		"<thead>\n",
 		"</thead>\n",
-		"<tbody\n\t<tr>\n\t\t<td>",
-		"</td>\n</tr>\n</tbody>",
+		"<tbody>\n",
+		"\n</tbody>",
 		"</td>\n\t<td>",
 		"<tr>\n\t<td>",
 		"</td>\n</tr>",
@@ -102,9 +102,10 @@ enum {
 	}
 };
 
+
 static GtkWidget *main_menu_item = NULL;
 
-static GString* convert_to_table_worker(gchar **rows, gboolean header, gint type)
+static gchar* convert_to_table_worker(gchar **rows, gboolean header, TableConvertRule *rule)
 {
 	guint i;
 	guint j;
@@ -113,52 +114,61 @@ static GString* convert_to_table_worker(gchar **rows, gboolean header, gint type
 	g_return_val_if_fail(rows != NULL, NULL);
 
 	/* Adding start of table to replacement */
-	replacement_str = g_string_new(tablerules[type].start);
+	replacement_str = g_string_new(rule->start);
 
 	/* Adding special header if requested
 	 * e.g. <thead> */
 	if (header == TRUE)
 	{
-		g_string_append(replacement_str, tablerules[type].header_start);
+		g_string_append(replacement_str, rule->header_start);
 	}
 
 	/* Iteration onto rows and building up lines of table for
 	 * replacement */
-	for (i = 0; rows[i] != NULL ; i++)
+	for (i = 0; rows[i] != NULL; i++)
 	{
 		gchar **columns = NULL;
 		columns = g_strsplit_set(rows[i], "\t", -1);
 
-		if (i == 0 &&
+		if (i == 1 &&
 			header == TRUE)
 		{
-			g_string_append(replacement_str, tablerules[type].header_stop);
+			g_string_append(replacement_str, rule->header_stop);
+			/* We are assuming, that if someone inserts a head, 
+			 * only in this case we will insert some special body. 
+			 * Might needs to be discussed further */
+			g_string_append(replacement_str, rule->body_start);
 		}
 
-		g_string_append(replacement_str, tablerules[type].linestart);
+		g_string_append(replacement_str, rule->linestart);
 
 		for (j = 0; columns[j] != NULL; j++)
 		{
 			if (j > 0)
 			{
-				g_string_append(replacement_str, tablerules[type].columnsplit);
+				g_string_append(replacement_str, rule->columnsplit);
 			}
 			g_string_append(replacement_str, columns[j]);
 		}
 
-		g_string_append(replacement_str, tablerules[type].lineend);
+		g_string_append(replacement_str, rule->lineend);
 
 		if (rows[i+1] != NULL)
 		{
-			g_string_append(replacement_str, tablerules[type].linesplit);
+			g_string_append(replacement_str, rule->linesplit);
 		}
 		g_strfreev(columns);
 	}
 
+	if (header == TRUE)
+	{
+		g_string_append(replacement_str, rule->body_end);
+	}
+	
 	/* Adding the footer of table */
+	g_string_append(replacement_str, rule->end);
 
-	g_string_append(replacement_str, tablerules[type].end);
-	return replacement_str;
+	return g_string_free(replacement_str, FALSE);
 }
 
 static void convert_to_table(gboolean header)
@@ -172,7 +182,6 @@ static void convert_to_table(gboolean header)
 	{
 		gchar *selection = NULL;
 		gchar **rows = NULL;
-		GString *replacement_str = NULL;
 		gchar *replacement = NULL;
 
 		/* Actually grabbing selection and splitting it into single
@@ -188,45 +197,49 @@ static void convert_to_table(gboolean header)
 			{
 				case GEANY_FILETYPES_NONE:
 				{
-					g_free(rows);
-					g_free(replacement);
+					g_strfreev(rows);
 					return;
 				}
 				case GEANY_FILETYPES_HTML:
 				{
-					replacement_str = convert_to_table_worker(rows, header, TC_HTML);
+					replacement = convert_to_table_worker(rows,
+						header,
+						&tablerules[TC_HTML]);
 					break;
 				}
 				case GEANY_FILETYPES_LATEX:
 				{
-					replacement_str = convert_to_table_worker(rows, header, TC_LATEX);
+					replacement = convert_to_table_worker(rows,
+						header,
+						&tablerules[TC_LATEX]);
 					break;
 				}
 				case GEANY_FILETYPES_SQL:
 				{
-					replacement_str = convert_to_table_worker(rows, header, TC_SQL);
+					replacement = convert_to_table_worker(rows,
+						header,
+						&tablerules[TC_SQL]);
 					break;
 				}
 				default:
 				{
-					replacement_str = NULL;
+					/* We just don't do anything */
 				}
 			} /* filetype switch */
 		}
 		else
 		{
 			/* OK. Something went not as expected.
-			* We did have a selection but cannot parse it into rows.
-			* Aborting */
+			 * We did have a selection but cannot parse it into rows.
+			 * Aborting */
 			g_warning(_("Something went wrong on parsing selection. Aborting"));
 			return;
 		}
 
 		/* The replacement should have been prepared at this point. Let's go
-		* on and put it into document and replace selection with it. */
-		if (replacement_str != NULL)
+		 * on and put it into document and replace selection with it. */
+		if (replacement != NULL)
 		{
-			replacement = g_string_free(replacement_str, FALSE);
 			sci_replace_sel(doc->editor->sci, replacement);
 		}
 		g_strfreev(rows);
@@ -236,9 +249,11 @@ static void convert_to_table(gboolean header)
 	return;
 }
 
+
 static void kb_convert_to_table(G_GNUC_UNUSED guint key_id)
 {
 	g_return_if_fail(document_get_current() != NULL);
+
 	convert_to_table(TRUE);
 }
 



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list