New file |
0,0 → 1,79 |
/* |
Copyright (c) 2004-2006, The Dojo Foundation |
All Rights Reserved. |
|
Licensed under the Academic Free License version 2.1 or above OR the |
modified BSD license. For more information on Dojo licensing, see: |
|
http://dojotoolkit.org/community/licensing.shtml |
*/ |
|
dojo.provide("dojo.data.old.format.Csv"); |
dojo.require("dojo.lang.assert"); |
dojo.data.old.format.Csv = new function () { |
this.getArrayStructureFromCsvFileContents = function (csvFileContents) { |
dojo.lang.assertType(csvFileContents, String); |
var lineEndingCharacters = new RegExp("\r\n|\n|\r"); |
var leadingWhiteSpaceCharacters = new RegExp("^\\s+", "g"); |
var trailingWhiteSpaceCharacters = new RegExp("\\s+$", "g"); |
var doubleQuotes = new RegExp("\"\"", "g"); |
var arrayOfOutputRecords = []; |
var arrayOfInputLines = csvFileContents.split(lineEndingCharacters); |
for (var i in arrayOfInputLines) { |
var singleLine = arrayOfInputLines[i]; |
if (singleLine.length > 0) { |
var listOfFields = singleLine.split(","); |
var j = 0; |
while (j < listOfFields.length) { |
var space_field_space = listOfFields[j]; |
var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, ""); |
var field = field_space.replace(trailingWhiteSpaceCharacters, ""); |
var firstChar = field.charAt(0); |
var lastChar = field.charAt(field.length - 1); |
var secondToLastChar = field.charAt(field.length - 2); |
var thirdToLastChar = field.charAt(field.length - 3); |
if ((firstChar == "\"") && ((lastChar != "\"") || ((lastChar == "\"") && (secondToLastChar == "\"") && (thirdToLastChar != "\"")))) { |
if (j + 1 === listOfFields.length) { |
return null; |
} |
var nextField = listOfFields[j + 1]; |
listOfFields[j] = field_space + "," + nextField; |
listOfFields.splice(j + 1, 1); |
} else { |
if ((firstChar == "\"") && (lastChar == "\"")) { |
field = field.slice(1, (field.length - 1)); |
field = field.replace(doubleQuotes, "\""); |
} |
listOfFields[j] = field; |
j += 1; |
} |
} |
arrayOfOutputRecords.push(listOfFields); |
} |
} |
return arrayOfOutputRecords; |
}; |
this.loadDataProviderFromFileContents = function (dataProvider, csvFileContents) { |
dojo.lang.assertType(dataProvider, dojo.data.old.provider.Base); |
dojo.lang.assertType(csvFileContents, String); |
var arrayOfArrays = this.getArrayStructureFromCsvFileContents(csvFileContents); |
if (arrayOfArrays) { |
var arrayOfKeys = arrayOfArrays[0]; |
for (var i = 1; i < arrayOfArrays.length; ++i) { |
var row = arrayOfArrays[i]; |
var item = dataProvider.getNewItemToLoad(); |
for (var j in row) { |
var value = row[j]; |
var key = arrayOfKeys[j]; |
item.load(key, value); |
} |
} |
} |
}; |
this.getCsvStringFromResultSet = function (resultSet) { |
dojo.unimplemented("dojo.data.old.format.Csv.getCsvStringFromResultSet"); |
var csvString = null; |
return csvString; |
}; |
}(); |
|