Example #1
0
        protected void ToDOTDefineEdges(object tree, ITreeAdaptor adaptor, StringTemplate treeST)
        {
            if (tree == null)
            {
                return;
            }
            int n = adaptor.GetChildCount(tree);

            if (n == 0)
            {
                // must have already dumped as child from previous
                // invocation; do nothing
                return;
            }

            string parentName = "n" + GetNodeNumber(tree);

            // for each child, do a parent -> child edge using unique node names
            string parentText = adaptor.GetNodeText(tree);

            for (int i = 0; i < n; i++)
            {
                object         child     = adaptor.GetChild(tree, i);
                string         childText = adaptor.GetNodeText(child);
                string         childName = "n" + GetNodeNumber(child);
                StringTemplate edgeST    = _edgeST.GetInstanceOf();
                edgeST.SetAttribute("parent", parentName);
                edgeST.SetAttribute("child", childName);
                edgeST.SetAttribute("parentText", parentText);
                edgeST.SetAttribute("childText", childText);
                treeST.SetAttribute("edges", edgeST);
                ToDOTDefineEdges(child, adaptor, treeST);
            }
        }
Example #2
0
        protected StringTemplate GetNodeST(ITreeAdaptor adaptor, object t)
        {
            string         text       = adaptor.GetNodeText(t);
            StringTemplate nodeST     = _nodeST.GetInstanceOf();
            string         uniqueName = "n" + GetNodeNumber(t);

            nodeST.SetAttribute("name", uniqueName);
            if (text != null)
            {
                text = text.Replace("\"", "\\\\\"");
            }
            nodeST.SetAttribute("text", text);
            return(nodeST);
        }
Example #3
0
        public override StringTemplate GetInstanceOf(StringTemplate enclosingInstance, string name)
        {
            StringTemplate st = LookupTemplate(enclosingInstance, name);

            if (st != null)
            {
                StringTemplate instanceST = st.GetInstanceOf();
                if (st is ViewComponentStringTemplate)
                {
                    ((ViewComponentStringTemplate)st).ViewComponentName = null;
                    ((ViewComponentStringTemplate)instanceST).CreateViewComponent();
                }
                return(instanceST);
            }
            return(null);
        }
