Пример #1
0
		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);
	    }
Пример #2
0
        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;
        }
Пример #3
0
 public void Add(Context value)
 {
     _items.Add(value);
 }
Пример #4
0
        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;
        }
Пример #5
0
		public abstract void Execute(Context context);
Пример #6
0
 private string ToStringRenderer(Context ctx)
 {
     return ctx.ToString();
 }
Пример #7
0
 private string DescriptionRenderer(Context ctx)
 {
     return ctx.Description("");
 }
Пример #8
0
        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";
        }