public void Execute(Context context) { if (context.IncrementRuleCount() > 500) { throw new ApplicationException(String.Format("Rule count exceeded 500 when running rule {0}", this.Name)); } Commands.Execute(context); }
public Context Branch(string name) { Context result = new Context (); result._RuleCount = this.RuleCount; result.Tokens.AddRange (this.Tokens); if (_Branches.ContainsKey (name)) { int num = 1; while (_Branches.ContainsKey (string.Format ("{0}{1}", name, num))) { num += 1; } name = string.Format ("{0}{1}", name, num); } _Branches.Add (name, result); return result; }
public void Add(Context value) { _items.Add(value); }
public Context GetWord(string startRule) { Context c = new Context(); try { Rule r = m_Rules.GetRuleByName (startRule); if (r != null) { r.Execute (c); } } catch (Exception ex) { Warnings.Add (ex.Message); } return c; }
public abstract void Execute(Context context);
private string ToStringRenderer(Context ctx) { return ctx.ToString(); }
private string DescriptionRenderer(Context ctx) { return ctx.Description(""); }
public string GetColumn(string path, Project project) { if (string.IsNullOrEmpty (path)) { return ToString (); } string[] parts = path.Split (new char[] { '.' }, 2); if (parts[0].StartsWith ("!")) { string mark = parts[0].Substring (1); if (Marks.ContainsKey (mark)) { return Marks[mark]; } } else if (parts[0].StartsWith ("*") && project != null) { Rule r = project.Rules.GetRuleByName (parts[0].Substring (1)); Context c = new Context (); c._Tokens = new List<string> (this.Tokens); r.Execute (c); if (parts.Length > 1) { return c.GetColumn (parts[1], project); } else { return c.ToString (); } } else if (Branches.ContainsKey (parts[0])) { if (parts.Length > 1) { return Branches[parts[0]].GetColumn (parts[1], project); } else { return Branches[parts[0]].ToString (); } } return "N/A"; }