require 'json/ext' require 'json/json2' module JSON class JSONError < StandardError; end class ParseError < JSONError; end def self.parse(source, opts = nil) `var json = JSON.parse(source); var to_opal = function(value) { switch (typeof value) { case 'string': return value; case 'number': return value; case 'boolean': return value ? Qtrue : Qfalse; case 'null': return nil; case 'object': if (!value) return nil; if (Object.prototype.toString.apply(value) === '[object Array]') { var arr = []; for (var i = 0, ii = value.length; i < ii; i++) { arr.push(to_opal(value[i])); } return arr; } else { var hash = VM.H(), v, assoc; for (var k in value) { if (Object.hasOwnProperty.call(value, k)) { v = to_opal(value[k]); assoc = k.$hash(); hash.$keys.push(k); hash.$assocs[assoc] = v; } } } return hash; } }; return to_opal(json);` end def self.generate(obj, opts = nil) end end