module ExecJS

def self.runtime

def self.runtime
  @runtime ||= Runtimes.autodetect
end

def self.runtimes

def self.runtimes
  Runtimes.runtimes
end

def compile(source, options = {})

def compile(source, options = {})
  runtime.compile(source, options)
end

def cygwin?

def cygwin?
  @cygwin ||= RbConfig::CONFIG["host_os"] =~ /cygwin/
end

def eval(source, options = {})

def eval(source, options = {})
  runtime.eval(source, options)
end

def exec(source, options = {})

def exec(source, options = {})
  runtime.exec(source, options)
end

def root

def root
  @root ||= File.expand_path("..", __FILE__)
end

def runtime=(runtime)

def runtime=(runtime)
  raise RuntimeUnavailable, "#{runtime.name} is unavailable on this system" unless runtime.available?
  @runtime = runtime
end

def windows?

def windows?
  @windows ||= RbConfig::CONFIG["host_os"] =~ /mswin|mingw/
end