compromise
Version:
natural language processing in the browser
33 lines (32 loc) • 1.01 kB
JavaScript
//patterns for turning 'dwarves' to 'dwarf'
module.exports = [
[/([^v])ies$/i, '$1y'],
[/ises$/i, 'isis'],
[/(kn|[^o]l|w)ives$/i, '$1ife'],
[/^((?:ca|e|ha|(?:our|them|your)?se|she|wo)l|lea|loa|shea|thie)ves$/i, '$1f'],
[/^(dwar|handkerchie|hoo|scar|whar)ves$/i, '$1f'],
[/(antenn|formul|nebul|vertebr|vit)ae$/i, '$1a'],
[/(octop|vir|radi|nucle|fung|cact|stimul)(i)$/i, '$1us'],
[/(buffal|tomat|tornad)(oes)$/i, '$1o'],
[/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i, '$1sis'],
[/(vert|ind|cort)(ices)$/i, '$1ex'],
[/(matr|append)(ices)$/i, '$1ix'],
[/(x|ch|ss|sh|s|z|o)es$/i, '$1'],
[/men$/i, 'man'],
[/(n)ews$/i, '$1ews'],
[/([ti])a$/i, '$1um'],
[/([^aeiouy]|qu)ies$/i, '$1y'],
[/(s)eries$/i, '$1eries'],
[/(m)ovies$/i, '$1ovie'],
[/([m|l])ice$/i, '$1ouse'],
[/(cris|ax|test)es$/i, '$1is'],
[/(alias|status)es$/i, '$1'],
[/(ss)$/i, '$1'],
[/(ics)$/i, '$1'],
[/s$/i, '']
].map(function(a) {
return {
reg: a[0],
repl: a[1]
};
});