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- PathX =
[/^[.]{1,2}\/|^\/[^\s\/*]/]
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
46 47 48 |
# File 'lib/execjs/xtrn/engine.rb', line 46 def self.compile(code='') new.tap{|ctx| ctx.exec code} end |
.eval(code) ⇒ Object
42 43 44 |
# File 'lib/execjs/xtrn/engine.rb', line 42 def self.eval(code) new.eval code end |
.exec(code) ⇒ Object
38 39 40 |
# File 'lib/execjs/xtrn/engine.rb', line 38 def self.exec(code) new.exec code end |
.load(code) ⇒ Object
50 51 52 |
# File 'lib/execjs/xtrn/engine.rb', line 50 def self.load code new.tap{|ctx| ctx.load code} end |
.stats ⇒ Object
54 55 56 |
# File 'lib/execjs/xtrn/engine.rb', line 54 def self.stats (@stats||{}).dup end |
Instance Method Details
#call(fn, *args) ⇒ Object
34 35 36 |
# File 'lib/execjs/xtrn/engine.rb', line 34 def call(fn, *args) eval "(#{fn}).apply(this, #{JSON.dump args})" end |
#eval(code) ⇒ Object
29 30 31 32 |
# File 'lib/execjs/xtrn/engine.rb', line 29 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 |
#load(code) ⇒ Object
25 26 27 |
# File 'lib/execjs/xtrn/engine.rb', line 25 def load code exec PathX.find{|re| re.match code} ? File.read(code) : code end |
#stats ⇒ Object
58 59 60 |
# File 'lib/execjs/xtrn/engine.rb', line 58 def stats (@stats||{}).dup end |