rgarver (owner)

Revisions

gist: 42953 Download_button fork
public
Public Clone URL: git://gist.github.com/42953.git
Embed All Files: show embed
demo.red #
1
2
3
4
5
require 'json.red'
 
json = '{a:"a string"}'
o = Object.from_json(json)
o.a # => "a string"
json.red #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Module
  def define_method(sym, &block)
    `this.prototype['m$'+sym.__value__]=block.__block__.__unbound__`
    `Red.updateChildren(this)`
    `Red.updateIncluders(this)`
    return `block`
  end
end
 
class Object
  def self.from_json(text)
    ret = Object.new
    meths = []
    `var v = eval("("+#{text}.__value__+")")`
    `for(var member in v){#{meths}.push(new Array($q(member), $q(v
[member])))}`
    meths.each do |meth|
      ret.class.send(:define_method, meth[0]) do
        meth[1]
      end
    end
    return ret
  end
end