コード例 #1
0
		static SlnFileRenderer()
		{
			var stream = typeof (SlnFileRenderer).Assembly.GetManifestResourceStream("SlimJim.Templates.SolutionTemplate.st");
			templateGroup = new StringTemplateGroup("SlnTemplates");
			using (stream)
			{
				templateGroup.DefineTemplate("SolutionTemplate", new StreamReader(stream).ReadToEnd());
			}
		}
コード例 #2
0
 public void TestMultipleAdditions()
 {
     // specify a template to apply to an attribute
     // Use a template group so we can specify the start/stop chars
     StringTemplateGroup group =
         new StringTemplateGroup( "dummy", "." );
     group.DefineTemplate( "link", "<a href=\"$url$\"><b>$title$</b></a>" );
     StringTemplate duh =
         new StringTemplate( group,
             "$link(url=\"/member/view?ID=\"+ID+\"&x=y\"+foo, title=\"the title\")$" );
     duh.SetAttribute( "ID", "3321" );
     duh.SetAttribute( "foo", "fubar" );
     string expecting = "<a href=\"/member/view?ID=3321&x=yfubar\"><b>the title</b></a>";
     Assert.AreEqual( expecting, duh.ToString() );
 }
コード例 #3
0
 public void TestChangingAttrValueTemplateApplicationToVector()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test" );
     StringTemplate bold = group.DefineTemplate( "bold", "<b>$x$</b>" );
     StringTemplate t = new StringTemplate( group, "$names:bold(x=it)$" );
     t.SetAttribute( "names", "Terence" );
     t.SetAttribute( "names", "Tom" );
     //System.out.println("'"+t.toString()+"'");
     string expecting = "<b>Terence</b><b>Tom</b>";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #4
0
 public void TestBackslash2()
 {
     StringTemplateGroup group = new StringTemplateGroup("test");
     StringTemplate t = group.DefineTemplate("t", "\\ ");
     string expecting = "\\ ";
     Assert.AreEqual(expecting, t.ToString());
 }
コード例 #5
0
 public void TestTemplatePolymorphism()
 {
     StringTemplateGroup group = new StringTemplateGroup( "super" );
     StringTemplateGroup subGroup = new StringTemplateGroup( "sub" );
     subGroup.SuperGroup = group;
     // bold is defined in both super and sub
     // if you create an instance of page via the subgroup,
     // then bold() should evaluate to the subgroup not the super
     // even though page is defined in the super.  Just like polymorphism.
     group.DefineTemplate( "bold", "<b>$it$</b>" );
     group.DefineTemplate( "page", "$name:bold()$" );
     subGroup.DefineTemplate( "bold", "<strong>$it$</strong>" );
     StringTemplate st = subGroup.GetInstanceOf( "page" );
     st.SetAttribute( "name", "Ter" );
     string expecting =
             "<strong>Ter</strong>";
     Assert.AreEqual( expecting, st.ToString() );
 }
コード例 #6
0
 public void TestTemplateApplicationAsRHSOfAssignment()
 {
     StringTemplateGroup group = new StringTemplateGroup( "test" );
     StringTemplate hostname = group.DefineTemplate( "hostname", "$machine$.jguru.com" );
     StringTemplate bold = group.DefineTemplate( "bold", "<b>$x$</b>" );
     StringTemplate italics = group.DefineTemplate( "italics", "<i>$it$</i>" );
     StringTemplate t = new StringTemplate( group, "$bold(x=hostname(machine=\"www\"):italics())$" );
     string expecting = "<b><i>www.jguru.com</i></b>";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #7
0
 public void TestStringLiteralAsAttribute()
 {
     StringTemplateGroup group = new StringTemplateGroup( "test" );
     StringTemplate bold = group.DefineTemplate( "bold", "<b>$it$</b>" );
     StringTemplate name = new StringTemplate( group, "$\"Terence\":bold()$" );
     Assert.AreEqual( "<b>Terence</b>", name.ToString() );
 }
コード例 #8
0
 public void TestStringCatenationOnSingleValuedAttributeViaTemplateLiteral()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test" );
     StringTemplate bold = group.DefineTemplate( "bold", "<b>$it$</b>" );
     //StringTemplate a = new StringTemplate(group, "$\" Parr\":bold()$");
     StringTemplate b = new StringTemplate( group, "$bold(it={$name$ Parr})$" );
     //a.SetAttribute("name", "Terence");
     b.SetAttribute( "name", "Terence" );
     string expecting = "<b>Terence Parr</b>";
     //Assert.AreEqual(a.toString(), expecting);
     Assert.AreEqual( b.ToString(), expecting );
 }
