Arrays in JS vs arrays in Ruby
Reported by Jose | May 27th, 2009 @ 01:15 AM
I've been using Johnson's gem and have discovered some (sort of) bugs, but still have no time to check what the precise problem is.
There seems to be a compatibility problem between arrays from the Ruby land in JS, as their behaviour is different:
require 'rubygems'
require 'johnson'
Js = Johnson::Runtime.new
Js['alert'] = lambda { |x| puts x }
# Let's test JS arrays
Js.evaluate('array = [1,2,3,4]')
Js.evaluate('for (i in array) { alert(i) }') # 0 1 2 3
Js.evaluate('for (i in array) { alert(array[i]) }') # 1 2 3 4
# Let's test Ruby arrays acting as JS arrays
Js['array'] = [1,2,3,4]
Js.evaluate('for (i in array) { alert(i) }') # 2 3 4 5 (should be 0 1 2 3)
Js.evaluate('for (i in array) { alert(array[i]) }') # 2 3 4 nil (should be 1 2 3 4)
Also, if I add a function to Array.prototype, it is not available in arrays from the Ruby land, so there are incompatibilities between JS & Ruby lands. Similarly, hashes show different behaviours in each land.
Comments and changes to this ticket
-
John Barnette June 23rd, 2009 @ 07:46 PM
- State changed from new to resolved
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป