UNPKG

compromise

Version:
55 lines (49 loc) 1.16 kB
'use strict'; //turn a infinitiveVerb, like "walk" into an adjective like "walkable" const rules = [ [/[^aeiou]y$/, 'i'], //relay - reliable [/([aeiou][n])$/, '$1n'], //win - winnable ]; //convert - 'convertible' //http://grammarist.com/usage/able-ible/ //http://blog.oxforddictionaries.com/2012/10/ibles-and-ables/ const ible_suffixes = { collect: true, exhaust: true, convert: true, digest: true, discern: true, dismiss: true, reverse: true, access: true, collapse: true, express: true }; const irregulars = { eat: 'edible', hear: 'audible', see: 'visible', defend: 'defensible', write: 'legible', move: 'movable', divide: 'divisible', perceive: 'perceptible' }; //takes an infitive verb, and returns an adjective form const toAdjective = function(str) { if (irregulars[str]) { return irregulars[str]; } for(let i = 0; i < rules.length; i++) { if (str.match(rules[i][0])) { str = str.replace(rules[i][0], rules[i][1]); } } let adj = str + 'able'; if (ible_suffixes[str]) { adj = str + 'ible'; } return adj; }; module.exports = toAdjective; // console.log(toAdjective('buy'));