mirror of
https://github.com/flarum/framework.git
synced 2024-11-28 20:16:08 +08:00
36 lines
1.0 KiB
JavaScript
36 lines
1.0 KiB
JavaScript
|
/**
|
||
|
* The `punctuateSeries` helper formats a list of strings (e.g. names) to read
|
||
|
* fluently in the application's locale.
|
||
|
*
|
||
|
* ```js
|
||
|
* punctuateSeries(['Toby', 'Franz', 'Dominion']) // Toby, Franz, and Dominion
|
||
|
* ```
|
||
|
*
|
||
|
* @param {Array} items
|
||
|
* @return {VirtualElement}
|
||
|
*/
|
||
|
export default function punctuateSeries(items) {
|
||
|
if (items.length === 2) {
|
||
|
return app.trans('core.lib.series_two_text', {
|
||
|
first: items[0],
|
||
|
second: items[1]
|
||
|
});
|
||
|
} else if (items.length >= 3) {
|
||
|
// If there are three or more items, we will join all of the items up until
|
||
|
// the second-to-last one with the equivalent of a comma, and then we will
|
||
|
// feed that into the translator along with the last two items.
|
||
|
const first = items
|
||
|
.slice(0, items.length - 2)
|
||
|
.reduce((list, item) => list.concat([item, app.trans('core.lib.series_glue_text')]), [])
|
||
|
.slice(0, -1);
|
||
|
|
||
|
return app.trans('core.lib.series_three_text', {
|
||
|
first,
|
||
|
second: items[items.length - 2],
|
||
|
third: items[items.length - 1]
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return items;
|
||
|
}
|