Example #4
0
        public StringTemplate ToDOT(object tree, ITreeAdaptor adaptor, StringTemplate _treeST, StringTemplate _edgeST)
        {
            StringTemplate treeST = _treeST.GetInstanceOf();

            nodeNumber = 0;
            ToDOTDefineNodes(tree, adaptor, treeST);
            nodeNumber = 0;
            ToDOTDefineEdges(tree, adaptor, treeST);

            /*
             * if ( adaptor.GetChildCount(tree)==0 ) {
             *      // single node, don't do edge.
             *      treeST.SetAttribute("nodes", adaptor.GetNodeText(tree));
             * }
             */
            return(treeST);
        }
 public virtual void testAnonTemplateArgs2()
 {
 StringTemplate e = new StringTemplate("$names:{n| .$n$.}:{ n | _$n$_}; separator=\", \"$");
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("names", "Tom");
 string expecting = "_.Ter._, _.Tom._";
 Assert.AreEqual(expecting, e.ToString());
 }
            public virtual void testNestedIF()
            {
            StringTemplate e = new StringTemplate("$if(title)$" + NL
                + "foo" + NL
                + "$else$" + NL
                + "$if(header)$" + NL
                + "bar" + NL
                + "$else$" + NL
                + "blort" + NL
                + "$endif$" + NL
                + "$endif$");
            e.SetAttribute("title", "sample");
            string expecting = "foo";
            Assert.AreEqual(expecting, e.ToString());

            e = e.GetInstanceOf();
            e.SetAttribute("header", "more");
            expecting = "bar";
            Assert.AreEqual(expecting, e.ToString());

            e = e.GetInstanceOf();
            expecting = "blort";
            Assert.AreEqual(expecting, e.ToString());
            }
        public virtual void testIFBoolean()
        {
            StringTemplateGroup group = new StringTemplateGroup("dummy", ".");
            StringTemplate t = new StringTemplate(group, "$if(b)$x$endif$ $if(!b)$y$endif$");
            t.SetAttribute("b", (object)true);
            Assert.AreEqual(t.ToString(), "x ");

            t = t.GetInstanceOf();
            t.SetAttribute("b", (object)false);
            Assert.AreEqual(t.ToString(), " y");
        }
 public void testStripOpOfNull()
 {
 StringTemplate e = new StringTemplate(
         "$strip(data)$"
     );
 e = e.GetInstanceOf();
 string expecting = ""; // nulls are skipped
 Assert.AreEqual(expecting, e.ToString());
 }
            public virtual void testStripOpOfListOfListsWithNulls()
            {
            StringTemplate e = new StringTemplate("$strip(data):{list | $strip(list)$}; separator=\",\"$");
            e = e.GetInstanceOf();

            IList dataOne = new ArrayList();
            dataOne.Add("Hi");
            dataOne.Add("mom");

            IList dataTwo = new ArrayList();
            dataTwo.Add("Hi");
            dataTwo.Add(null);
            dataTwo.Add("dad");
            dataTwo.Add(null);

            IList data = new ArrayList();
            data.Add(dataOne);
            data.Add(null);
            data.Add(dataTwo);

            e.SetAttribute("data", data);
            string expecting = "Himom,Hidad"; // nulls are skipped
            Assert.AreEqual(expecting, e.ToString());
            }
 public void testLengthOpPrimitive()
 {
 StringTemplate e = new StringTemplate(
         "$length(ints)$"
     );
 e = e.GetInstanceOf();
 e.SetAttribute("ints", new int[] { 1, 2, 3, 4 });
 string expecting = "4";
 Assert.AreEqual(expecting, e.ToString());
 }
 public void testLengthOpNull()
 {
 StringTemplate e = new StringTemplate(
         "$length(names)$"
     );
 e = e.GetInstanceOf();
 e.SetAttribute("names", null);
 string expecting = "0";
 Assert.AreEqual(expecting, e.ToString());
 }
 public virtual void testParallelAttributeIterationWithMissingArgs()
 {
 IStringTemplateErrorListener errors = new ErrorBuffer();
 StringTemplate e = new StringTemplate("$names,phones,salaries:{$n$@$p$}; separator=\", \"$");
 e.ErrorListener = errors;
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Tom");
 e.SetAttribute("phones", "2");
 e.SetAttribute("salaries", "big");
 e.ToString(); // generate the error
 string errorExpecting = "missing arguments in anonymous template in context [anonymous]";
 Assert.AreEqual(errorExpecting, errors.ToString());
 }
 public void testIncomingArraysAreOk()
 {
 StringTemplate e = new StringTemplate(
     "$names; separator=\", \"$" // gets 2nd element
     );
 e = e.GetInstanceOf();
 e.SetAttribute("names", new String[] { "Ter", "Tom" });
 e.SetAttribute("names", "Sriram");
 string expecting = "Ter, Tom, Sriram";
 Assert.AreEqual(expecting, e.ToString());
 }
            public void testIncomingListsAreNotModified2()
            {
            StringTemplate e = new StringTemplate(
                "$names; separator=\", \"$" // gets 2nd element
                );
            e = e.GetInstanceOf();
            IList names = new ArrayList();
            names.Add("Ter");
            names.Add("Tom");
            e.SetAttribute("names", "Sriram"); // single element first now
            e.SetAttribute("names", names);
            string expecting = "Sriram, Ter, Tom";
            Assert.AreEqual(expecting, e.ToString());

            Assert.AreEqual(names.Count, 2);
            Assert.AreEqual(names[0], "Ter");
            Assert.AreEqual(names[1], "Tom");
            }
 public void testIncomingLists()
 {
 StringTemplate e = new StringTemplate(
     "$rest(names)$, $rest(names)$" // gets 2nd element
     );
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("names", "Tom");
 string expecting = "Tom, Tom";
 Assert.AreEqual(expecting, e.ToString());
 }
 public virtual void testRestWithLengthOneListAttributeOp()
 {
 StringTemplate e = new StringTemplate("$rest(names)$");
 e = e.GetInstanceOf();
 e.SetAttribute("names", new ArrayList(new object[] { "Ter" }));
 string expecting = "";
 Assert.AreEqual(expecting, e.ToString());
 }
 public virtual void testRestWithOneAttributeOp()
 {
 StringTemplate e = new StringTemplate("$rest(names)$");
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 string expecting = "";
 Assert.AreEqual(expecting, e.ToString());
 }
 public virtual void testNestedOp()
 {
 StringTemplate e = new StringTemplate("$first(rest(names))$");
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("names", "Tom");
 e.SetAttribute("names", "Sriram");
 string expecting = "Tom";
 Assert.AreEqual(expecting, e.ToString());
 }
 public virtual void testLengthOpWithHybridDictionary()
 {
 StringTemplate e = new StringTemplate("$length(names)$");
 e = e.GetInstanceOf();
 IDictionary m = new HybridDictionary();
 m.Add("Tom", "Tom");
 m.Add("Sriram", "Sriram");
 m.Add("Doug", "Doug");
 e.SetAttribute("names", m);
 string expecting = "3";
 Assert.AreEqual(expecting, e.ToString());
 }
 public void testAnonTemplateWithArgHasNoITArg()
 {
 StringTemplate e = new StringTemplate(
     "$names:{n| $n$:$it$}; separator=\", \"$"
     );
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("names", "Tom");
 string s = e.ToString();
 }
 public void testLengthOpSingleValue()
 {
 StringTemplate e = new StringTemplate(
         "$length(names)$"
     );
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 string expecting = "1";
 Assert.AreEqual(expecting, e.ToString());
 }
 public virtual void testFirstWithCatAttribute()
 {
 StringTemplate e = new StringTemplate("$first([names,phones])$");
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("names", "Tom");
 e.SetAttribute("phones", "1");
 e.SetAttribute("phones", "2");
 string expecting = "Ter";
 Assert.AreEqual(expecting, e.ToString());
 }
 public void testStripOpOfListWithNulls()
 {
 StringTemplate e = new StringTemplate("$strip(data)$");
 e = e.GetInstanceOf();
 IList data = new ArrayList();
 data.Add("Hi");
 data.Add(null);
 data.Add("mom");
 data.Add(null);
 e.SetAttribute("data", data);
 string expecting = "Himom"; // nulls are skipped
 Assert.AreEqual(expecting, e.ToString());
 }
 public virtual void testJustCat()
 {
 StringTemplate e = new StringTemplate("$[names,phones]$");
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("names", "Tom");
 e.SetAttribute("phones", "1");
 e.SetAttribute("phones", "2");
 string expecting = "TerTom12";
 Assert.AreEqual(expecting, e.ToString());
 }
 public void testStripOpOfSingleAlt()
 {
 StringTemplate e = new StringTemplate(
         "$strip(data)$"
     );
 e = e.GetInstanceOf();
 e.SetAttribute("data", "hi");
 string expecting = "hi"; // nulls are skipped
 Assert.AreEqual(expecting, e.ToString());
 }
 public virtual void testCat2AttributesWithApply()
 {
 StringTemplate e = new StringTemplate("$[names,phones]:{a|$a$.}$");
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("names", "Tom");
 e.SetAttribute("phones", "1");
 e.SetAttribute("phones", "2");
 string expecting = "Ter.Tom.1.2.";
 Assert.AreEqual(expecting, e.ToString());
 }
 public void testLengthOpOfStrippedListWithNullsFrontAndBack()
 {
 StringTemplate e = new StringTemplate(
         "$length(strip(data))$"
     );
 e = e.GetInstanceOf();
 IList data = new ArrayList();
 data.Add(null);
 data.Add(null);
 data.Add(null);
 data.Add("Hi");
 data.Add(null);
 data.Add(null);
 data.Add(null);
 data.Add("mom");
 data.Add(null);
 data.Add(null);
 data.Add(null);
 e.SetAttribute("data", data);
 string expecting = "2"; // nulls are counted
 Assert.AreEqual(expecting, e.ToString());
 }
 public virtual void testCat3Attributes()
 {
 StringTemplate e = new StringTemplate("$[names,phones,salaries]; separator=\", \"$");
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("names", "Tom");
 e.SetAttribute("phones", "1");
 e.SetAttribute("phones", "2");
 e.SetAttribute("salaries", "big");
 e.SetAttribute("salaries", "huge");
 string expecting = "Ter, Tom, 1, 2, big, huge";
 Assert.AreEqual(expecting, e.ToString());
 }
            public virtual void testElseClause()
            {
            StringTemplate e = new StringTemplate("$if(title)$" + NL
                + "foo" + NL
                + "$else$" + NL
                + "bar" + NL
                + "$endif$"
                );
            e.SetAttribute("title", "sample");
            string expecting = "foo";
            Assert.AreEqual(expecting, e.ToString());

            e = e.GetInstanceOf();
            expecting = "bar";
            Assert.AreEqual(expecting, e.ToString());
            }
 public void testParallelAttributeIterationHasI()
 {
 StringTemplate e = new StringTemplate(
     "$names,phones,salaries:{n,p,s | $i0$. $n$@$p$: $s$\n}$"
     );
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("names", "Tom");
 e.SetAttribute("phones", "1");
 e.SetAttribute("phones", "2");
 e.SetAttribute("salaries", "big");
 e.SetAttribute("salaries", "huge");
 string expecting = "0. Ter@1: big" + NL + "1. Tom@2: huge" + NL;
 Assert.AreEqual(expecting, e.ToString());
 }
            public virtual void testEmbeddedMultiLineIF()
            {
            StringTemplateGroup group = new StringTemplateGroup("test");
            StringTemplate main = new StringTemplate(group, "$sub$");
            StringTemplate sub = new StringTemplate(
                group, ""
                + "begin" + NL
                + "$if(foo)$" + NL
                + "$foo$" + NL
                + "$else$" + NL
                + "blort" + NL
                + "$endif$" + NL
                );
            sub.SetAttribute("foo", "stuff");
            main.SetAttribute("sub", sub);
            string expecting = "begin" + NL
                + "stuff";
            Assert.AreEqual(expecting, main.ToString());

            main = new StringTemplate(group, "$sub$");
            sub = sub.GetInstanceOf();
            main.SetAttribute("sub", sub);
            expecting = "begin" + NL
                + "blort";
            Assert.AreEqual(expecting, main.ToString());
            }
 public virtual void testParallelAttributeIterationWithSingletons()
 {
 StringTemplate e = new StringTemplate("$names,phones,salaries:{n,p,s | $n$@$p$: $s$}; separator=\", \"$");
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("phones", "1");
 e.SetAttribute("salaries", "big");
 string expecting = "Ter@1: big";
 Assert.AreEqual(expecting, e.ToString());
 }
