[Cascavel-pm] uso de __DATA__ com hierarquia de classes e Template Toolkit

Luis Motta Campos luismottacampos em yahoo.co.uk
Quarta Dezembro 5 01:14:19 PST 2007


Alceu Rodrigues de Freitas Junior wrote:
> Oi Luis, Eu já disse que não recebo nenhum email seu enviado pra
> lista? Pois é, tive que ir catar o seu lá no histórico da lista. Não
> faço a menor idéia porque isso acontece.

Isso eh um problema para se colocar para os moderadores da lista. Algum
moderador escutando? :)

> Bem, voltando ao problema, vou contar com mais detalhes o que estou 
> tentando fazer.

[explicacao comprida, confusa e sem codigo aqui]

> À partir daí passei a ter erros. Para ter comodidade de uso, eu criei
>  uma superclasse que tenha métodos para instanciar "objetos-template"
> e devolver o código posteriormente ao querer processar o modelo e
> gerar o código de teste. Eu utilizei um pouco de tabela de símbolos
> para poder ler o __DATA__ sempre da subclasse, nunca da superclasse
> (que não nada definido ali) mas isso não está funcionando: apesar de
> não ter erros ao ler __DATA__, a variável que recebe o conteúdo
> permanece com undef.

Onde estah o codigo de leitura do __DATA__ ? Ler do __DATA__ nao eh
trivial, especialmente quando voce estah tentando ler de um __DATA__ que
nao eh o seu proprio.

Eu recomendo que voce transcreva teus templates em um inline string
dentro de um metodo na classe filha. Assim, fica mais simples de
entender o que voce estah colocando ali.

Bom, isso se voce quiser continuar com esta solucao complicada.

Pelo que eu entendi, voce esta instalando os modulos que fazem parte do
seu sistema em algum lugar. Voce sabe que voce pode instalar mais do que
apenas modulos, nao? Assim, seja lah onde voce estiver, sempre pode
instalar seus templates, nos mesmos diretorios (ou em um separado, se
fizer muita diferenca para voce) em que instalou as bibliotecas.

Desta maneira, voce sempre vai ter seus templates mais ou menos no mesmo
lugar, mas flexivel o bastante para se adaptar quando o usuario tiver
uma instalacao nao convencional de perl.

Os modulos que voce precisa sao: Config.pm (configuracao do Perl,
detalhes de compilacao, path para as bibliotecas); e FindBin (muito util
para determinar diretorios de onde voce estah rodando e onde estao suas
bibliotecas).

> Nunca ouvi falar em AppML e uma busca rápida no Wikipedia me diz que 
> isso foi descontinuado (http://en.wikipedia.org/wiki/AppML).

A sugestao era que voce desse uma espiada no codigo do AppML e
comparasse com o teu proprio codigo de leitura de informacao a partir do
__DATA__ de outros modulos. Ele faz isso, eu tenho quase certeza.

Voce ainda me deve:

1. Status;
2. Codigo de leitura do __DATA__ que voce estah usando.

Putamplexos!
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}



Mais detalhes sobre a lista de discussão Cascavel-pm