Quarta-feira, 24 de Setembro de 2008

HTML Unescape em Python

Toda linguagem tem seus pontos altos e baixos, e suas próprias idiossincracias. Ontem eu esbarrei em algo interessante com relação a biblioteca padrão do Python.

Eu precisava de uma função que fosse mais ou menos equivalente ao html_entity_decode do PHP.

Eu estava usando a biblioteca webhelpers, que tem uma função escape, mas cadê a unescape? Olhando o código, descubro que a webhelpers usa uma função definida em webhelpers.utils, chamada cgi_escape, que seria uma implementação melhor de cgi.escape.

Minhas esperanças então se concentratam no módulo cgi. Mas uma olhada mais atenta me frustrou de novo: temos escape, mas não unescape. Até que um comentário num post do codare que, vejam só a ironia, mostrava como implementar um escape, me trouxe a solução: xml.sax.saxutils.unescape (e sua par, xml.sax.saxutils.escape).

Sei que teria sido muito fácil implementar uma função assim eu mesmo – até mesmo trivial. O ponto é que algo que eu considerava intuitivo e esperava encontrar naquele lugar, se mostrou muito mais difícil de achar do que minha intuição supôs. E eu não gosto de ter minha intuição enganada.

5 comentários:

Luiz Paulo disse...

Por isso que gosto do PHP... Não tem esse tipo de problema, tá tudo pronto!

rsrsrsrs

Calma Cacilhas, mantenha a calma!
[]'s

La Batalema Pitonisto disse...

Um, dois, três, quatro…

Eduardo Willians disse...

Hmmm... Mas isso não seria exatamente um ponto fraco da *linguagem*, apenas uma imperfeição da biblioteca.

La Batalema Pitonisto disse...

Bem Eduardo,

Nem mesmo isso. A resposta que dei ao L.P. foi só para ser engraçada mesmo. =)

A biblioteca existe e é bem organizada.

É que o Walter deu uma moscada feia, já que a biblioteca SAX é bem mais manjada que a webhelpers.

Ele se esqueceu de procurar no primeiríssimo lugar onde qualquer programador Python procura: na Python Library Reference, também conhecida como o pulo do gato.

As funções estão lá, no capítulo 8, seção 11.

[]'s
Cacilhas, La Batalema

Walter Cruz disse...

Hum. Sim, vc está certo em dizer que eu mosquei de não procurar no sax primeiro.

Mas veja, o ponto é que algumas vezes a organização das bibliotecas quebra a forma que 'intuímos' que as coisas estão organizadas..

E, convenhamos, um html_escape ou unescape numa biblioteca de xml não é lá muito intuitivo :) Mas é isso aí, errando e acertando a gente segue escrevendo os softwares toscos de cada dia!