r21262 - gnucash/trunk/src/plugins/bi_import - Improved regexps for CSV files with quotes - quotes are allowed but not required on all fields.

Geert Janssens gjanssens at code.gnucash.org
Sat Sep 17 12:50:31 EDT 2011


Author: gjanssens
Date: 2011-09-17 12:50:30 -0400 (Sat, 17 Sep 2011)
New Revision: 21262
Trac: http://svn.gnucash.org/trac/changeset/21262

Modified:
   gnucash/trunk/src/plugins/bi_import/bi_import.c
   gnucash/trunk/src/plugins/bi_import/gui.c
Log:
Improved regexps for CSV files with quotes - quotes are allowed but not required on all fields.

Modified: gnucash/trunk/src/plugins/bi_import/bi_import.c
===================================================================
--- gnucash/trunk/src/plugins/bi_import/bi_import.c	2011-09-17 09:50:52 UTC (rev 21261)
+++ gnucash/trunk/src/plugins/bi_import/bi_import.c	2011-09-17 16:50:30 UTC (rev 21262)
@@ -114,7 +114,7 @@
     // compile the regular expression and check for errors
     err = NULL;
     regexpat =
-        g_regex_new (parser_regexp, G_REGEX_EXTENDED | G_REGEX_OPTIMIZE, 0, &err);
+        g_regex_new (parser_regexp, G_REGEX_EXTENDED | G_REGEX_OPTIMIZE | G_REGEX_DUPNAMES, 0, &err);
     if (err != NULL)
     {
         GtkWidget *dialog;

Modified: gnucash/trunk/src/plugins/bi_import/gui.c
===================================================================
--- gnucash/trunk/src/plugins/bi_import/gui.c	2011-09-17 09:50:52 UTC (rev 21261)
+++ gnucash/trunk/src/plugins/bi_import/gui.c	2011-09-17 16:50:30 UTC (rev 21262)
@@ -309,7 +309,7 @@
     BillImportGui *gui = data;
     if (!gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(widget) ))
         return;
-    g_string_assign (gui->regexp, "^\"(?<id>[^!#+^\"]*)\";\"(?<date_opened>[^\"]*)\";\"(?<owner_id>[^\"]*)\";\"(?<billing_id>[^\"]*)\";\"?(?<notes>[^\"]*)\";\"?(?<date>[^\"]*)\";\"?(?<desc>[^\"]*)\";\"?(?<action>[^\"]*)\";\"?(?<account>[^\"]*)\";\"?(?<quantity>[^\"]*)\";\"?(?<price>[^\"]*)\";\"?(?<disc_type>[^\"]*)\";\"?(?<disc_how>[^\"]*)\";\"?(?<discount>[^\"]*)\";\"?(?<taxable>[^\"]*)\";\"?(?<taxincluded>[^\"]*)\";\"?(?<tax_table>[^\"]*)\";\"(?<date_posted>[^\"]*)\";\"(?<due_date>[^\"]*)\";\"(?<account_posted>[^\"]*)\";\"(?<memo_posted>[^\"]*)\";\"(?<accu_splits>[^\"]*)\"");
+    g_string_assign (gui->regexp, "^((?<id>[^\";]*)|\"(?<id>[^\"]*)\");((?<date_opened>[^\";]*)|\"(?<date_opened>[^\"]*)\");((?<owner_id>[^\";]*)|\"(?<owner_id>[^\"]*)\");((?<billing_id>[^\";]*)|\"(?<billing_id>[^\"]*)\");((?<notes>[^\";]*)|\"(?<notes>[^\"]*)\");((?<date>[^\";]*)|\"(?<date>[^\"]*)\");((?<desc>[^\";]*)|\"(?<desc>[^\"]*)\");((?<action>[^\";]*)|\"(?<action>[^\"]*)\");((?<account>[^\";]*)|\"(?<account>[^\"]*)\");((?<quantity>[^\";]*)|\"(?<quantity>[^\"]*)\");((?<price>[^\";]*)|\"(?<price>[^\"]*)\");((?<disc_type>[^\";]*)|\"(?<disc_type>[^\"]*)\");((?<disc_how>[^\";]*)|\"(?<disc_how>[^\"]*)\");((?<discount>[^\";]*)|\"(?<discount>[^\"]*)\");((?<taxable>[^\";]*)|\"(?<taxable>[^\"]*)\");((?<taxincluded>[^\";]*)|\"(?<taxincluded>[^\"]*)\");((?<tax_table>[^\";]*)|\"(?<tax_table>[^\"]*)\");((?<date_posted>[^\";]*)|\"(?<date_posted>[^\"]*)\");((?<due_date>[^\";]*)|\"(?<due_date>[^\"]*)\");((?<account_posted>[^\";]*)|\"(?<account_posted>[^\"]*)\");((?<memo_posted>[^\";]*)|\"(?<memo_posted>[^\"]*)\");((?<accu_splits>[^\";]*)|\"(?<accu_splits>[^\"]*)\")$");
     gnc_bi_import_gui_filenameChanged_cb (gui->entryFilename, gui);
 }
 void gnc_bi_import_gui_option4_cb (GtkWidget *widget, gpointer data)
