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
39 40 41 |
# File 'lib/execjs/xtrn/engine.rb', line 39 def self.compile(code='') new.tap{|ctx| ctx.exec code} end |
.eval(code) ⇒ Object
35 36 37 |
# File 'lib/execjs/xtrn/engine.rb', line 35 def self.eval(code) new.eval code end |
.exec(code) ⇒ Object
31 32 33 |
# File 'lib/execjs/xtrn/engine.rb', line 31 def self.exec(code) new.exec code end |
.stats ⇒ Object
43 44 45 |
# File 'lib/execjs/xtrn/engine.rb', line 43 def self.stats (@stats||{}).dup end |
Instance Method Details
#call(fn, *args) ⇒ Object
27 28 29 |
# File 'lib/execjs/xtrn/engine.rb', line 27 def call(fn, *args) eval "(#{fn}).apply(this, #{JSON.dump args})" end |
#eval(code) ⇒ Object
22 23 24 25 |
# File 'lib/execjs/xtrn/engine.rb', line 22 def eval(code) return if (code=code.to_s.strip).length==0 exec "return eval(#{JSON.generate([code])[1...-1]})" end |
#exec(code) ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/execjs/xtrn/engine.rb', line 14 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
47 48 49 |
# File 'lib/execjs/xtrn/engine.rb', line 47 def stats (@stats||{}).dup end |