@Override
public String compile (String coffeeScriptSource) {
Context context = Context.enter();
try {
Scriptable compileScope = context.newObject(globalScope);
compileScope.setParentScope(globalScope);
compileScope.put("coffeeScriptSource", compileScope, coffeeScriptSource);
try {
return (String)context.evaluateString(compileScope, String.format("CoffeeScript.compile(coffeeScriptSource, %s);", options.toJavaScript()),
"JCoffeeScriptCompiler", 0, null);
} catch (JavaScriptException e) {
throw new CoffeeScriptCompileException(e);