viernes, julio 28, 2006

ST2JS - Traductor de Smalltalk a JavaScript (Parte II)

¡Se va la segunda!

Ayer, después de publicar la primera parte de esta serie, logré "terminar" (¿se termina alguna ves de desarrollar el software?) una versión del paquete lo suficientemente completa y estable como para ejecutar un Test-Runner en un browser de internet, desde código JavaScript, completamente generado desde clases Smalltalk.

Para los más valientes publiqué, tanto en SqueakMap como en SqueakSource, un paquete Monticello que funciona tanto en la versión 3.8 como en la 3.9beta de Squeak. Al instalar el paquete se abrirán 2 Workspaces con algo de información sobre como probar el paquete.

Quizás lo más interesante de ver sea el St2jS - TestRunner:


El St2jS - TestRunner es, como su nombre indica, un TestRunner de un framework de UnitTesting. Lo particular de este TestRunner es que está completamente escrito en Smallltalk, y funciona completamente del lado del browser de internet. Además de los tests (que se ven en verde), se incluyen un conjunto de clases con objetos "de base" (Object, Boolean, Point, WriteStream, etc).

La misma herramienta nos permite ver los segmentos de código generado con las opciones: browse all (muestra todo el código JS generado, en un sólo archivo), browse library (muestra el código generado correspondiente a las implementaciones de #jsLibrarySource), browse class: (muestra el código de una clase completa) y browse (muestra el fuente del método test correspondiente).

También podemos re-ejecutar los tests del lado del browser de internet con las opciones run all (ejecuta todos los tests del lado del browser de internet) y run (ejecuta el test correspondiente en el browser de internet).

Y, también, podemos (desde el browser de internet) disparar funcionalidades del lado del Squeak con las opciones squeak: run (ejecuta el método test en Squeak) y squeak: browse (abre el browser de clases, en Squeak, apuntando al método test).

Otra funcionalidad ya implementada, y necesaria para cualquier programador que se digne de ser un Smalltalker, es el Inspector:


Para obtener un inspector, hay que descomentar la última sentencia del método S2SBaseTestCase>>testInspect y recargar el browser de internet. El mismo inspector nos permite abrir otros inspectores para las partes del objeto inspeccionado. En este caso, si presionamos el botón [inspect] que está a la derecha del punto, obtenemos:



¡Continuará!


UPDATE: Para los que no quieran quieran perder tiempo instalando nada, les dejo un HTML, con todo el código JS incluido, que debiera funcionar en cualquier navegador. Viendo el fuente del documento se puede ver el código generado. St2jS - Test Runner.html

UPDATE 2: Una versión más mueva del HTML independiente: St2jS - Test Runner.html.