Comparing version 0.2.0 to 0.2.1
114
buscaBR.js
@@ -18,3 +18,3 @@ (function() { | ||
var codes = [ | ||
var CODES = [ | ||
[/BL|BR/, 'B'], | ||
@@ -39,24 +39,49 @@ ['PH', 'F'], | ||
/** | ||
* Busca sincrona da palavrá | ||
* | ||
* @param {String} str - String fonética | ||
* @param {Array} array - Dicionário de palavras | ||
* @return {Array|Object} | ||
*/ | ||
buscaBR.searchSync = function (str, array) { | ||
var i; | ||
var results = []; | ||
buscaBR.searchSync = function(str, array){ | ||
var results = []; | ||
for(var i = 0 ; i < array.length; i++){ | ||
if(this.encode(str) == this.encode(array[i])){ | ||
results.push({termo:array[i], index: i}) | ||
for (i = 0; i < array.length; i++) { | ||
if (this.encode(str) == this.encode(array[i])) { | ||
results.push({ | ||
termo: array[i], | ||
index: i | ||
}); | ||
} | ||
} | ||
return (results.length>0) ? results : {erro:"Não há registros"}; | ||
return results.length ? results : new Error('Não há registros'); | ||
}; | ||
buscaBR.search = function(str, array, callback){ | ||
callback(this.searchSync(str, array)); | ||
/** | ||
* Buscar pela palavra foneticamente | ||
* | ||
* @param {String} str - String fonética | ||
* @param {Array} array - Dicionário de palavras | ||
* @param {Function} callback - Função para executar após a busca | ||
*/ | ||
buscaBR.search = function (str, array, callback) { | ||
tratar_erro(this.searchSync(str, array), callback); | ||
}; | ||
/** | ||
* Codifica uma string | ||
* | ||
* @param {String} str - String para codificar | ||
* @return {String} | ||
*/ | ||
buscaBR.encode = function (str) { | ||
str = removeAcento(str.toUpperCase()); | ||
for(var i = 0; i < codes.length; i++){ | ||
// str = str.replace(this.codes[i][0],this.codes[i][1]); | ||
str = str.split(codes[i][0]).join(codes[i][1]) | ||
for(var i = 0; i < CODES.length; i++){ | ||
// str = str.replace(this.CODES[i][0],this.CODES[i][1]); | ||
str = str.split(CODES[i][0]).join(CODES[i][1]) | ||
} | ||
@@ -70,29 +95,58 @@ | ||
function squeeze(str){ | ||
var cont = 0; | ||
var newString=''; | ||
for(var i = 0 ; i < str.length; i++){ | ||
if(str[i] != str[i+1]){ | ||
newString +=str[i]; | ||
/** | ||
* Remove os caracteres repetidos sequencialmente em uma string | ||
* | ||
* @param {String} str - String para tratar | ||
* @return {String} | ||
*/ | ||
function squeeze (str) { | ||
str = str || ''; | ||
return str.replace(/(.)(?=\1)/g, ''); | ||
} | ||
/** | ||
* Passa o erro como parametro caso seja experado pelo callback | ||
* | ||
* @param {Object} result | ||
* @param {Function} done | ||
* @return {Function} | ||
*/ | ||
function tratar_erro(result, done) { | ||
if (done.length > 1) { | ||
if (result instanceof Error) { | ||
result = [result, null]; | ||
} else { | ||
result = [null, result]; | ||
} | ||
} else { | ||
result = [result]; | ||
} | ||
return newString; | ||
done.apply(this, result); | ||
} | ||
function removeAcento(strToReplace) { | ||
var str_acento = "ÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ"; | ||
var str_sem_acento = "AAAAAEEEEIIIIOOOOOUUUUC"; | ||
var nova = ""; | ||
for (var i = 0; i < strToReplace.length; i++) { | ||
if (str_acento.indexOf(strToReplace.charAt(i)) != -1) { | ||
nova += str_sem_acento.substr(str_acento.search(strToReplace.substr(i, 1)), 1); | ||
} else { | ||
nova += strToReplace.substr(i, 1); | ||
/** | ||
* Remove os acentos existentes em uma string | ||
* | ||
* @param {String} strToReplace - Texo para remover os acentos | ||
* @return {String} | ||
*/ | ||
function removeAcento(str) { | ||
var i, x; | ||
var ACENTOS = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž'; | ||
var SEM_ACENTOS = 'AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz'; | ||
str = str.split(''); | ||
for (i = 0; i < str.length; i++) { | ||
x = ACENTOS.indexOf(str[i]) | ||
if (x != -1) { | ||
str[i] = SEM_ACENTOS[x]; | ||
} | ||
} | ||
var nova = nova.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ''); | ||
return nova; | ||
str = str.join(''); | ||
return str.replace(/[^a-z0-9\s]/gi, ''); | ||
} | ||
}()); |
@@ -15,3 +15,3 @@ { | ||
], | ||
"version": "0.2.0", | ||
"version": "0.2.1", | ||
"author": { | ||
@@ -18,0 +18,0 @@ "name": "Jayr Alencar", |
@@ -1,21 +0,7 @@ | ||
const expect = require('chai').expect; | ||
const buscaBR = require('../buscaBR'); | ||
var buscaBR = require('../buscaBR'); | ||
describe('Busca BR', function() { | ||
describe("Buscar", function() { | ||
it("Nome errado", function(done) { | ||
buscaBR.search('feijaum',['arroz','feijão','feijoada'],function(res){ | ||
expect(res).with.length(1); | ||
expect(res[0]).to.have.property('termo').with.equal("feijão"); | ||
expect(res[0]).to.have.property('index').with.equal(1); | ||
done(); | ||
}); | ||
}); | ||
}); | ||
buscaBR.search('feijaum',['arroz','feijão','feijoada'],function(res){ | ||
console.log(res); | ||
}); | ||
describe("Encode", function() { | ||
it("Nome com acentos", function() { | ||
expect(buscaBR.encode('Feijão')).to.equal('FJ'); | ||
}); | ||
}); | ||
}); | ||
console.log(buscaBR.encode('paralelepipedo')); |
9465
137