From 89dca8a0387947e8216a30a9bd0060584cfb662c Mon Sep 17 00:00:00 2001 From: Khoi Pham Date: Sat, 28 Nov 2020 17:51:24 +0700 Subject: [PATCH] Added option `forceUniformNewline` --- papaparse.js | 4 ++++ tests/test-cases.js | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/papaparse.js b/papaparse.js index 785886c..8da341b 100755 --- a/papaparse.js +++ b/papaparse.js @@ -1398,6 +1398,7 @@ License: MIT var step = config.step; var preview = config.preview; var fastMode = config.fastMode; + var forceUniformNewline = config.forceUniformNewline; var quoteChar; /** Allows for no quoteChar by setting quoteChar to undefined in config */ if (config.quoteChar === undefined) { @@ -1438,6 +1439,9 @@ License: MIT if (typeof input !== 'string') throw new Error('Input must be a string'); + if (forceUniformNewline) + input = input.replace(/(\r\n|\r|\n)/g, newline); + // We don't need to compute some of these every time parse() is called, // but having them in a more local scope seems to perform better var inputLen = input.length, diff --git a/tests/test-cases.js b/tests/test-cases.js index 8d15b29..cf61ccf 100644 --- a/tests/test-cases.js +++ b/tests/test-cases.js @@ -585,6 +585,15 @@ var CORE_PARSER_TESTS = [ data: [['a', 'b', 'c'], ['']], errors: [] } + }, + { + description: "Force uniform newline", + input: 'a,b,c\r\nd,e,f\ng,h,i\rj,k,l\n', + config: { forceUniformNewline: true }, + expected: { + data: [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l'], ['']], + errors: [] + } } ];