Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 21 additions & 26 deletions js/CSVParser.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ var CSVParser = {
//---------------------------------------

isNumber: function(string) {
if( (string == null) || isNaN( new Number(string) ) ) {
if( (string == null) || (string == "") || isNaN( new Number(string) ) ) {
return false;
}
return true;
Expand Down Expand Up @@ -48,7 +48,7 @@ var CSVParser = {
var columnDelimiter = ",";
if (numTabs > numCommas) {
columnDelimiter = "\t"
};
}

if (delimiterType === "comma") {
columnDelimiter = ","
Expand Down Expand Up @@ -79,8 +79,8 @@ var CSVParser = {
dataArray[i][j] = dataArray[i][j].replace("\t", "\\t");
dataArray[i][j] = dataArray[i][j].replace("\n", "\\n");
dataArray[i][j] = dataArray[i][j].replace("\r", "\\r");
};
};
}
}


var headerNames = [];
Expand All @@ -99,27 +99,27 @@ var CSVParser = {
for (var i=0; i < numColumns; i++) {
headerNames.push("val"+String(i));
headerTypes.push("");
};
}

}


if (upcaseHeaders) {
for (var i = headerNames.length - 1; i >= 0; i--){
headerNames[i] = headerNames[i].toUpperCase();
};
};
}
}
if (downcaseHeaders) {
for (var i = headerNames.length - 1; i >= 0; i--){
headerNames[i] = headerNames[i].toLowerCase();
};
};
}
}

//test all the rows for proper number of columns.
for (var i=0; i < dataArray.length; i++) {
var numValues = dataArray[i].length;
if (numValues != numColumns) {this.log("Error parsing row "+String(i)+". Wrong number of columns.")};
};
if (numValues != numColumns) {this.log("Error parsing row "+String(i)+". Wrong number of columns.")}
}

//test columns for number data type
var numRowsToTest = dataArray.length;
Expand All @@ -138,10 +138,10 @@ var CSVParser = {
if (String(dataArray[r][i]).indexOf(".") > 0) {
numFloats++
}
};
};
}
}

};
}

if ((numInts / numRowsToTest) > threshold){
if (numFloats > 0) {
Expand All @@ -154,12 +154,7 @@ var CSVParser = {
}
}





return {'dataGrid':dataArray, 'headerNames':headerNames, 'headerTypes':headerTypes, 'errors':this.getLog()}

},


Expand All @@ -181,9 +176,9 @@ var CSVParser = {
if (this.errorLog.length > 0) {
for (var i=0; i < this.errorLog.length; i++) {
out += ("!!"+this.errorLog[i] + "!!\n");
};
}
out += "\n"
};
}

return out;
},
Expand Down Expand Up @@ -256,12 +251,12 @@ var CSVParser = {
// captured (quoted or unquoted).
if (arrMatches[ 2 ]){


// We found a quoted value. When we capture
// this value, unescape any double quotes.
var strMatchedValue = arrMatches[ 2 ].replace(
new RegExp( "\"\"", "g" ),
"\""
);
new RegExp( "\"\"", "g" ),
"\\\"");

} else {

Expand All @@ -273,7 +268,7 @@ var CSVParser = {

// Now that we have our value string, let's add
// it to the data array.
arrData[ arrData.length - 1 ].push( strMatchedValue );
arrData[ arrData.length - 1 ].push( strMatchedValue.trim() );
}

// Return the parsed data.
Expand All @@ -282,4 +277,4 @@ var CSVParser = {



}
}