GetColumn() public method

public GetColumn ( string path, Project project ) : string
path string
project Project
return string
コード例 #1
0
ファイル: ContextTest.cs プロジェクト: alfar/WordBuilder
        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));
        }
コード例 #2
0
ファイル: Context.cs プロジェクト: yodaman1997/WordBuilder
        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");
        }
コード例 #3
0
ファイル: Context.cs プロジェクト: alfar/WordBuilder
        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";
        }