protected void evaluatScriptArguments(ESObjectSpace objectSpace, NamespaceObject environment) { var argList = new List <Object>(); foreach (var argSpec in scriptArguments) { try { Object value; FileInfo scriptPath; if (argSpec.SpecifiesPathname) { if (objectSpace.pathForScript(argSpec.Value, out scriptPath)) { if (objectSpace.evaluate(scriptPath, environment, null, null, out value)) { argList.Add(value); } else { errors.Add("Syntax error in script used as argument, pathname = " + argSpec.Value); } } else { errors.Add("Script path (used as argument to base script) not found: " + argSpec.Value); } } else if (objectSpace.evaluate(new StringReader(argSpec.Value), environment, null, null, out value)) { argList.Add(value); } else { errors.Add("Syntax error in argument: " + argSpec.Value); } } catch (Exception ex) { errors.Add("Error in argument evaluation: " + ex.ToString()); } } scriptArgs = argList.ToArray(); }
protected virtual bool evaluate(NamespaceObject environment, Object selfValue, FileInfo file, out Object value) { objectSpace.evaluate( file, environment, selfValue, (errorDescription, span, code, severity) => { var error = new ESCompilationError(file, environment, errorDescription, span, code, severity); error.addTo(compilationErrors); }, out value); return(true); }