Class: ExecJS::Xtrn::Engine
- Inherits:
-
Object
- Object
- ExecJS::Xtrn::Engine
- Defined in:
- lib/execjs/xtrn/engine.rb
Constant Summary collapse
Class Method Summary collapse
- .compile(code = '') ⇒ Object
- .eval(code) ⇒ Object
- .exec(code) ⇒ Object
- .load(code) ⇒ Object
- .stats ⇒ Object
Instance Method Summary collapse
- #call(fn, *args) ⇒ Object
- #eval(code) ⇒ Object
- #exec(code) ⇒ Object
- #load(code) ⇒ Object
- #stats ⇒ Object
Class Method Details
.compile(code = '') ⇒ Object
44 45 46 |
# File 'lib/execjs/xtrn/engine.rb', line 44 def self.compile(code='') new.tap{|ctx| ctx.exec code} end |
.eval(code) ⇒ Object
40 41 42 |
# File 'lib/execjs/xtrn/engine.rb', line 40 def self.eval(code) new.eval code end |
.exec(code) ⇒ Object
36 37 38 |
# File 'lib/execjs/xtrn/engine.rb', line 36 def self.exec(code) new.exec code end |
.load(code) ⇒ Object
48 49 50 |
# File 'lib/execjs/xtrn/engine.rb', line 48 def self.load code new.tap{|ctx| ctx.load code} end |
.stats ⇒ Object
52 53 54 |
# File 'lib/execjs/xtrn/engine.rb', line 52 def self.stats (@stats||{}).dup end |
Instance Method Details
#call(fn, *args) ⇒ Object
32 33 34 |
# File 'lib/execjs/xtrn/engine.rb', line 32 def call(fn, *args) eval "(#{fn}).apply(this, #{JSON.dump args})" end |
#eval(code) ⇒ Object
27 28 29 30 |
# File 'lib/execjs/xtrn/engine.rb', line 27 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=say code result={'err'=>'Invalid JS result'} unless Hash===result raise Error, result['err'] if result['err'] result['ok'] end |
#load(code) ⇒ Object
23 24 25 |
# File 'lib/execjs/xtrn/engine.rb', line 23 def load code exec PathX.find{|re| re.match code} ? File.read(code) : code end |
#stats ⇒ Object
56 57 58 |
# File 'lib/execjs/xtrn/engine.rb', line 56 def stats (@stats||{}).dup end |