Refactor renderCommaSeparated for reuse

pull/21833/head
lukebarnard 2017-01-16 13:45:42 +01:00
parent d2d78919ce
commit fb68fff536
1 changed files with 7 additions and 14 deletions

View File

@ -56,17 +56,8 @@ module.exports = React.createClass({
if (users.length === 0) {
return null;
}
let originalNumber = users.length;
users = users.slice(0, this.props.summaryLength);
let remaining = originalNumber - this.props.summaryLength;
if (remaining < 0) {
remaining = 0;
}
let other = " other" + (remaining > 1 ? "s" : "");
return this._renderCommaSeparatedList(users, remaining) + (remaining ? ' and ' + remaining + other : '');
return this._renderCommaSeparatedList(users, this.props.summaryLength);
},
// Test whether the first n items repeat for the duration
@ -81,14 +72,16 @@ module.exports = React.createClass({
return true;
},
_renderCommaSeparatedList(items, disableAnd) {
if (disableAnd) {
return items.join(', ');
}
_renderCommaSeparatedList(items, itemLimit) {
const remaining = itemLimit === undefined ? 0 : Math.max(items.length - itemLimit, 0);
if (items.length === 0) {
return "";
} else if (items.length === 1) {
return items[0];
} else if (remaining) {
items = items.slice(0, itemLimit);
const other = " other" + (remaining > 1 ? "s" : "");
return items.join(', ') + ' and ' + remaining + other;
} else {
let last = items.pop();
return items.join(', ') + ' and ' + last;