Simple, versatile string pluralization
npm i simplur
Use CommonJS or ESM to import
const simplur = require('simplur');
import simplur from 'simplur';
simplur
is an ES6 template tag that formats pluralization tokens based on the quantities injected into the string.
Pluralization tokens have the form "[singular|plural]
" and are resolved
using the first expression found to the left of each token or, if no
left-expression is available, the first expression to the right.
simplur`I have ${1} kitt[en|ies]`; // ⇨ 'I have 1 kitten'
simplur`I have ${3} kitt[en|ies]`; // ⇨ 'I have 3 kitties'
simplur`There [is|are] ${1} m[an|en]`; // ⇨ 'There is 1 man'
simplur`There [is|are] ${5} m[an|en]`; // ⇨ 'There are 5 men'
Multiple tokens and quantities are allowed. These follow the same rules as above.
simplur`There [is|are] ${1} fox[|es] and ${4} octop[us|i]`; // ⇨ 'There is 1 fox and 4 octopi'
simplur`There [is|are] ${4} fox[|es] and ${1} octop[us|i]`; // ⇨ 'There are 4 foxes and 1 octopus'
Quantity values may be customized using value of the form, [quantity, format function]
. For example:
function format(qty) {
return qty == 1 ? 'sole' :
qty == 2 ? 'twin' :
qty;
}
simplur`Her ${[1, format]} br[other|ethren] left`; // ⇨ 'Her sole brother left'
simplur`Her ${[2, format]} br[other|ethren] left`; // ⇨ 'Her twin brethren left'
simplur`Her ${[3, format]} br[other|ethren] left`; // ⇨ 'Her 3 brethren left'
Quantites may be hidden by omitting the format function (i.e. just pass value in
an Array), or by returning null
or undefined
.
Note: Whitespace immediately following a hidden quantity will be removed.
simplur`${[1]} gen[us|era]`; // ⇨ 'genus'
simplur`${[2]} gen[us|era]`; // ⇨ 'genera'
function hideSingular(qty) {
return qty == 1 ? null : qty;
}
simplur`Delete the ${[1, hideSingular]} cact[us|i]?`; // ⇨ 'Delete the cactus?'
simplur`Delete the ${[2, hideSingular]} cact[us|i]?`; // ⇨ 'Delete the 2 cacti?'
Custom
Markdown generated from README_js.md by