Add support for quoted csv in ini-values

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

View File

@ -104,6 +104,17 @@ describe('Utils tests', () => {
'b=2',
'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([]);
});

10
dist/index.js vendored
View File

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

View File

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