Class: ExecJS::Xtrn::Engine
- Inherits:
-
Object
- Object
- ExecJS::Xtrn::Engine
- Defined in:
- lib/execjs/xtrn/engine.rb
Constant Summary collapse
- Error =
ExecJS::Xtrn::Error
- Run =
Abstract class
nil
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.compile(code = '') ⇒ Object
37 38 39 |
# File 'lib/execjs/xtrn/engine.rb', line 37 def self.compile(code='') new.tap{|ctx| ctx.exec code} end |
.eval(code) ⇒ Object
33 34 35 |
# File 'lib/execjs/xtrn/engine.rb', line 33 def self.eval(code) new.eval code end |
.exec(code) ⇒ Object
29 30 31 |
# File 'lib/execjs/xtrn/engine.rb', line 29 def self.exec(code) new.exec code end |
.stats ⇒ Object
41 42 43 |
# File 'lib/execjs/xtrn/engine.rb', line 41 def self.stats (@stats||{}).dup end |
Instance Method Details
#call(fn, *args) ⇒ Object
25 26 27 |
# File 'lib/execjs/xtrn/engine.rb', line 25 def call(fn, *args) eval "(#{fn}).apply(this, #{JSON.dump args})" end |
#eval(code) ⇒ Object
20 21 22 23 |
# File 'lib/execjs/xtrn/engine.rb', line 20 def eval(code) return if (code=code.to_s.strip).length==0 exec "return eval(#{JSON.generate([code])[1...-1]})" end |
#exec(code) ⇒ Object
12 13 14 15 16 17 18 |
# File 'lib/execjs/xtrn/engine.rb', line 12 def exec(code) return if (code=code.to_s.strip).length==0 result=child.say code result={'err'=>'Invalid JS result'} unless Hash===result raise Error, result['err'] if result['err'] result['ok'] end |
#stats ⇒ Object
45 46 47 |
# File 'lib/execjs/xtrn/engine.rb', line 45 def stats (@stats||{}).dup end |