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()); } }
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() ); }
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() ); }
public void TestBackslash2() { StringTemplateGroup group = new StringTemplateGroup("test"); StringTemplate t = group.DefineTemplate("t", "\\ "); string expecting = "\\ "; Assert.AreEqual(expecting, t.ToString()); }
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() ); }
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() ); }
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() ); }
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 ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }
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() ); }