protected string GetParametersString([NotNull] RootModel model, [NotNull] ActionExecutionContext context) { Assert.ArgumentNotNull(model, "model"); Assert.ArgumentNotNull(context, "context"); ParametersStringBuilder.Clear(); foreach (var parameter in Parameters) { ParametersStringBuilder.Append(" "); ParametersStringBuilder.Append(parameter.GetParameterValue(model, context)); } return(ParametersStringBuilder.ToString()); }
public void SendToAllWindows(IEnumerable <ActionBase> actionsToExecute, ActionExecutionContext actionExecutionContext) { foreach (var rootModel in _allModels) { foreach (var action in actionsToExecute) { try { action.Execute(rootModel, actionExecutionContext); } catch (Exception) { } } rootModel.PushCommandToConveyor(FlushOutputQueueCommand.Instance); } }
public abstract string GetParameterValue([NotNull] RootModel rootModel, [NotNull] ActionExecutionContext context);
/// <summary> /// Executes this action. /// </summary> /// <param name="model">The model.</param> /// <param name="context">The context.</param> public abstract void Execute([NotNull] RootModel model, [NotNull] ActionExecutionContext context);
protected virtual string PostProcessString([NotNull] string valueToProcess, [NotNull] RootModel model, [NotNull] ActionExecutionContext context) { Assert.ArgumentNotNull(valueToProcess, "valueToProcess"); Assert.ArgumentNotNull(model, "model"); Assert.ArgumentNotNull(context, "context"); return(ReplaceVariables(ReplaceParameters(valueToProcess, context), model)); }
protected string GetParameter(int num, ActionExecutionContext context) { return(context.Parameters.ContainsKey(num) ? context.Parameters[num] : string.Empty); }
protected virtual string ReplaceParameters(string input, ActionExecutionContext context) { StringBuilder sb = new StringBuilder(); int nest = 0; int lastPos = 0; int i = 0; while (i < input.Length - 1) { if (input[i] == '%') { if (i < input.Length - 2 && input[i + 1] == '%' && char.IsDigit(input[i + 2])) { if (i - lastPos > 0) { sb.Append(input, lastPos, i - lastPos); } if (nest > 0) { sb.Append(GetParameter((int)Char.GetNumericValue(input[i + 2]), context)); } else { sb.Append(input, i, 3); } lastPos = i + 3; i += 2; } else if (nest == 0 && char.IsDigit(input[i + 1])) { if (i - lastPos > 0) { sb.Append(input, lastPos, i - lastPos); } sb.Append(GetParameter((int)Char.GetNumericValue(input[i + 1]), context)); lastPos = i + 2; i++; } } else if (input[i] == '{') { nest++; } else if (input[i] == '}') { nest--; } i++; } if (lastPos < input.Length) { sb.Append(input, lastPos, input.Length - lastPos); } return(sb.ToString()); }
public void SendToWindow(string name, IEnumerable <ActionBase> actionsToExecute, ActionExecutionContext actionExecutionContext) { var rootModel = _allModels.FirstOrDefault(w => w._name == name); if (rootModel == null) { return; } foreach (var action in actionsToExecute) { try { action.Execute(rootModel, actionExecutionContext); } catch (Exception) { } } rootModel.PushCommandToConveyor(FlushOutputQueueCommand.Instance); }
/// <summary> /// Initializes a new instance of the <see cref="TextTrigger"/> class. /// </summary> public TextTrigger() { MatchingPattern = string.Empty; _context = new ActionExecutionContext(); IsRegExp = false; }