[Commit] nickle ChangeLog,1.38,1.39 string.5c,1.6,1.7

Bart Massey commit at keithp.com
Fri Apr 16 11:19:11 PDT 2004


Committed by: bart

Update of /local/src/CVS/nickle
In directory home.keithp.com:/tmp/cvs-serv29491

Modified Files:
	ChangeLog string.5c 
Log Message:
	* string.5c: (parse_csv):
	Last field wasn't being chomped and dequoted.



Index: ChangeLog
===================================================================
RCS file: /local/src/CVS/nickle/ChangeLog,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- a/ChangeLog	16 Apr 2004 18:09:26 -0000	1.38
+++ b/ChangeLog	16 Apr 2004 18:19:08 -0000	1.39
@@ -1,5 +1,10 @@
 2004-04-16  Bart Massey  <bart at cs.pdx.edu>
 
+	* string.5c: (parse_csv):
+	Last field wasn't being chomped and dequoted.
+
+2004-04-16  Bart Massey  <bart at cs.pdx.edu>
+
 	* string.5c: (parse_csv, _dequote):
 	Fixed unclosed string detection case in parse_csv.
 	Fixed unclosed string detection in _dequote.

Index: string.5c
===================================================================
RCS file: /local/src/CVS/nickle/string.5c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- a/string.5c	16 Apr 2004 18:09:26 -0000	1.6
+++ b/string.5c	16 Apr 2004 18:19:08 -0000	1.7
@@ -108,6 +108,13 @@
 	quote_context q = default_quotes;
 	q.qq = "\"";
 	string curs = "";
+	void consume() {
+	    string t = chomp(curs);
+	    if (t != "" && t[0] == '"')
+		t = _dequote(t, q);
+	    ss[dim(ss)] = t;
+	    curs = "";
+	}
 	qstate t = qstate.normal;
 	int cur = 0;
 	while (cur < length(s)) {
@@ -116,11 +123,7 @@
 	    switch(t) {
 	    case qstate.normal:
 		if (c == ',') {
-		    string t = chomp(curs);
-		    if (t != "" && t[0] == '"')
-			t = _dequote(t, q);
-		    ss[dim(ss)] = t;
-		    curs = "";
+		    consume();
 		    cur++;
 		    continue;
 		}
@@ -149,7 +152,7 @@
 	if (t == qstate.openq)
 	    raise invalid_argument("parse_csv: unexpected " +
 				   "end of csv line", 0, s);
-	ss[dim(ss)] = curs;
+	consume();
 	return ss;
     }
 




More information about the Commit mailing list