Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

Escribiendo templates de AjGenesis en otros lenguajes

Hola gente!

Hace unos días, un "thread" de la excelente lista de .NET del Microsoft Users Group de Argentina:

Ejecutar codigo desde variable

me recordó un tema de mi "backlog" para AjGenesis, mi proyecto de generación de código. Y ayer, el bueno de Juan Pablo García, me envió por "email" el enlace a

Evaluate C# Code (Eval Function)
http://www.codeproject.com/csharp/evalcscode.asp

Es lo que quiero agregar al AjGenesis (y quizas en alguna parte de SaasyLongTail, el proyecto en el que participo en SW): que un template pueda ser escrito en C# o VB.NET, de la siguiente forma: genero un texto

using...
using...
class MyTemplate { 
    public void Evaluate(AjGenesisContext context) {
 ... y aquí generar el código del template
    }
}
Si el template es

<h1>Prueba</h1>
<h2>${Project.Name}</h2>
<#
    for (int k=1; k<=6; k++) {
#>
<h2>Mensaje <#= k #></h2>
<#
   }
#>
 
deberia generar algo como

using...
using...
class MyTemplate {
    public void Evaluate(AjGenesisContext context) {
        context.Out.WriteLine("<h1>Prueba</h1>");
        context.Out.WriteLine("<h2>" + context.Evaluate("Project.Name") + "</h2>");
        for (int k=1; k<=6; k++) {
            context.Out.Write("<h2>Mensaje ");
            context.Out.Write(k);
            context.Out.WriteLine("</h2>\n");
        }
    }
}
 

y así.... Como veran, es el viejo truco de JSP y ASP.NET: compilar el template. La idea me la sembró justamente JavaServer Pages, alguna vez.

En la solución planteada en el enlace de Juan Pablo, habra que ver como descargar esa DLL luego.

Bueno otros enlaces similares:

An Eval Function for C# using JScript.NET (JavaScript)
http://www.odetocode.com/Code/80.aspx

How To Programmatically Compile Code Using C# Compiler
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q304/6/55.asp&NoWebContent=1

Evaluate C# Code (Eval Function)
http://www.codeproject.com/csharp/evalcscode.asp

The expression evaluator revisited (Eval function in 100% managed .net)
http://www.codeproject.com/useritems/eval3.asp

Evaluating Mathematical Expressions by Compiling C# Code at Runtime
http://www.codeproject.com/cs/algorithms/matheval.asp

http://www.codeproject.com/useritems/eval3.asp
http://www.codeproject.com/csharp/runtime_eval.asp
http://www.codeproject.com/csharp/csi.asp

Otro camino es implementar su propio lenguaje:

A Simple Compiler for the Common Language Runtime
http://www.codeproject.com/cs/algorithms/compiler.asp

Vean como usa la SharpIDE, encantador... :-).... ya va a caer esa IDE en algun AjGenesis.ToolsContrib... :-)

Discusion interesante en:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=141666&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=524490&SiteID=1

Otro camino es scripting:

http://weblogs.asp.net/rosherove/articles/dotnetscripting.aspx
http://www.codeproject.com/csharp/scripting.asp
http://www.codeproject.com/dotnet/DotNetScript.asp
http://www.alintex.com/products.aspx

La gente de Java tiene, por ejemplo:

http://www.singularsys.com/jep/

Algunos enlaces que colecciono:

http://www.ajlopez.net/Busqueda.php?Filtro=Interpre

Published Mon, Oct 2 2006 8:56 by lopez

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: