/// <summary> /// Executes the script in its own output branch in order to keep the generated content temporarily separate /// from the existing output stream. /// </summary> /// <param name="state">The current execution state</param> /// <returns>the rendered script</returns> public string ExecuteIsolated(ExecutionState state) { state.BranchOutput(); string output; try { Execute(state); } finally { output = state.ReadAndRemoveBranch(); } return(output); }
public string Execute(params KeyValuePair <string, object>[] variables) { ExecutionState state = new ExecutionState(); foreach (KeyValuePair <string, object> kvp in variables) { state.Variables.Add(kvp.Key, kvp.Value); } Execute(state); try { return(state.ReadAndRemoveBranch()); } catch (InstructionExecutionException ex) { return(GetErrorHTML(ex.Message, ex.Token, state)); } catch (InstructionExecutionParseErrorException ex) { return(ex.ToString()); } }
public string RenderIsolated(ExecutionState state) { state.BranchOutput(); Render(state); return state.ReadAndRemoveBranch(); }
public object Evaluate(ExecutionState state, Token contextToken) { state.BranchOutput(); try { Render(state); } catch { state.CancelBranch(); throw; } return state.ReadAndRemoveBranch(); }