Archive for December, 2006

Trim() em javascript

A boa e velha função trim() é uma excelente pedida em qualquer linguagem, e chega a ser supreendente que javascript não a possua nativamente. Além de eliminar espaços em branco (assim como tabulações) de uma string, é também uma boa maneira pra se fazer algumas validações (como por exemplo verificar se um campo obrigatório não foi preenchido somente com espaços).

Já vi diversas implementações da função trim() – assim como de ltrim() e rtrim() – em javascript, mas acho que nenhuma tão elegante quanto a presente em http://www.somacon.com/p355.php.

String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, ”);
}

String.prototype.ltrim = function() {
return this.replace(/^\s+/, ”);
}

String.prototype.rtrim = function() {
return this.replace(/\s+$/, ”);
}

Utilizando-se de expressões regulares para fazer as substituições de espaços por vazio, o grande lance de elegância de código é utilizá-la como membro do protótipo do objeto String. Assim, basta chamar o método em qualquer váriavel do tipo String, como por exemplo variable.trim().

Ótima pedida para adicionar-se em um arquivo .js para incluir em todas as páginas.

Uma coisa que eu tentei rapidinho fazer e não consegui é adicionar ao protótipo de um objeto uma propriedade baseada em um método. Explico melhor por um exemplo: eu gostaria de adicionar uma propriedade booleana empty para realizar validação; a definiria baseada no resultado de trim(), algo mais ou menos como

String.prototype.empty = (this.trim().length == 0 ? true : false);

Criar a propriedade baseado em um valor é tranquilo (String.prototype.empty = false). Mas e baseado no resultado de uma função que foi definida no protótipo? Alguém sabe como?

Tags:

Mudanças

Um blog deveria ser utilizado com mais freqüência. Mas eu, que já não sou pouco enrolado pra isso, ainda tive motivos nos últimos meses.

Deixei no final de setembro a VEGA IT. Continuo eventualmente envolvido com questões pontuais lá com o pessoal, mas já não faço mais parte do quadro oficial.

Trabalho agora na Cinq Technologies, no papel de analista/desenvolvedor. O foco do trabalho é que mudou bastante: de desenvolvedor web, trabalhando com PHP, passei a
desenvolvedor .NET em base Oracle.

O projeto é offshore (o cliente é uma empresa norte-americana) e tende a se transformar em um projeto de BI.

As expectativas são ótimas, a experiência tem sido excelente e estou aprendendo muito. Acho que tenho um bom caminho a traçar.

Em breve, novos posts sobre o que interessa: programação!