Add support for quoted csv in ini-values

This commit is contained in:
Shivam Mathur 2021-01-15 13:52:18 +05:30
parent d2f58713aa
commit 6972aed899
No known key found for this signature in database
GPG Key ID: 3E13E4C8591ACC2A
3 changed files with 24 additions and 9 deletions

View File

@ -111,6 +111,17 @@ describe('Utils tests', () => {
'b=2', 'b=2',
'c=3' 'c=3'
]); ]);
expect(await utils.CSVArray('\'a=1,2\', "b=3, 4", c=5, d=~e~')).toEqual([
'a=1,2',
'b=3, 4',
'c=5',
"d='~e~'"
]);
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([]);
expect(await utils.CSVArray(' ')).toEqual([]); expect(await utils.CSVArray(' ')).toEqual([]);
}); });

10
dist/index.js vendored
View File

@ -1241,8 +1241,7 @@ async function extensionArray(extension_csv) {
return extension return extension
.trim() .trim()
.toLowerCase() .toLowerCase()
.replace('php-', '') .replace(/^php[-_]/, '');
.replace('php_', '');
}) })
.filter(Boolean); .filter(Boolean);
} }
@ -1261,9 +1260,12 @@ async function CSVArray(values_csv) {
return []; return [];
default: default:
return values_csv return values_csv
.split(',') .split(/,(?=(?:(?:[^"']*["']){2})*[^"']*$)/)
.map(function (value) { .map(function (value) {
return value.trim(); return value
.trim()
.replace(/^["']|["']$|(?<==)["']/g, '')
.replace(/=(.*[?{}|&~![()^]+.*)/, "='$1'");
}) })
.filter(Boolean); .filter(Boolean);
} }

View File

@ -228,8 +228,7 @@ export async function extensionArray(
return extension return extension
.trim() .trim()
.toLowerCase() .toLowerCase()
.replace('php-', '') .replace(/^php[-_]/, '');
.replace('php_', '');
}) })
.filter(Boolean); .filter(Boolean);
} }
@ -248,9 +247,12 @@ export async function CSVArray(values_csv: string): Promise<Array<string>> {
return []; return [];
default: default:
return values_csv return values_csv
.split(',') .split(/,(?=(?:(?:[^"']*["']){2})*[^"']*$)/)
.map(function (value: string) { .map(function (value) {
return value.trim(); return value
.trim()
.replace(/^["']|["']$|(?<==)["']/g, '')
.replace(/=(.*[?{}|&~![()^]+.*)/, "='$1'");
}) })
.filter(Boolean); .filter(Boolean);
} }