Me gusta tener un motor de plantillas en los lenguajes que implemento, así que agregué uno a mi proyecto de código abierto CobolScript, un compilador COBOL a JavaScript. El primer ejemplo:
https://github.com/ajlopez/CobolScript/tree/master/samples/template
El código:
<# data division. working-storage section. 01 n. procedure division. #> Factorial --------- <# perform show-factorial varying n from 1 to 10. show-factorial. local result. perform factorial using n giving result. #> ${n}!= ${result} <# . factorial using n. local m. if n = 1 then return n. subtract 1 from n giving m. perform factorial using m giving m. multiply n by m. return m. #>
El archivo plantilla es compilado a COBOL transformando cada texto en un comando DISPLAY … WITH NO ADVANCING (los saltos de línea ya están en el texto). El código entre <# y #> se copia tal cual en el programa COBOL. Cada expresión entre ${ y } se expande como otro parámetro al comando DISPLAY. Entonces, luego de compilar todo el texto a COBOL, CobolScript compila el resultado a JavaScript. La sintaxis de la plantillas es, entonces, una especie de “syntax sugar”.
La salida del programa anterior:
Factorial --------- 1!= 1 2!= 2 3!= 6 4!= 24 5!= 120 6!= 720 7!= 5040 8!= 40320 9!= 362880 10!= 3628800
Podría usar las plantillas para generar archivos de texto, y entonces, implementar generación de código en CobolScript, así como lo hice en AjGenesis (tanto en la variante clásica en .NET, como en Ruby o JavaScript/NodeJs). Antes de eso, ya tengo una implementación de páginas dinámicas basadas en este motor de plantillas (sí, páginas dinámicas en CobolScript, cosas vederes Sancho ;-). Pero es tema para otro post.
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez