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
Michael N. [email protected] wrote:
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 :
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 ???
Michael N. [email protected] wrote:
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
Am Sonntag, 14. Januar 2007 09:05 schrieb Une Bévue:
document.getElementById(‘STDOUT’)[‘inneHTML’] += 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
into “document” in Javascript.
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.
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
On Jan 14, 2007, at 4:59 AM, Michael N. wrote:
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!
Am Sonntag, 14. Januar 2007 02:22 schrieb Daniel F.:
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.
Uploaded a temporary tarball here:
http://ntecs.de/hg-projects/rubyjs.tar.gz
You can also see a sample of the produced code here:
http://ntecs.de/hg-projects/rubyjs/sample/demo.js
or try the demo:
Michael N. [email protected] wrote:
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 !
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
On Jan 13, 2007, at 5:22 PM, Daniel F. wrote:
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 Z.
– Lead Rails Evangelist
– [email protected]
– Engine Y., Serious Rails Hosting
– (866) 518-YARD (9273)
Michael N. wrote:
def puts(str)
backticks:
def puts(str)
document.getElemementById('STDOUT')['innerHTML'] += str + "\n"
end
Sorry! Actually it should be:
def puts(str)
document.getElemementById('STDOUT')['innerHTML'] += #<str> + "\n"
end
Notice the #, which correctly converts variable names.
Regards,
Michael