[Madrid-pm] Curso acelerado de Nes

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


Perdón...

use nes;
my $container = nes_container->new('template.nhtml');
my $nes_tags = {};

$nes_tags->{'number'} = int rand 10;
$container->set_tags(%tags);
$container->interpret();
$container->out();

Me he levantado a las 6 y me acosté tarde...




________________________________
De: Skriptke <skriptke en yahoo.es>
Para: Lista de correo de Madrid Perl Mongers <madrid-pm en pm.org>
Enviado: vie,19 febrero, 2010 11:51
Asunto: Re: [Madrid-pm] Curso acelerado de Nes


También puedes hacer un uso tradicional de Nes, pero como ofrece ninguna ventaja sobre otros sistemas de plantillas está sin documentar, aunque lo haré cuando tenga un rato:

use nes;
my $container = nes_container->new('template.nhtml');
my $nes_tags = {};

$nes_tags->{'number'} = int rand 10;
$self->{'container'}->set_tags(%tags);
$self->{'container'}->interpret();
$self->{'container'}->out();

La clase Singleton la implementé entre otros para simplificar el uso de Nes.

* Estoy escribiendo estas cosas de cabeza y no me funciona muy bien, disculpar si hay erorres :-)





________________________________
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/425eaf55/attachment-0001.html>


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