RubySharp, implementando Ruby en C# (2)

Anterior Post 
Siguiente Post 


Sigo trabajando en mi implementación de Ruby en C#


https://github.com/ajlopez/RubySharp


Hoy quería mostrarles que tengo implementadas varias expresiones que se pueden evaluar:



También tengo comandos, que inicialmente estaban separados:



Pero ahora, ambos implementan la interfaz



El método Evaluate recibe un Context:



Tengo que revisar si el Context tiene o no referencias al objeto actual (self y demás).


Un ejemplo de código, el .Evaluate de la NameExpression:


public object Evaluate(Context context)
{
    var result = context.GetValue(this.name);

    if (result is IFunction)
        return ((IFunction)result).Apply(null, emptyvalues);

    return result;
}

Vean que tengo que considerar qué pasa si el nombre en solitario es la llamada a una función. En Ruby, una función puede llamarse simplemente indicando el nombre, sin necesidad de poner los paréntesis de llamada como en JavaScript.


Espero seguir completando expresiones y comandos, y como todo está con TDD, puedo refactorizar Context para manejar objectos y otros escenarios.


Nos leemos!


Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

This entry was posted in 1389, 15035, 16397, 17933, 5374. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>