public override Node Execute(IList <StageVariable> variables, Delegate NotifyUIMethod) { try { Debug.Debug.instance().execute(this, NotifyUIMethod, variables); //logger.Info("Inicio Nodo Sentencia"); var cultureInfo = new CultureInfo("en-US"); int indexEqual = this.Code.IndexOf("="); string sentence = this.Code.Substring(indexEqual + 1).Trim(); sentence = this.GetSentenceToEvaluate(variables, cultureInfo, sentence); string variableStr = this.Code.Substring(0, indexEqual).Trim(); StageVariable variable = this.GetVariable(variables, cultureInfo, variableStr); ExpressionResolver.Resolve(variable, sentence, new Random().NextDouble()); return(base.Execute(variables, NotifyUIMethod)); } catch (Exception exception) { //logger.Error("Error Nodo Sentencia: " + exception.Message); logger.Error(exception.Source + " - " + exception.Message + ": " + exception.StackTrace); throw new Exception("Nodo sentencia", exception); } }
public static string GetSentenceToEvaluate(IList <StageVariable> variables, CultureInfo cultureInfo, string sentence) { sentence = ExpressionResolver.ReplaceCommonVariablesInSentence(variables, cultureInfo, sentence); sentence = ExpressionResolver.ReplaceArraysVariablesInSentence(variables, cultureInfo, sentence); if (sentence.Contains("R")) { sentence = sentence.Replace("R", new Random().NextDouble().ToString("F6", cultureInfo)); } return(sentence); }
public override Node Execute(IList <StageVariable> variables, Delegate NotifyUIMethod) { try { Debug.Debug.instance().execute(this, NotifyUIMethod, variables); //logger.Info("Inicio Nodo Condicion"); var cultureInfo = new CultureInfo("en-US"); string sentence = ExpressionResolver.GetSentenceToEvaluate(variables, cultureInfo, this.Code); var result = ExpressionResolver.ResolveBoolen(sentence); return(result ? this.ChildNodeFalse.Execute(variables, NotifyUIMethod) : this.ChilNodeTrue.Execute(variables, NotifyUIMethod)); //logger.Info("Fin Nodo Condicion"); } catch (Exception exception) { //logger.Error("Error Nodo Condicon:" + exception.Message); throw new Exception("Nodo Condicion", exception); } }