1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
require "execjs/encoding"
module ExecJS
# Abstract base class for runtimes
class Runtime
class Context
include Encoding
def initialize(runtime, source = "")
end
def exec(source, options = {})
raise NotImplementedError
end
def eval(source, options = {})
raise NotImplementedError
end
def call(properties, *args)
raise NotImplementedError
end
end
def name
raise NotImplementedError
end
def context_class
self.class::Context
end
def exec(source)
context = context_class.new(self)
context.exec(source)
end
def eval(source)
context = context_class.new(self)
context.eval(source)
end
def compile(source)
context_class.new(self, source)
end
def deprecated?
false
end
def available?
raise NotImplementedError
end
end
end
|