[Madrid-pm] Curso acelerado de Nes

Skriptke skriptke en yahoo.es
Vie Feb 19 02:34:11 PST 2010


Hombre no te iba a engañar en una cosa tan fácil de comprobar, si es un clase tipo singleton:

http://github.com/Skriptke/nes/blob/master/Singleton.pm

No requiere parámetros a no ser que para debug quieras hacer esto:

http://example.com/script.cgi

que tendrías que pasarle el nombre de la plantilla

Pero en Nes lo normal sería hacer esto:

http://example.com/template.nhtml

Que no requiere nada.

En realidad "new" en Perl es una convención, porque puedes llamar al constructor como quieras, pero como todo el mundo está acostumbrado a hacer new CGI o new lo que sea... Ya he visto en tus módulos utilizas "this" y no "self" supongo que antes trabajabas en C++ o Java.

Es posible que no sea el más apropiado, pero a mi me gusto en su momento.

Ya te digo que esto deriva de código escrito en el 2000 o por ahí, en su momento lo llame "nes" (No Embedded Source) y lo puse en minúsculas porque no pensaba en subirlo en  a la cpan.

Pero efectivamente las normas de la CPAN indica que la primera letra al menos de debe estar en mayúsculas, y es por eso que el namespace lo solicite como Nes o HTML::Nes

http://www.nntp.perl.org/group/perl.modules/2010/02/msg69879.html






________________________________
De: Salvador Fandiño <sfandino en yahoo.com>
Para: Lista de correo de Madrid Perl Mongers <madrid-pm en pm.org>
Enviado: vie,19 febrero, 2010 10:42
Asunto: Re: [Madrid-pm] Curso acelerado de Nes


Skriptke wrote:
> Lo primero que ha sido un placer conoceros, pero tengo una espinita clavada con Diego cuando me confeso  que no supo hacer funcionar Nes, y yo que presumo de que es fácil de usar... :-)
> 
> Que es Nes:
> 
> Un sistema para la separación del código ejecutable Perl y la representación de los datos generados en HTML mediante Tags HTML que son reemplazados por variables creadas en Perl.
> 
> De momento no es ninguna otra cosa.
> 
> http://nes.sourceforge.net/miniblog/es/?item=Principios%20de%20Nes
> 
> Caso práctico:
> 
> Página que muestra un número aleatorio.
> 
> Creamos la plantilla :
> 
> lucky.nhtml
> {: NES 1.0 ('lucky.pl') :}
> {: # la linea {: NES 1.0 ('lucky.pl') :} le dice a Nes
>      que cargue el el script lucky.pl para esta plantilla
> :}
> <html>
>   <head>
>     <title>Suerte</title>
>   </head>
>   <body>
>     {:# {: $ number :} es la variable $nes_tags->{'number'} :}
>     El número de la suerte es: <b>{: $ number :}</b>
>   </body>
> </html>
> 
> Creamos el script Perl:
> 
> lucky.pl
> use nes;
> 
> # Único objeto a instanciar en Perl
> my $nes = Singleton->new();
> 
> # Las variables que Nes va a reemplazar en la plantilla
> my $nes_tags = {};
> $nes_tags->{'number'} = int rand 10;
> 
> # Único método de  Singleton, que envía los datos a reemplazar
> $nes_tags->out(%$nes_tags)
> 
> 
> Y ahora la gracia de Nes, lo convertimos en un objeto:
> 
> lucky.nhtml
> {: NES 1.0 ('lucky.pl') :}
> {: $ number :}
> 
> Y lo podemos insertar en cualquier página Web así:
> 
> template.nhtml:
> {: NES 1.0 script.pl :}
> <html>
>   <head>
>     <title>Lo que sea</title>
>   </head>
>   <body>
>     ...
>     El número de la suerte es: <b>{: include lucky.nhtml :}</b>
>     ...
>   </body>
> </html>
> 
> http://nes.sourceforge.net/miniblog/es/?item=Objetos
> 
> En vez de mostrar un número, nuestro objeto podía mostrar un formulario, un script PHP, JavaScript, Ajax, etc. o una mezcla. El Tag “include” admite parámetros:
> 
> http://nes.sourceforge.net/miniblog/es/?item=Tag%20include%20%28file%29
> http://nes.sourceforge.net/miniblog/es/?item=Paradigma%20Nes
> http://nes.sourceforge.net/miniblog/es/?item=Incluir%20PHP%20y%20otros
> 
> Prácticamente con esto, ya sabéis Nes, además de $ y de include hay 8 Tags más, se aprenden en un rato, y el único objeto que tendremos que instanciar en nuestro script Perl es uno de la clase Singleton y como sólo tiene un método (out) tampoco tiene perdida.
> 
> http://nes.sourceforge.net/miniblog/es/?item=Sintaxis%20de%20Nes
> http://nes.sourceforge.net/miniblog/es/?item=La%20clase%20Singleton
> 

Un par de cuestiones de estilo:

1) Singleton es un muy mal nombre para un paquete. Llamale Nes o Nes::Stash

2) nes tampoco es un buen nombre, los nombre en minusculas estan reservados para pragmas (strict, autodie, etc). Usa Nes o NES

3) Si tu clase realmente es un singleton, no necesitas el new, directamente tendrias que poder hacer

  Nes::Stash->set(%datos);

por ejemplo asi

  package Nes::Stash;

  my $singleton;

  sub set {
    my $self = shift;
    ref $self or $self = ($singleton ||= __PACKAGE__->_new);
    $self->...
  }

... pero claro solo si es un singleton de verdad, que con la estructura que tienes no tengo muy claro que lo sea!

- Salva
_______________________________________________
Madrid-pm mailing list
Madrid-pm en pm.org
http://mail.pm.org/mailman/listinfo/madrid-pm


      
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.pm.org/pipermail/madrid-pm/attachments/20100219/8da74849/attachment-0001.html>


Más información sobre la lista de distribución Madrid-pm