Class: BabaScript::Baba
- Inherits:
-
Object
- Object
- BabaScript::Baba
- Defined in:
- lib/babascript/baba.rb
Class Method Summary collapse
- .exec(name, *args) ⇒ Object
- .linda ⇒ Object
- .method_missing(name, *args) ⇒ Object
- .run(code = nil, &block) ⇒ Object
Class Method Details
.exec(name, *args) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/babascript/baba.rb', line 37 def self.exec(name, *args) cid = __create_callback_id tuple = [:babascript, :eval, name, args, {:callback => cid}] ts = linda.tuplespace[BabaScript.LINDA_SPACE] ts.write tuple result = ts.take [:babascript, :return, cid] return result[3] end |
.linda ⇒ Object
8 9 10 |
# File 'lib/babascript/baba.rb', line 8 def self.linda @@linda ||= EM::RocketIO::Linda::Client.new BabaScript.LINDA_BASE end |
.method_missing(name, *args) ⇒ Object
33 34 35 |
# File 'lib/babascript/baba.rb', line 33 def self.method_missing(name, *args) self.exec name, *args end |
.run(code = nil, &block) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/babascript/baba.rb', line 12 def self.run(code=nil, &block) raise ArgumentError "block or code require" unless block_given? or code.kind_of? String already_eventmachine_running = EM::reactor_running? EM::run do linda.io.once :connect do EM::defer do if block_given? ::BabaScript::Baba.instance_eval &block else ::BabaScript::Baba.instance_eval code end unless already_eventmachine_running EM::add_timer 1 do EM::stop end end end end end end |