Temper: Kohana Template Parser

  • Mar
  • 24

2 comentarios! 237 palabras - 1 hits

Temper, potente e intuitivo motor de plantillas para kohanaphp

Tan solo anunciar la disponibilidad de temper, un motor de plantillas para kohanaphp, basado en Using a Stack to Parse HTML with PHP5. La idea principal del modulo es la de proveer de un lenguaje de plantillas sencillo, intuitivo y seguro.

El modulo sigue las características del framework, por lo que resulta totalmente extensible y aprovecha el sistema de ficheros en cascada.

Sintaxis

Temper soporta varios tipos de sintaxis dentro de las plantillas, para ello usa tres tipos de delimitadores, {}, {{}}, <prefix:tag></prefix:tag>

Variables

  • {=variable} se convierte en <?=$variable;?>
  • {=variable|funcion} se convierte en <?=funcion($variable);?>
  • {foo.variable} representa un objeto o matriz
  • {/path/to/} se convierte en http://example.com/path/to/
  • {/path/to/=variable/} se convierte en http://example.com/path/to/<?=$variable;?>

Funciones

  • {{echo({%foo})}} se convierte en <?php echo($foo);?>
  • {{class::method({%foo}, 'arg', 'arg')}} se convierte en <?= call_user_function_array(array('class','method'), array('arg','arg'));?>

Tags

En temper los tags están representados como objetos, lo que nos permite añadir tags personalizados o incluso deshabilitar los que no necesitemos para mejorar el rendimiento del modulo.

La sintaxis de cada etiqueta varia dependiendo de los argumentos que acepta.

Por ejemplo, para incluir un bloque condicional (if elseif else)

  1.  
  2.             <ko:if var="a" eq="a">a
  3.             <ko:elseif var="a" eq="b" />b
  4.             <ko:elseif var="a" neq="">set
  5.             <ko:else />not set</ko:if>
  6.  

La documentación del modulo aun es algo así como inexistente, pero creo que con los ejemplos que incluye y dando una ojeada al código es suficiente para entender su funcionamiento.

El compromiso para los próximos días es añadir algo de documentación al proyecto y algún ejemplo mas “real”.

2 comentarios

  • Mar
  • 25

# Escrito por sosa hace 2 años, 4 meses

No me quedó claro en el post: tu programaste esto? de ser así, felicidades!!

Otra cosa: No está basado en liquid, que a su vez está basado en smarty? Cual es la diferencia entre Temper y Smarty? Lo digo con buena intención, he programado en liquid pero en smarty nunca.

Ah y una última pregunta, podré adaptar esto para CakePHP?

Por cierto, ahora usas Kohana en lugar de CI?

Jaja! cuanta pregunta. Saludos!!


  • Mar
  • 25

# Escrito por Alex Sancho hace 2 años, 4 meses

Hey, cuanto tiempo, contestando en estricto orden,

  • si, lo he escrito yo, basandome en el articulo de iocore.

  • creo que con smarty solo tiene alguna similitud en la sintaxis.

  • supongo que adaptarlo a cake no sera muy dificil, aunque desconozco el funcionamiento de este.

  • Creo que ha sido una evolucion logica, CI en algunos aspectos resulta demasiado restrictivo, y el soporte para PHP4 hace que el framework tenga alguos bytes de sobra.

Para mas adelante publicare algunos de los motivos por los que he decidido dar el salto.

@salu2


Escribe tu comentario

Puedes utilizar este formulario para escribir tu opinion sobre esta entrada, no existe ningun tipo de limitacion a la hora de enviar opiniones, tan solo sigue unas reglas basicas de cortesia y todos estaremos mas contentos.

Puedes identificarte utilizando OpenID, solo tienes que introducir tu URL OpenID en el siguiente campo y pulsar el boton de validar.





Instrucciones para los comentarios

El simbolo * indica que se trata de un campo obligatorio.

Este sitio usa Markdown junto con Smartypants para educar los textos, tambien esta disponible para los comentarios.

A continuación os muestro algunas de las equivalencias:

  • [enlace de ejemplo](http://example.com/) resulta enlace de ejemplo.
  • **Texto en Negrita**
  • _Italica_
  • > blockquote
  • > > nested blockquote
  • * Esto es un elemento de una lista desordenada (ul)
  • 1. Esto es un elemento de una lista ordenada (ol)

MC Puedes seguir las respuestas a tus comentarios con MyComments.