UNPKG

sd-pluralize-words

Version:

Obtenha o plural em portugês (BR) de palavras no singular

142 lines (108 loc) 4.09 kB
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ var regras = { /** * Palavras que terminam em a|e|i|o|u|ã|ãe|ão * apenas acrescenta a letra 's' no final * @type {Object} */ acrescentar: { 's' : ['a', 'e', 'i', 'o', 'u', 'ã', 'ãe'], 'es' : ['r', 'z', 'n', 'ás'], '' : ['is', 'us', 'os'] }, /** * Palavras que terminam em al|el|ol|ul|il|m * substitui a terminação * @type {Object} */ substituir: { 'ais' : 'al', 'eis' : 'el', 'ois' : 'ol', 'uis' : 'ul', 'is' : 'il', 'ns' : 'm', 'eses': 'ês', 'ões' : 'ão' }, /** * Plural das sete exceções * @type {Object} */ excecoes: { 'males' : 'mal', 'cônsules' : 'cônsul', 'méis' : 'mel', 'féis' : 'fel', 'cais' : 'cal' }, /** * Palavras que não tem plural * @type {Object} */ sem_plural: [ 'não' ], }; var plural = function(palavras) { var palavrasPlural = palavras.split(' '); palavrasPlural.forEach(function(palavra, i) { palavrasPlural[i] = _plural(palavra); }); return palavrasPlural.join(' '); }; var _plural = function plural( palavra ) { var regex_troca = "^([a-zA-Zà-úÀ-Ú]*)(%s)$" , plural = ""; for ( var regra in regras ) { switch ( regra ) { case 'acrescentar': for ( var adicao in regras[regra] ) { var busca = regex_troca.replace("%s", regras[regra][adicao].join("|")) , regex = new RegExp(busca, 'i'); if ( regex.exec(palavra) !== null ) { plural = palavra + adicao; break; } } break; case 'substituir': for ( var substituicao in regras[regra] ) { var busca = regex_troca.replace("%s", regras[regra][substituicao]) , regex = new RegExp(busca, 'i'); if ( regex.exec(palavra) !== null ) { /** * Se a palavra for paroxítona ou proparoxítona, * troca-se 'il' por 'eis' */ if ( palavra.match(/([áéíóú])/) !== null && regex.exec(palavra)[2] == "il" ) { plural = palavra.replace("il", "eis"); break; } else { var busca_sub = new RegExp(regex.exec(palavra)[2] + '$', 'i'); plural = palavra.replace(busca_sub, substituicao); break; } } } break; case 'excecoes': for ( var excecao in regras[regra] ) { if ( palavra == regras[regra][excecao] ) { plural = excecao; break; } } break; case 'sem_plural': regras[regra].forEach(function(r) { if (palavra === r) plural = palavra; }); break; } } return plural !== "" ? plural : palavra; } window.plural = plural; module.exports = plural; },{}]},{},[1]);