UNPKG

pluralize-ptbr

Version:

Obtenha o plural em portugês brasileiro de palavras no singular

143 lines (108 loc) 4.46 kB
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.pluralize = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({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; } module.exports = plural; },{}]},{},[1])(1) });