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
[email protected]
http://mail.pm.org/mailman/listinfo/madrid-pm

Responder a