コード例 #9
0
 public void TestParameterAndAttributeScoping()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test" );
     StringTemplate italics = group.DefineTemplate( "italics", "<i>$x$</i>" );
     StringTemplate bold = group.DefineTemplate( "bold", "<b>$x$</b>" );
     StringTemplate t = new StringTemplate( group, "$bold(x=italics(x=name))$" );
     t.SetAttribute( "name", "Terence" );
     //System.out.println(t);
     string expecting = "<b><i>Terence</i></b>";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #10
0
 public void TestApplyRepeatedAnonymousTemplateWithForeignTemplateRefToMultiValuedAttribute()
 {
     // specify a template to apply to an attribute
     // Use a template group so we can specify the start/stop chars
     StringTemplateGroup group =
         new StringTemplateGroup( "dummy", "." );
     group.DefineTemplate( "link", "<a href=\"$url$\"><b>$title$</b></a>" );
     StringTemplate duh =
         new StringTemplate( group,
     "start|$p:{$link(url=\"/member/view?ID=\"+it.ID, title=it.firstName)$ $if(it.canEdit)$canEdit$endif$}:" +
     "{$it$<br>\n}$|end" );
     duh.SetAttribute( "p", new Connector() );
     duh.SetAttribute( "p", new Connector2() );
     //System.out.println(duh);
     string expecting = "start|<a href=\"/member/view?ID=1\"><b>Terence</b></a> <br>" + newline +
         "<a href=\"/member/view?ID=2\"><b>Tom</b></a> canEdit<br>" + newline +
         "|end";
     Assert.AreEqual( expecting, duh.ToString() );
 }
コード例 #11
0
 public void TestNullValueInListWithTemplateApplyNullFirstValue()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test", typeof( AngleBracketTemplateLexer ) );
     StringTemplate t =
         group.DefineTemplate( "t", "<data:array(); null=\"-1\", separator=\", \">" );
     group.DefineTemplate( "array", "<it>" );
     IList data = new List<object>();
     data.Add( null );
     data.Add( 0 );
     data.Add( null );
     data.Add( 2 );
     t.SetAttribute( "data", data );
     string expecting = "-1, 0, -1, 2";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #12
0
 public void TestNullValueInListNoNullOption()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test", typeof( AngleBracketTemplateLexer ) );
     StringTemplate t =
         group.DefineTemplate( "t", "<data; separator=\", \">" );
     IList data = new List<object>();
     data.Add( null );
     data.Add( 1 );
     data.Add( null );
     data.Add( 3 );
     data.Add( 4 );
     data.Add( null );
     t.SetAttribute( "data", data );
     //System.out.println(t);
     string expecting = "1, 3, 4";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #13
0
 public void TestNullSingleValueWithTemplateApply()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test", typeof( AngleBracketTemplateLexer ) );
     StringTemplate t =
         group.DefineTemplate( "t", "<data:array(); null=\"-1\", separator=\", \">" );
     group.DefineTemplate( "array", "<it>" );
     string expecting = "-1";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #14
0
 public void TestNullOptionSingleNullValue()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test", typeof( AngleBracketTemplateLexer ) );
     StringTemplate t =
         group.DefineTemplate( "t", "<data; null=\"0\">" );
     //System.out.println(t);
     string expecting = "0";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #15
0
 public void TestNullOptionHasEmptyNullValue()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test", typeof( AngleBracketTemplateLexer ) );
     StringTemplate t =
         group.DefineTemplate( "t", "<data; null=\"\", separator=\", \">" );
     IList data = new List<object>();
     data.Add( null );
     data.Add( 1 );
     t.SetAttribute( "data", data );
     string expecting = ", 1";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #16
0
 public void TestApplyTemplateToSingleValuedAttributeWithDefaultAttribute()
 {
     StringTemplateGroup group = new StringTemplateGroup( "test" );
     StringTemplate bold = group.DefineTemplate( "bold", "<b>$it$</b>" );
     StringTemplate name = new StringTemplate( group, "$name:bold()$" );
     name.SetAttribute( "name", "Terence" );
     Assert.AreEqual( "<b>Terence</b>", name.ToString() );
 }
コード例 #17
0
 public void TestSimpleInheritance()
 {
     // make a bold template in the super group that you can inherit from sub
     StringTemplateGroup supergroup = new StringTemplateGroup( "super" );
     StringTemplateGroup subgroup = new StringTemplateGroup( "sub" );
     StringTemplate bold = supergroup.DefineTemplate( "bold", "<b>$it$</b>" );
     subgroup.SuperGroup = supergroup;
     IStringTemplateErrorListener errors = new ErrorBuffer();
     subgroup.ErrorListener = errors;
     supergroup.ErrorListener = errors;
     StringTemplate duh = new StringTemplate( subgroup, "$name:bold()$" );
     duh.SetAttribute( "name", "Terence" );
     string expecting = "<b>Terence</b>";
     Assert.AreEqual( expecting, duh.ToString() );
 }
