indefinite
Version:
Prefix a noun with an indefinite article - a or an - based on whether it begins with a vowel
35 lines (26 loc) • 762 B
JavaScript
const { capitalize } = require('./helpers');
const irregulars = require('./irregular-words');
const rules = require('./rules');
const indefinite = (word, opts = {}) => {
let article;
/**
* I'd really prefer to use for of here, but babel converts that
* to something using Symbol.iterator, which PhantomJS chokes on.
*/
rules.some((rule) => {
if (rule.check(word, opts)) {
article = rule.run(word, opts);
return true;
}
});
return handleOptions(article, opts, word);
};
const handleOptions = (article, opts, word) => {
article = capitalize(article, opts);
if (opts.articleOnly) {
return article;
}
return `${article} ${word}`;
};
indefinite.irregularWords = irregulars.list;
module.exports = indefinite;