[ANN] RubyJS - Convert Ruby to Javascript

M

Michael Neumann

Hi all,

Long time since I announced my last project....

With RubyJS you can transform a subset of Ruby into Javascript code.

What works?

* Classes, modules, inheritance
* Instance methods, class methods
* Exceptions (rescue/ensure)
* Meta-programming stuff like 'attr_reader'
(any meta-programming stuff works that does not appear inside methods)
* Iterators, yield
* "require" (with platform-specific extension ala Google Webtoolkit)
* Inline Javascript code
* Some kind of compile-time method lookup ;-)
* Numbers, String, Array, Hash, Proc (a lot of functionallity is missing!)
* Testing with Rhino-JS
* A lot more :)

There is a lots of room for optimizations and improvement :)

Best take a look at sample/demo.rb or test/*.rb.

DOWNLOAD
=========

It's available from here:

http://ntecs.de/hg-projects/rubyjs/

Best use Mercurial (www.selenic.com/mercurial) to check it out:

hg clone static-http://ntecs.de/hg-projects/rubyjs/

Requires ParseTree 1.6.3 as rubygem.

Have fun with it!

Regards,

Michael
 
D

Daniel Finnie

Is there a way to download it without installing Mercurial? I looked
around the website given but didn't see anything. I am interested in
seeing the code it produces.

Thanks,
Dan
 
E

Ezra Zygmuntowicz

Is there a way to download it without installing Mercurial? I
looked around the website given but didn't see anything. I am
interested in seeing the code it produces.

Thanks,
Dan

Yeah could you please post a tarball somewhere? I don't have
mercurial but I am interested in playing with this project.

Thanks

-- Ezra Zygmuntowicz
-- Lead Rails Evangelist
-- (e-mail address removed)
-- Engine Yard, Serious Rails Hosting
-- (866) 518-YARD (9273)
 
U

Une Bévue

Michael Neumann said:
With RubyJS you can transform a subset of Ruby into Javascript code.

yes but how to interact with the browser window, for example, say i have
a :

<pre id="STDOUT"></pre> in the html document and i want to redefine ruby
puts like this :

def puts(str)
document.getElementById('STDOUT')['inneHTML'] += str + "\n"
end

if i do that into your HelloWorld class i get errors :

method_generator.rb:1040:in `method_missing': Not implemented
(RuntimeError)
[...]

is their a way to let RubyJS knows that "document.getElementById..." is
allready JS ???
 
M

Michael Neumann

Am Sonntag, 14. Januar 2007 09:05 schrieb Une B=E9vue:
Michael Neumann said:
With RubyJS you can transform a subset of Ruby into Javascript code.

yes but how to interact with the browser window, for example, say i have
a :

<pre id=3D"STDOUT"></pre> in the html document and i want to redefine ruby
puts like this :

def puts(str)
document.getElementById('STDOUT')['inneHTML'] +=3D str + "\n"
end

if i do that into your HelloWorld class i get errors :

Well, does it work in Ruby? NO! So it doesn't work in RubyJS as well :)
It's a bit more advanced than converting "document" from Ruby plainly=20
into "document" in Javascript.=20

If you want to insert Javascript code directly into your Ruby code, use=20
backticks:

def puts(str)
`document.getElemementById('STDOUT')['innerHTML'] +=3D str + "\n"`
end

In the next step, I've planned to port Google's Webtoolkit (or Python Pyjam=
as)=20
to RubyJS.
method_generator.rb:1040:in `method_missing': Not implemented
(RuntimeError)
[...]

is their a way to let RubyJS knows that "document.getElementById..." is
allready JS ???

See above :)

Regards,

Michael
 
U

Une Bévue

Michael Neumann said:
If you want to insert Javascript code directly into your Ruby code, use
backticks:

def puts(str)
`document.getElemementById('STDOUT')['innerHTML'] += str + "\n"`
end

In the next step, I've planned to port Google's Webtoolkit (or Python Pyjamas)
to RubyJS.

fine thanks a lot, same syntax as using command line shell tools...

great job !
 
M

Mark Volkmann

In the next step, I've planned to port Google's Webtoolkit (or
Python Pyjamas)
to RubyJS.

Very cool! I'm played with Google Web Toolkit and really like it ...
except for the part where you have to code in Java to use it. A Ruby
equivalent would be wonderful!
 
U

Une Bévue

Michael Neumann said:
If you want to insert Javascript code directly into your Ruby code, use
backticks:

def puts(str)
`document.getElemementById('STDOUT')['innerHTML'] += str + "\n"`
end

I got the same error with that writing :
.../bin/../lib/rubyjs/method_generator.rb:1040:in `method_missing': Not
implemented (RuntimeError)
[...]
from ../bin/rubyjs_gen:82
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,733
Messages
2,569,439
Members
44,829
Latest member
PIXThurman

Latest Threads

Top