コード例 #18
0
 public void TestParenthesizedExpression()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test" );
     StringTemplate bold = group.DefineTemplate( "bold", "<b>$it$</b>" );
     StringTemplate t = new StringTemplate( group, "$(f+l):bold()$" );
     t.SetAttribute( "f", "Joe" );
     t.SetAttribute( "l", "Schmoe" );
     //System.out.println(t);
     string expecting = "<b>JoeSchmoe</b>";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #19
0
 public void TestStringCatenationOpOnArgWithEqualsInString()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test" );
     StringTemplate bold = group.DefineTemplate( "bold", "<b>$it$</b>" );
     StringTemplate b = new StringTemplate( group, "$bold(it=name+\" Parr=\")$" );
     //a.SetAttribute("name", "Terence");
     b.SetAttribute( "name", "Terence" );
     string expecting = "<b>Terence Parr=</b>";
     //Assert.AreEqual(expecting, a.toString());
     Assert.AreEqual( expecting, b.ToString() );
 }
コード例 #20
0
 public void TestApplySuperTemplateRef()
 {
     StringTemplateGroup group = new StringTemplateGroup( "super" );
     StringTemplateGroup subGroup = new StringTemplateGroup( "sub" );
     subGroup.SuperGroup = group;
     group.DefineTemplate( "bold", "<b>$it$</b>" );
     subGroup.DefineTemplate( "bold", "<strong>$it$</strong>" );
     subGroup.DefineTemplate( "page", "$name:super.bold()$" );
     StringTemplate st = subGroup.GetInstanceOf( "page" );
     st.SetAttribute( "name", "Ter" );
     string expecting =
             "<b>Ter</b>";
     Assert.AreEqual( expecting, st.ToString() );
 }
コード例 #21
0
 public void TestSuperTemplateRef()
 {
     // you can refer to a template defined in a super group via super.t()
     StringTemplateGroup group = new StringTemplateGroup( "super" );
     StringTemplateGroup subGroup = new StringTemplateGroup( "sub" );
     subGroup.SuperGroup = group;
     group.DefineTemplate( "page", "$font()$:text" );
     group.DefineTemplate( "font", "Helvetica" );
     subGroup.DefineTemplate( "font", "$super.font()$ and Times" );
     StringTemplate st = subGroup.GetInstanceOf( "page" );
     string expecting =
             "Helvetica and Times:text";
     Assert.AreEqual( expecting, st.ToString() );
 }
コード例 #22
0
 public void TestRecursion()
 {
     StringTemplateGroup group = new StringTemplateGroup( "dummy", ".", typeof( AngleBracketTemplateLexer ) );
     group.DefineTemplate( "tree",
     "<if(it.firstChild)>" +
       "( <it.text> <it.children:tree(); separator=\" \"> )" +
     "<else>" +
       "<it.text>" +
     "<endif>" );
     StringTemplate tree = group.GetInstanceOf( "tree" );
     // build ( a b (c d) e )
     Tree root = new Tree( "a" );
     root.AddChild( new Tree( "b" ) );
     Tree subtree = new Tree( "c" );
     subtree.AddChild( new Tree( "d" ) );
     root.AddChild( subtree );
     root.AddChild( new Tree( "e" ) );
     tree.SetAttribute( "it", root );
     string expecting = "( a b ( c d ) e )";
     Assert.AreEqual( expecting, tree.ToString() );
 }
コード例 #23
0
 public void TestTemplateNameExpression()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test" );
     StringTemplate foo = group.DefineTemplate( "foo", "hi there!" );
     StringTemplate t = new StringTemplate( group, "$(name)()$" );
     t.SetAttribute( "name", "foo" );
     //System.out.println(t);
     string expecting = "hi there!";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #24
0
 public void TestApplyTemplateNameExpression()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test" );
     StringTemplate bold = group.DefineTemplate( "foobar", "foo$attr$bar" );
     StringTemplate t = new StringTemplate( group, "$data:(name+\"bar\")()$" );
     t.SetAttribute( "data", "Ter" );
     t.SetAttribute( "data", "Tom" );
     t.SetAttribute( "name", "foo" );
     //System.out.println(t);
     string expecting = "fooTerbarfooTombar";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #25
