diff --git a/__tests__/utils.test.ts b/__tests__/utils.test.ts index f28b03606..ad4de8ef1 100644 --- a/__tests__/utils.test.ts +++ b/__tests__/utils.test.ts @@ -111,6 +111,16 @@ describe('Utils tests', () => { 'b=2', 'c=3' ]); + expect(await utils.CSVArray('\'a=1,2\', "b=3, 4", c=5')).toEqual([ + 'a=1,2', + 'b=3, 4', + 'c=5' + ]); + expect(await utils.CSVArray('a=\'1,2\', b="3, 4", c=5')).toEqual([ + 'a=1,2', + 'b=3, 4', + 'c=5' + ]); expect(await utils.CSVArray('')).toEqual([]); expect(await utils.CSVArray(' ')).toEqual([]); }); diff --git a/dist/index.js b/dist/index.js index c3db6a48d..9b6123a83 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1241,8 +1241,7 @@ async function extensionArray(extension_csv) { return extension .trim() .toLowerCase() - .replace('php-', '') - .replace('php_', ''); + .replace(/^php[-_]/, ''); }) .filter(Boolean); } @@ -1261,9 +1260,9 @@ async function CSVArray(values_csv) { return []; default: return values_csv - .split(',') + .split(/,(?=(?:(?:[^"']*["']){2})*[^"']*$)/) .map(function (value) { - return value.trim(); + return value.trim().replace(/^["']|["']$|(?<==)["']/g, ''); }) .filter(Boolean); } diff --git a/src/utils.ts b/src/utils.ts index 71192881c..16e06fa5e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -228,8 +228,7 @@ export async function extensionArray( return extension .trim() .toLowerCase() - .replace('php-', '') - .replace('php_', ''); + .replace(/^php[-_]/, ''); }) .filter(Boolean); } @@ -248,9 +247,9 @@ export async function CSVArray(values_csv: string): Promise> { return []; default: return values_csv - .split(',') - .map(function (value: string) { - return value.trim(); + .split(/,(?=(?:(?:[^"']*["']){2})*[^"']*$)/) + .map(function (value) { + return value.trim().replace(/^["']|["']$|(?<==)["']/g, ''); }) .filter(Boolean); }