diff --git a/papaparse.js b/papaparse.js index 1b9ea51..e8625aa 100755 --- a/papaparse.js +++ b/papaparse.js @@ -1330,7 +1330,7 @@ License: MIT avgFieldCount /= (preview.data.length - emptyLinesCount); if ((typeof bestDelta === 'undefined' || delta <= bestDelta) - && (typeof maxFieldCount === 'undefined' || avgFieldCount > maxFieldCount) && avgFieldCount > 1.99) { + && ((typeof maxFieldCount === 'undefined' || avgFieldCount > maxFieldCount) || delta < bestDelta) && avgFieldCount > 1.99) { bestDelta = delta; bestDelim = delim; maxFieldCount = avgFieldCount; diff --git a/tests/test-cases.js b/tests/test-cases.js index 1b0ee33..b6130c8 100644 --- a/tests/test-cases.js +++ b/tests/test-cases.js @@ -2629,7 +2629,15 @@ var CUSTOM_TESTS = [ var results = Papa.parse('"A","B","C","D"'); callback(results.meta.delimiter); } - } + }, + { + description: "Should correctly guess default delimiters when other sign is used more often but not right delimiter.", + expected: ";", + run: function(callback) { + var results = Papa.parse('ID;comment;geom\n1;HiThere;POLYGON(2 3, 3 4, 5 6, 4 5, 4 3, 2 3)\n2;HowAreYou;POLYGON(2 3, 3 4, 5 6, 4 5, 4 3, 2 3)\n3;WhatsUp;POLYGON(2 3, 3 4, 5 6, 4 5, 4 3, 2 3)\n4;Sunday;POLYGON(2 3, 3 4, 5 6, 4 5, 4 3, 2 3)'); + callback(results.meta.delimiter); + } + } ]; describe('Custom Tests', function() {