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

Modelo textual para generación de código con AjGenesis

Estuve trabajando agregando una "feature" a mi proyecto de generación de código AjGenesis. El sistema maneja un modelo definido por el usuario, que puede ser cargado en memoria desde archivos .xml. AjGenesis puede procesar el modelo, completarlo, invocar a objetos .NET, crear directorios, archivos y aplicar templates para crear código y archivos de texto cualesquiera.

Pero el modelo reside en memoria: la deserialización desde XML es solamente una opción de implementación. Este fin de semana, he agregado el nuevo código en el repositorio de código del proyecto Codeplex: ahora, todo usuario de AjGenesis puede expresar su modelo en texto plano.

El modelo puede, entonces, expresarse en simples archivos de texto. Veamos un ejemplo.

El ejemplo más simple que se me ocurre es el modelo para una aplicación Hello World en AjGenesis. El modelo en XML es:

<Project Company="ajlopez.com"> <Message>Hello, World</Message> </Project>

Ahora, podemos expresar el mismo modelo en un archivo de texto:

Project Company = "ajlopez.com" Message = "Hello, World" End Project

Si necesitamos más mensajes, en XML escribíamos:

<Project> <Messages> <Message>Hello, World One</Message> <Message>Hello, World Two</Message> <Message>Hello, World Three</Message> </Messages> </Project>

Ahora, en texto, podemos escribir:

Project Messages Message = "Hello, World One" Message = "Hello, World Two" Message = "Hello, World Three" End Messages End Project

Se puede cargar el modelo desde el programa de consola, indicando un archivo .txt o .xml:

..\..\..\bin\AjGenesis.Console Model.txt ModuleVb.tpl HelloWorld.vb

..\..\..\bin\AjGenesis.Console Model.xml ModuleVb.tpl HelloWorld.vb

Lo mismo podemos hacer desde tareas de NAnt: cargar un modelo, en un archivo .XML o .txt.

Hay más ejemplos en:

Hello world Examples

Un modelo más realista, donde describimos entidades en un XML:

<?xml version="1.0" encoding="utf-8" ?> <!-- An Entity with Properties --> <Entities> <Entity Name="Customer"> <Description>A Customer</Description> <Properties> <Property Name="Id" Type="Id"/> <Property Name="Name" Type="Text"/> <Property Name="Address" Type="Text"/> </Properties> </Entity> <Entity Name="Supplier"> <Description>A Supplier</Description> <Properties> <Property Name="Id" Type="Id"/> <Property Name="Name" Type="Text"/> <Property Name="Address" Type="Text"/> </Properties> </Entity> </Entities>

ahora puede ser expresado en texto (no es el mismo modelo de arriba, pero similar):

Entities Entity Customer Description = "Customer Entity" Properties Property Id Type="Id" Property Name Type="Text" Property Address Type="Text" End Properties End Entity Entity Supplier Description = "Supplier Entity" Properties Property Id Type="Id" Property Name Type="Text" Property Address Type="Text" End Properties End Entity End Entities

Una vez que el modelo es cargado en memoria, AjGenesis lo procesa como siempre, sin importar su forma original, texto o XML.

Más sobre AjGenesis:

Posts about AjGenesis (English)
Posts sobre AjGenesis (Spanish)

Apenas relacionado, pero interesante:

Problems for Textual Model Notations

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com

Published Mon, Sep 29 2008 5:33 by lopez

Comments

# Otro modelo para AjGenesis@ Friday, October 03, 2008 6:07 AM

En este post voy a describir una idea, no hay implementacion todavía. AjGenesis , mi proyecto de código

Angel "Java" Lopez

# re: Modelo textual para generación de código con AjGenesis@ Friday, October 03, 2008 11:44 AM

Creo que lo sugerí por otra vía (twitter, maybe), pero ¿por qué no usar YAML como sintáxis?

Martin Salias

# Otro modelo para AjGenesis | Buanzolandia@ Friday, October 03, 2008 7:01 PM

Pingback from  Otro modelo para AjGenesis | Buanzolandia

Otro modelo para AjGenesis | Buanzolandia

# Otro modelo para AjGenesis | Buanzolandia@ Sunday, October 05, 2008 3:43 AM

Pingback from  Otro modelo para AjGenesis | Buanzolandia

Otro modelo para AjGenesis | Buanzolandia

# Sabattical Week Results &laquo; Angel &#8220;Java&#8221; Lopez on Blog@ Wednesday, October 29, 2008 4:48 AM

Pingback from  Sabattical Week Results « Angel “Java” Lopez on Blog

Sabattical Week Results « Angel “Java” Lopez on Blog

Leave a Comment

(required) 
(required) 
(optional)
(required)