javascript - Parse js arrays in ruby -
i've js file holds array objects , data assigns
var a_1_val = new array(7); var b_1_txt = new array(7); a_1_val[0] = '111'; b_1_txt[0] = 'utf8_content'; a_1_val[1] = '222'; b_1_txt[1] = 'bar';
etc..
need these arrays in ruby.
found http://github.com/jbarnette/johnson, can't correctly return array object
another way eval js in ruby, similar to
get name of arrays
cut arrays initialize js
ruby eval
a_1_val[0] = '111'
b_1_txt[0] = 'utf8_content'
both ways sucks. maybe can suggests ideas
thanks
you can use json string marshal data between javascript , ruby:
#!/usr/bin/env ruby require 'johnson' require 'open-uri' require 'yajl' # grab source javascript json implementation json_js = open('http://www.json.org/json2.js').read # strip silly alert @ top of file json_js.gsub!(/^(alert.*)$/, '/* \1 */') # javascript wanted some_js = <<-eof var a_1_val = new array(7); var b_1_txt = new array(7); a_1_val[0] = '111'; b_1_txt[0] = 'Ähtäri'; a_1_val[1] = 'barsebäck slott'; b_1_txt[1] = '新宿区'; eof result = johnson.evaluate(<<-eof) /* include json source code */ #{json_js} /* include source code wanted */ #{some_js} /* turn things wanted out string */ json.stringify([ a_1_val, b_1_txt ]) eof # result in ruby ruby_result = yajl::parser.parse(result) # puts ruby_result.inspect
which gives output:
[["111", "barseb\303\244ck slott", nil, nil, nil, nil, nil], ["\303\204ht\303\244ri", "\346\226\260\345\256\277\345\214\272", nil, nil, nil, nil, nil]]
Comments
Post a Comment