mikamai / meteor-opal

Meteor support for Opal, the Ruby to Javascript Compiler

Home Page:http://opalrb.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

meteor-opal

Meteor support for Opal, the Ruby to Javascript Compiler

DISCLAIMER

this is alpha quality code, it's not tested and not ready for production.

What's Opal?

Opal is a ruby to javascript compiler, an implementation of the ruby corelib and stdlib, and associated gems.

Installation

meteor add mikamai:opal

Opal is supported on both the client and the server.
Files ending with .rb or .js.rb are automatically compiled to JavaScript.

Javascript interoperability

See the compiled ruby section on Opal website.
Opal uses it's own global namespace, therefore classes and functions created using Opal, are immediatley available across every other module and/or package in the application, provided you use Opal or the Javascript equivalent Opal.<item>.
For example the class User defined above will be accessible as User in Opal and as Opal.User in Javascript.
All functions are compiled with a $ sign in front of the name, so method new of class User becomes Opal.User.$new and function b Opal.Object.$b (functions resides in the Object namespace).

Namespacing and Opal

All Opal classes/functions will be globally available to all other modules through the Opal's own private namespace.

Usage

class User
  attr_accessor :name

  def initialize(name)
    @name = name
  end

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

def a
    123
end

$b = 321 # global variable

user = User.new('Bob')
puts user # #<User:???>
puts user.admin? # false
puts "Hello from #{user.name}!" # Hello from Bob!

puts a # 123
puts $b # 321
// somewhere else in Javascript

var user = Opal.User.$new('Bob');
console.log(user); //  { _id: ??, name: 'Bob' }
console.log(user['$admin?']()); // false 
                                // functions names cannot end in ? 
                                // so we access them as properties
console.log('Hello from ' + user.$name() + '!'); // Hello from Bob!

// function call
console.log(Opal.Object.$a()); // 123

// global variable
console.log(Opal.gvars.b); // 321

About

Meteor support for Opal, the Ruby to Javascript Compiler

http://opalrb.org

License:MIT License


Languages

Language:JavaScript 95.7%Language:Ruby 4.3%