0
 public void TestArgumentContext2()
 {
     // t is referenced within foo and so will be evaluated in that
     // context.  it can therefore see name.
     StringTemplateGroup group =
             new StringTemplateGroup( "test" );
     StringTemplate main = group.DefineTemplate( "main", "$foo(t={Hi, $super.name$}, name=\"parrt\")$" );
     main.SetAttribute( "name", "tombu" );
     StringTemplate foo = group.DefineTemplate( "foo", "$t$" );
     string expecting = "Hi, parrt";
     Assert.AreEqual( expecting, main.ToString() );
 }
コード例 #26
0
 public void TestApplyTemplateNameTemplateEval()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test" );
     StringTemplate foobar = group.DefineTemplate( "foobar", "foo$it$bar" );
     StringTemplate a = group.DefineTemplate( "a", "$it$bar" );
     StringTemplate t = new StringTemplate( group, "$data:(\"foo\":a())()$" );
     t.SetAttribute( "data", "Ter" );
     t.SetAttribute( "data", "Tom" );
     //System.out.println(t);
     string expecting = "fooTerbarfooTombar";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #27
0
 public void TestChangingAttrValueRepeatedTemplateApplicationToVector()
 {
     StringTemplateGroup group = new StringTemplateGroup( "dummy", "." );
     StringTemplate bold = group.DefineTemplate( "bold", "<b>$item$</b>" );
     StringTemplate italics = group.DefineTemplate( "italics", "<i>$it$</i>" );
     StringTemplate members = new StringTemplate( group, "$members:bold(item=it):italics(it=it)$" );
     members.SetAttribute( "members", "Jim" );
     members.SetAttribute( "members", "Mike" );
     members.SetAttribute( "members", "Ashar" );
     //System.out.println("members="+members);
     string expecting = "<i><b>Jim</b></i><i><b>Mike</b></i><i><b>Ashar</b></i>";
     Assert.AreEqual( expecting, members.ToString() );
 }
コード例 #28
0
 public void TestRepeatedApplicationOfTemplateToMultiValuedAttributeWithSeparator()
 {
     StringTemplateGroup group = new StringTemplateGroup( "dummy", "." );
     StringTemplate search = group.DefineTemplate( "bold", "<b>$it$</b>" );
     StringTemplate item = new StringTemplate( group, "$item:bold():bold(); separator=\",\"$" );
     item.SetAttribute( "item", "Jim" );
     item.SetAttribute( "item", "Mike" );
     item.SetAttribute( "item", "Ashar" );
     // first application of template must yield another vector!
     //System.out.println("ITEM="+item);
     string expecting = "<b><b>Jim</b></b>,<b><b>Mike</b></b>,<b><b>Ashar</b></b>";
     Assert.AreEqual( expecting, item.ToString() );
 }
コード例 #29
0
 public void TestCollectionAttributes()
 {
     StringTemplateGroup group =
             new StringTemplateGroup( "test" );
     StringTemplate bold = group.DefineTemplate( "bold", "<b>$it$</b>" );
     StringTemplate t =
         new StringTemplate( group, "$data$, $data:bold()$, " +
                                   "$list:bold():bold()$, $array$, $a2$, $a3$, $a4$" );
     List<object> v = new List<object>();
     v.Add( "1" );
     v.Add( "2" );
     v.Add( "3" );
     IList list = new List<object>();
     list.Add( "a" );
     list.Add( "b" );
     list.Add( "c" );
     t.SetAttribute( "data", v );
     t.SetAttribute( "list", list );
     t.SetAttribute( "array", new string[] { "x", "y" } );
     t.SetAttribute( "a2", new int[] { 10, 20 } );
     t.SetAttribute( "a3", new float[] { 1.2f, 1.3f } );
     t.SetAttribute( "a4", new double[] { 8.7, 9.2 } );
     //System.out.println(t);
     string expecting = "123, <b>1</b><b>2</b><b>3</b>, " +
         "<b><b>a</b></b><b><b>b</b></b><b><b>c</b></b>, xy, 1020, 1.21.3, 8.79.2";
     Assert.AreEqual( expecting, t.ToString() );
 }
コード例 #30
0
 public void TestRepeatedApplicationOfTemplateToSingleValuedAttribute()
 {
     StringTemplateGroup group = new StringTemplateGroup( "dummy", "." );
     StringTemplate search = group.DefineTemplate( "bold", "<b>$it$</b>" );
     StringTemplate item = new StringTemplate( group, "$item:bold():bold()$" );
     item.SetAttribute( "item", "Jim" );
     Assert.AreEqual( "<b><b>Jim</b></b>", item.ToString() );
 }