Browse Source

Simplify dyanmicTypingConfig and add cache for DynmicTypingFunction

pull/288/merge
Sergi Almacellas Abellana 8 years ago
parent
commit
04efec0d61
  1. 36
      papaparse.js

36
papaparse.js

@ -193,7 +193,21 @@ @@ -193,7 +193,21 @@
function CsvToJson(_input, _config)
{
_config = _config || {};
_config.dynamicTyping = new DynamicTypingConfig(_config.dynamicTyping);
var dynamicTyping = _config.dynamicTyping || false;
debugger;
if (typeof dynamicTyping == 'function') {
_config.dynamicTypingFunction = dynamicTyping;
// Will be filled on first row call
dynamicTyping = {};
}
_config.dynamicTyping = dynamicTyping;
_config.shouldApplyDynamicTyping = function(field) {
// Cache function values to avoid calling it for each row
if (_config.dynamicTypingFunction && !_config.dynamicTyping[field]) {
_config.dynamicTyping[field] = _config.dynamicTypingFunction(field);
}
return (_config.dynamicTyping[field] || _config.dynamicTyping) === true
}
if (_config.worker && Papa.WORKERS_SUPPORTED)
{
@ -415,24 +429,6 @@ @@ -415,24 +429,6 @@
}
}
function DynamicTypingConfig(config)
{
this._config = config;
}
DynamicTypingConfig.prototype.constructor = DynamicTypingConfig;
DynamicTypingConfig.prototype.isIncluded = function(field)
{
if (typeof this._config === 'function')
{
return this._config(field) === true;
}
if (typeof this._config === 'object')
{
return this._config[field] === true;
}
return !!this._config;
};
/** ChunkStreamer is the base prototype for various streamer implementations. */
function ChunkStreamer(config)
{
@ -987,7 +983,7 @@ @@ -987,7 +983,7 @@
function parseDynamic(field, value)
{
if (_config.dynamicTyping.isIncluded(field))
if (_config.shouldApplyDynamicTyping(field))
{
if (value === 'true' || value === 'TRUE')
return true;

Loading…
Cancel
Save