Web BizarroWeb Bizarro

Suscríbete a nuestro Newsletter

X

Únete a nuestra lista de correos para recibir semanalmente actualizaciones de nuestro contenido.

Compilador de Ruby a Javascript

Compilador de Ruby a Javascript 10.APR.14

Gianfranco Lemmo
Fundador WebBizarro

Hoy en día se ha hecho muy común este tipo de compiladores a lenguajes que son más rápidos que otros, hoy en día está muy en boga: las herramientas que convierten código en los más variopintos lenguajes en código Javascript. Y es que para muchos Javascript es solamente un mal necesario y prefieren trabajarse sus propias herramientas que conviertan código en Javascript a ensuciarse las manos con ese lenguaje. Hoy les traemos otra herramienta de esta tipo: Opal, un compilador de Ruby a Javascript, es decir, que lleva Ruby al navegador.

Opal está formado por un compilador, unas librerías core y una implementación runtime de tamaño poco más que diminuto. Es muy sencillo de instalar a través de RubyGems en tus proyectos de Ruby, está alojado para descarga en GitHub y en este link pueden conseguir la documentación.

Una pequeña muestra de como funciona este compilador, les coloco el código en Ruby a compilar:

class User
  attr_accessor :name

  def initialize(name)
    @name = name
  end

  def admin?
    @name == 'Admin'
  end
end

user = User.new('Bob')
puts user
puts user.admin?

Luego el resultado en Javascript sería el siguiente:

(function($opal) {
  var self = $opal.top, $scope = $opal, nil = $opal.nil, $breaker = $opal.breaker, $slice = $opal.slice, $klass = $opal.klass, user = nil;

  $opal.add_stubs(['$attr_accessor', '$==', '$new', '$puts', '$admin?']);
  (function($base, $super) {
    function $User(){};
    var self = $User = $klass($base, $super, 'User', $User);

    var def = self._proto, $scope = self._scope;

    def.name = nil;
    self.$attr_accessor("name");

    def.$initialize = function(name) {
      var self = this;

      return self.name = name;
    };

    return (def['$admin?'] = function() {
      var self = this;

      return self.name['$==']("Admin");
    }, nil);
  })(self, null);
  user = $scope.User.$new("Bob");
  self.$puts(user);
  return self.$puts(user['$admin?']());
})(Opal);

Para todos aquellos interesados pueden seguir el tutorial de Sitepoint, ideal para todos aquellos que quieren darle un chance a este compilador.