This commit is contained in:
Tutur33
2023-11-24 22:35:41 +01:00
parent 3c0b507a93
commit 7644b2a0f7
45165 changed files with 4803356 additions and 3 deletions
+37
View File
@@ -0,0 +1,37 @@
'use strict';
var has = Function.call.bind(Object.prototype.hasOwnProperty);
var join = Function.call.bind(Array.prototype.join);
var trim = Function.call.bind(String.prototype.trim);
var isArray = Array.isArray;
var filter = Function.call.bind(Array.prototype.filter);
var slice = Function.call.bind(Array.prototype.slice);
var concat = Function.call.bind(Array.prototype.concat);
module.exports = function listify(list) {
if (!isArray(list)) {
throw new TypeError('requires an array');
}
var options = arguments.length > 1 ? arguments[1] : null;
if (!options) {
options = {};
}
var separator = has(options, 'separator') ? options.separator : ', ';
var finalWord = has(options, 'finalWord') ? options.finalWord : 'and';
if (finalWord.length > 0) {
finalWord += ' ';
}
var trimmed = filter(list, trim);
var str;
if (trimmed.length === 2 && finalWord.length > 0) {
str = join(trimmed, ' ' + finalWord);
} else if (trimmed.length < 3) {
str = join(trimmed, separator);
} else {
str = join(concat(slice(trimmed, 0, -1), finalWord + trimmed[trimmed.length - 1]), separator);
}
return str;
};