UNPKG

english-list

Version:

make "X, Y, and Z"-style lists from arrays

35 lines (34 loc) 886 B
module.exports = function (conjunction, array, serialComma) { if (!Array.isArray(array) || !conjunction.toString) { throw new TypeError() } conjunction = conjunction.toString() serialComma = serialComma === undefined ? true : !!serialComma var length = array.length if (length === 0) { throw new Error('Cannot create an English list of an empty array') } else if (length === 1) { return array[0].toString() } else if (length === 2) { return ( array[0].toString() + ' ' + conjunction + ' ' + array[1].toString() ) } else { var strings = array.map(function (element) { return element.toString() }) var front = strings.slice(0, length - 1) var last = strings[length - 1] return ( front.join(', ') + (serialComma ? ', ' : ' ') + conjunction + ' ' + last ) } }