Example #33
0
 public StringTemplate ToDOT(object tree, ITreeAdaptor adaptor, StringTemplate _treeST, StringTemplate _edgeST)
 {
     StringTemplate treeST = _treeST.GetInstanceOf();
     nodeNumber = 0;
     ToDOTDefineNodes(tree, adaptor, treeST);
     nodeNumber = 0;
     ToDOTDefineEdges(tree, adaptor, treeST);
     /*
     if ( adaptor.GetChildCount(tree)==0 ) {
         // single node, don't do edge.
         treeST.SetAttribute("nodes", adaptor.GetNodeText(tree));
     }
     */
     return treeST;
 }
 public virtual void testParallelAttributeIterationWithMismatchArgListSizes()
 {
 IStringTemplateErrorListener errors = new ErrorBuffer();
 StringTemplate e = new StringTemplate("$names,phones,salaries:{n,p | $n$@$p$}; separator=\", \"$");
 e.ErrorListener = errors;
 e = e.GetInstanceOf();
 e.SetAttribute("names", "Ter");
 e.SetAttribute("names", "Tom");
 e.SetAttribute("phones", "1");
 e.SetAttribute("phones", "2");
 e.SetAttribute("salaries", "big");
 string expecting = "Ter@1, Tom@2";
 Assert.AreEqual(expecting, e.ToString());
 string errorExpecting = "number of arguments [n, p] mismatch between attribute list and anonymous template in context [anonymous]";
 Assert.AreEqual(errorExpecting, errors.ToString());
 }