class ExecJS::Xtrn::Engine
Constants
- Error
- PathX
- Run
Public Class Methods
compile(code='')
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 44 def self.compile(code='') new.tap{|ctx| ctx.exec code} end
eval(code)
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 40 def self.eval(code) new.eval code end
exec(code)
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 36 def self.exec(code) new.exec code end
load(code)
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 48 def self.load code new.tap{|ctx| ctx.load code} end
new()
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 88 def initialize self.class.ancestors.reverse.map do |m| list=m.const_get 'Preload', false rescue nil list ? Array===list ? list : [list] : [] end .flatten.uniq.each{|code| load code} end
stats()
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 52 def self.stats (@stats||{}).dup end
Private Class Methods
bear()
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 68 def self.bear raise NotImplementedError, self unless self::Run ExecJS::Xtrn::Child.new self::Run end
child()
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 73 def self.child bear.tap {|c| c.stats self.class_stats, ExecJS::Xtrn::Engine.class_stats} end
class_stats(increment = 1)
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 62 def self.class_stats increment = 1 s = @stats ||= {c: 0} s[:c] += increment s end
Public Instance Methods
call(fn, *args)
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 32 def call(fn, *args) eval "(#{fn}).apply(this, #{JSON.dump args})" end
eval(code)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 23 def load code exec PathX.find{|re| re.match code} ? File.read(code) : code end
stats()
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 56 def stats (@stats||{}).dup end
Private Instance Methods
child()
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 77 def child return @child if @child c = self.class.child c.stats @stats = {} @child = c end
say(code)
click to toggle source
# File lib/execjs/xtrn/engine.rb, line 84 def say code child.say code end