public void TestGetColumn() { Project p = new Project(Whee.WordBuilder.Helpers.Random.Instance); Context c = new Context(); c.Tokens.Add("a"); c.Tokens.Add("b"); c.Tokens.Add("c"); Assert.AreEqual("abc", c.GetColumn("", p)); c.Mark("m1", "m1"); Assert.AreEqual("m1", c.GetColumn("!m1", p)); Context branch = c.Branch("b1"); branch.Tokens.Add("d"); Assert.AreEqual("abcd", c.GetColumn("b1", p)); branch.Mark("m2", "m2"); Assert.AreEqual("m2", c.GetColumn("b1.!m2", p)); Context branch2 = branch.Branch("b2"); branch2.Tokens.Add("e"); Assert.AreEqual("abcde", c.GetColumn("b1.b2", p)); }
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"); }
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"; }