'use strict';
let rules = [
{
reg: /(eave)$/i,
repl: {
pr: '$1s',
pa: '$1d',
gr: 'eaving',
ar: '$1r'
}
},
{
reg: /(end)$/i,
repl: {
pr: '$1s',
pa: 'ent',
gr: '$1ing',
ar: '$1er'
}
},
{
reg: /(ide)$/i,
repl: {
pr: '$1s',
pa: 'ode',
gr: 'iding',
ar: 'ider'
}
},
{
reg: /(ake)$/i,
repl: {
pr: '$1s',
pa: 'ook',
gr: 'aking',
ar: '$1r'
}
},
{
reg: /(eed)$/i,
repl: {
pr: '$1s',
pa: '$1ed',
gr: '$1ing',
ar: '$1er'
}
},
{
reg: /(e)(ep)$/i,
repl: {
pr: '$1$2s',
pa: '$1pt',
gr: '$1$2ing',
ar: '$1$2er'
}
}, {
reg: /(a[tg]|i[zn]|ur|nc|gl|is)e$/i,
repl: {
pr: '$1es',
pa: '$1ed',
gr: '$1ing',
prt: '$1en'
}
}, {
reg: /([i|f|rr])y$/i,
repl: {
pr: '$1ies',
pa: '$1ied',
gr: '$1ying'
}
}, {
reg: /([td]er)$/i,
repl: {
pr: '$1s',
pa: '$1ed',
gr: '$1ing'
}
}, {
reg: /([bd]l)e$/i,
repl: {
pr: '$1es',
pa: '$1ed',
gr: '$1ing'
}
}, {
reg: /(ish|tch|ess)$/i,
repl: {
pr: '$1es',
pa: '$1ed',
gr: '$1ing'
}
}, {
reg: /(ion|end|e[nc]t)$/i,
repl: {
pr: '$1s',
pa: '$1ed',
gr: '$1ing'
}
}, {
reg: /(om)e$/i,
repl: {
pr: '$1es',
pa: 'ame',
gr: '$1ing'
}
}, {
reg: /([aeiu])([pt])$/i,
repl: {
pr: '$1$2s',
pa: '$1$2',
gr: '$1$2$2ing'
}
}, {
reg: /(er)$/i,
repl: {
pr: '$1s',
pa: '$1ed',
gr: '$1ing'
}
}, {
reg: /(en)$/i,
repl: {
pr: '$1s',
pa: '$1ed',
gr: '$1ing'
},
},
{
reg: /(..)(ow)$/i,
repl: {
pr: '$1$2s',
pa: '$1ew',
gr: '$1$2ing',
prt: '$1$2n'
}
}
];
let keys = {
pr: 'present',
pa: 'past',
gr: 'gerund',
prt: 'participle',
ar: 'actor',
};
const from_infinitive = function(str) {
let obj = {
infinitive: str
};
if (!str || typeof str !== 'string') {