/// <summary> /// Alias for RenderScriptAsync /// </summary> public static async Task <string> EvaluateScriptAsync(this ScriptContext context, string script, Dictionary <string, object> args = null) { var pageResult = new PageResult(context.SharpScriptPage(script)); args.Each((x, y) => pageResult.Args[x] = y); return(await pageResult.RenderScriptAsync()); }
/// <summary> /// Evaluate #Script and return value /// </summary> public static object Evaluate(this ScriptContext context, string script, Dictionary <string, object> args = null) { var pageResult = new PageResult(context.SharpScriptPage(script)); args.Each((x, y) => pageResult.Args[x] = y); if (!pageResult.EvaluateResult(out var returnValue)) { throw new NotSupportedException(ScriptContextUtils.ErrorNoReturn); } return(ScriptLanguage.UnwrapValue(returnValue)); }
/// <summary> /// Evaluate #Script and convert returned value to T asynchronously /// </summary> public static async Task <object> EvaluateAsync(this ScriptContext context, string script, Dictionary <string, object> args = null) { var pageResult = new PageResult(context.SharpScriptPage(script)); args.Each((x, y) => pageResult.Args[x] = y); var ret = await pageResult.EvaluateResultAsync(); if (!ret.Item1) { throw new NotSupportedException(ScriptContextUtils.ErrorNoReturn); } return(ScriptLanguage.UnwrapValue(ret.Item2)); }
/// <summary> /// Alias for RenderScript /// </summary> public static string EvaluateScript(this ScriptContext context, string script, Dictionary <string, object> args, out ScriptException error) { var pageResult = new PageResult(context.SharpScriptPage(script)); args.Each((x, y) => pageResult.Args[x] = y); try { var output = pageResult.Result; error = pageResult.LastFilterError != null ? new ScriptException(pageResult) : null; return(output); } catch (Exception e) { pageResult.LastFilterError = e; error = new ScriptException(pageResult); return(null); } }