@@ -317,7 +317,7 @@
     BillImportGui *gui = data;
     if (!gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(widget) ))
         return;
-    g_string_assign (gui->regexp, "^\"(?<id>[^!#+^\"]*)\",\"(?<date_opened>[^\"]*)\",\"(?<owner_id>[^\"]*)\",\"(?<billing_id>[^\"]*)\",\"?(?<notes>[^\"]*)\",\"?(?<date>[^\"]*)\",\"?(?<desc>[^\"]*)\",\"?(?<action>[^\"]*)\",\"?(?<account>[^\"]*)\",\"?(?<quantity>[^\"]*)\",\"?(?<price>[^\"]*)\",\"?(?<disc_type>[^\"]*)\",\"?(?<disc_how>[^\"]*)\",\"?(?<discount>[^\"]*)\",\"?(?<taxable>[^\"]*)\",\"?(?<taxincluded>[^\"]*)\",\"?(?<tax_table>[^\"]*)\",\"(?<date_posted>[^\"]*)\",\"(?<due_date>[^\"]*)\",\"(?<account_posted>[^\"]*)\",\"(?<memo_posted>[^\"]*)\",\"(?<accu_splits>[^\"]*)\"");
+    g_string_assign (gui->regexp, "^((?<id>[^\",]*)|\"(?<id>[^\"]*)\"),((?<date_opened>[^\",]*)|\"(?<date_opened>[^\"]*)\"),((?<owner_id>[^\",]*)|\"(?<owner_id>[^\"]*)\"),((?<billing_id>[^\",]*)|\"(?<billing_id>[^\"]*)\"),((?<notes>[^\",]*)|\"(?<notes>[^\"]*)\"),((?<date>[^\",]*)|\"(?<date>[^\"]*)\"),((?<desc>[^\",]*)|\"(?<desc>[^\"]*)\"),((?<action>[^\",]*)|\"(?<action>[^\"]*)\"),((?<account>[^\",]*)|\"(?<account>[^\"]*)\"),((?<quantity>[^\",]*)|\"(?<quantity>[^\"]*)\"),((?<price>[^\",]*)|\"(?<price>[^\"]*)\"),((?<disc_type>[^\",]*)|\"(?<disc_type>[^\"]*)\"),((?<disc_how>[^\",]*)|\"(?<disc_how>[^\"]*)\"),((?<discount>[^\",]*)|\"(?<discount>[^\"]*)\"),((?<taxable>[^\",]*)|\"(?<taxable>[^\"]*)\"),((?<taxincluded>[^\",]*)|\"(?<taxincluded>[^\"]*)\"),((?<tax_table>[^\",]*)|\"(?<tax_table>[^\"]*)\"),((?<date_posted>[^\",]*)|\"(?<date_posted>[^\"]*)\"),((?<due_date>[^\",]*)|\"(?<due_date>[^\"]*)\"),((?<account_posted>[^\",]*)|\"(?<account_posted>[^\"]*)\"),((?<memo_posted>[^\",]*)|\"(?<memo_posted>[^\"]*)\"),((?<accu_splits>[^\",]*)|\"(?<accu_splits>[^\"]*)\")$");
     gnc_bi_import_gui_filenameChanged_cb (gui->entryFilename, gui);
 }
 void gnc_bi_import_gui_option5_cb (GtkWidget *widget, gpointer data)



More information about the gnucash-changes mailing list