-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy patharticles.html
181 lines (144 loc) · 18.1 KB
/
articles.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<!doctype html>
<!--[if lt IE 9]><html class="ie"><![endif]-->
<!--[if gte IE 9]><!--><html><!--<![endif]-->
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>StringTemplate</title>
<!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<link rel="stylesheet" href="css/fontface/Droid-Sans/stylesheet.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/fontface/Droid-Serif/stylesheet.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/fontface/DejaVu-Sans-Mono/stylesheet.css" type="text/css" media="screen" />
<link rel="stylesheet" href="css/st.css" type="text/css" media="screen" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="scripts/selectivizr-min.js"></script>
<script src="scripts/cycle.js"></script>
<script src="scripts/rounded.js"></script>
<script src="scripts/watermark.js"></script>
<script type="text/javascript" src="scripts/lib/jquery.mousewheel-3.0.6.pack.js"></script>
<script type="text/javascript" src="scripts/source/jquery.fancybox.js?v=2.0.6"></script>
<link rel="stylesheet" type="text/css" href="scripts/source/jquery.fancybox.css?v=2.0.6" media="screen" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1024344-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<header>
<a id="index" href="index.html">StringTemplate</a>
<nav>
<script src="scripts/topnav.js"></script>
</nav>
</header>
<div id="wrapper">
<div id="container">
<div id="main">
<div id="content">
<h1>StringTemplate Articles</h1>
<a href="https://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf"><b>Enforcing Strict Model-View Separation in Template Engines</b></a><br>
<b>Terence Parr</b> <i>Thu May 20, 2004 13:00</i><br>
A paper describing what exactly model-view separation means and characterizing the generational power of a template engine that enforces separation; academically-oriented but it's very readable. It was <a href="http://www.www2004.org/awards.htm">nominated for best paper</a> at the selective WWW2004 conference.<br><br><a href="https://www.stringtemplate.org/www2004.ppt"><b>Slides from WWW2004 Conference</b></a><br>
<b>Terence Parr</b> <i>Thu May 20, 2004 12:00</i><br>
Slides from my presentation of the <i>Enforcing Model-View Separation in Template Engines</i> paper.<br><br>
<a href="https://www.cs.usfca.edu/~parrt/papers/ST.pdf"><b>[DRAFT] A Functional Language For Generating Structured Text</b></a><br>
<b>Terence Parr</b> <i>Thu May 11, 2006 10:22</i><br>
<b>Abstract</b>: This paper describes ST (StringTemplate), a domain-specific functional language for generating structured text from internal data structures that has the flavor of an output grammar. ST's feature set is driven by solving real problems encountered in complicated systems such as ANTLR version 3's retargetable code generator. Features include template group inheritance, template polymorphism, lazy evaluation, recursion, output auto-indentation, and the new notions of group interfaces and template regions. Experience shows that ST is easy to learn and satisfying to use.<p>ST's primary contribution is the clear identification and implementation of a tightly-bracketed solution to the problem of rendering data structures to text, as dictated by the nature of generation and the critical goal of strictly separating the generation logic from the output templates. First, the very nature of code generation suggests the use of a generational grammar. Next, enforcing separation of the generation logic from the output templates restricts the template language syntactically and semantically in such way that templates are easily shown to be equivalent to a grammar. Finally, the rules of separation, such as side-effect free expressions, coincide with the fundamentals of pure, functional programming.<br><br><a href="http://www.cs.usfca.edu/~parrt/papers/i18n.pdf"><b>The Internationalization and Localization of Web Applications</b></a><br>
<b>Terence Parr</b> <i>Tue Feb 21, 2006 11:49</i><br>
A template engine that strictly enforces model-view separation has been shown to be at least as expressive as a context free grammar allowing the engine to, for example, easily generate any file describable by an XML DTD. When faced with supporting internationalized web applications, however, template engine designers have backed off from enforcing strict separation, allowing unrestricted embedded code segments because it was unclear how localization could otherwise occur. The consequence, unfortunately, is that each reference to a localized data value, such as a date or monetary value, replicates essentially the same snippet of code thousands of times across hundreds of templates for a large site. The potential for cut-and-paste induced bugs and the duplication of code proves a maintenance nightmare. Moreover, page designers are ill-equipped to deal with code fragments. But the difficult question remains: How can localization be done without allowing unrestricted embedded code segments that open the door to model-view entanglement? The answer is simply to automate the localization of data values, thus, avoiding code duplication, making it easier on the developer and designer, and reducing opportunities for the introduction of bugs--all-the-while maintaining the sanctity of strict model-view separation. This paper describes how the StringTemplate template engine strictly enforces model-view separation while handily supporting internationalized web application architectures. Demonstrations of page text localization, locale-specific site designs, and automatic data localization are provided.<br><br>
<a href="http://www.artima.com/lejava/articles/stringtemplate.html"><b>The Importance of Model-View Separation (a conversation with Terence Parr)</b></a><br>
<b>Bill Venners</b> <i>Fri Mar 21, 2008 08:56</i><br>
In this interview with Artima, Terence Parr, creator of the StringTemplate template engine as well as the ANTLR parser generator, talks about the importance of separating business logic and presentation.<br><br>
<a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/Dougclectica/entry/using_a_template_engine_from_your_java_code90?lang=en"><b>Using a Template Engine from your Java code</b></a><br>
<b>Doug Breaux (Submitted by TJP)</b> <i>Sat Aug 25, 2012 13:33</i><br>
However, we now have a desire to capture merged HTML into standalone files that are not related to HTTP request or response processing. So rather than hardcode the HTML creation, I decided to start using one of the existing template engines. Velocity, FreeMarker, and StringTemplate are 3 of the most used. One of my main requirements was that the template files be true HTML that would syntax-check successfully in an IDE or code editor...<br><br><a href="http://netmvc.blogspot.com/2012/04/localizable-text-template-engine-using_23.html"><b>Localizable text template engine using StringTemplate 4</b></a><br>
<b>Andrew Malkov [posted by parrt]</b> <i>Tue Apr 24, 2012 09:29</i><br>
<br><br><a href="http://blogs.sphinx.at/java/stringtemplate-als-java-template-engine-fur-mehrsprachige-formatierte-text-emails/"><b>StringTemplate als Java Template Engine f�r mehrsprachige, formatierte Text-Emails</b></a><br>
<b>Christian Schiestl</b> <i>Thu Aug 11, 2011 09:46</i><br>
An article in German. <a href="http://translate.google.com/translate?hl=en&sl=de&tl=en&u=http%3A%2F%2Fblogs.sphinx.at%2Fjava%2Fstringtemplate-als-java-template-engine-fur-mehrsprachige-formatierte-text-emails%2F">English version</a><br><br><a href="http://pjmolina.com/metalevel/2010/11/stringtemplate-a-great-template-engine-for-code-generation/"><b>StringTemplate: a great template engine for code generation</b></a><br>
<b>Pedro J. Molina [submitted by Terence]</b> <i>Fri Nov 26, 2010 08:05</i><br>
In this post, I will try to introduce and explain why StringTemplate is a superb engine for doing code generation and why you should consider it if dealing with a code generation scenario.<br><br><a href="http://weblogs.java.net/blog/aberrant/archive/2010/06/13/stringtemplate-part-4generating-builder-class-using-stringtemplate"><b>ST Part 4:Generating a Builder Class using StringTemplate</b></a><br>
<b>Collin Fagan</b> <i>Sun Jun 13, 2010 15:12</i><br>
<br><br><a href="http://java.dzone.com/articles/stringtemplate-part-3-complex"><b>ST Part 3: Complex Data Types and Renderers </b></a><br>
<b>Collin Fagan</b> <i>Tue Jun 8, 2010 11:39</i><br>
<br><br><a href="http://www.java.net/blog/185622"><b>ST: Collections and Template Groups</b></a><br>
<b>Collin Fagan</b> <i>Thu Jun 3, 2010 11:41</i><br>
<br><br><a href="http://weblogs.java.net/blog/aberrant/archive/2010/05/25/using-stringtemplate-part-1-introduction-stringtemplate"><b>An introduction to StringTemplate</b></a><br>
<b>Collin Fagan</b> <i>Thu Jun 3, 2010 11:40</i><br>
A quick introduction to ST generating SQL.<br><br><a href="http://www.codecapers.com/post/Generating-Structured-Text-with-StringTemplate.aspx"><b>Generating Structured Text with StringTemplate</b></a><br>
<b>Michael Ceranski [submitted by Terence]</b> <i>Mon Feb 8, 2010 12:34</i><br>
In order to get familiar with the functionality lets start by looking at a few sample templates...<br><br><a href="http://www.reddit.com/r/Clojure/comments/ablcc/string_interpolation_in_clojure/"><b>Clojure and StringTemplate</b></a><br>
<b>submitted by Terence Parr</b> <i>Fri Jan 22, 2010 16:14</i><br>
An example using ST in Clojure.<br><br><a href="http://prettyprint.me/2009/11/13/stringtemplate-a-step-forward-to-a-better-web-mvc/"><b>StringTemplate ? a step forward to a better web MVC</b></a><br>
<b>Ran Tavory</b> <i>Thu Nov 19, 2009 12:18</i><br>
StringTemplate is a step forward true MVC implementation, but before presenting the solution, let?s see what the problem is....<br><br>
<a href="http://websitelogic.net/articles/MVC/stringtemplate-viewengine-asp-net-mvc"><b>Using StringTemplate as a ViewEngine for ASP.Net MVC</b></a><br>
<b>Website Logic, LLC</b> <i>Wed Aug 12, 2009 12:52</i><br>
After kicking the tires on every ViewEngine I could get my hands on (including hacking my own template language just for fun), I became frustrated with endless pages of "tag soup". My search for something lightweight, fast, easy to read, and wrist friendly led me to a solid product called StringTemplate.<br><br><a href="http://ca.rroll.net/2009/06/18/using-stringtemplate-as-the-view-engine-for-your-spring-mvc-application/"><b>Using StringTemplate as the view engine for your Spring MVC application</b></a><br>
<b>Nick Carroll</b> <i>Thu Jun 18, 2009 11:19</i><br>
You can use StringTemplate to generate your views in Spring MVC quite easily.<br><br><a href="http://richardbarabe.wordpress.com/2009/03/10/stringtemplate-a-brief-example/"><b>Using StringTemplate with J2EE</b></a><br>
<b>Richard Barabe</b> <i>Mon Mar 9, 2009 22:52</i><br>
Here is a brief example of using StringTemplate in a j2ee environment. StringTemplate can play the role of the view in a J2EE web application, and can be used as a replacement for JSP/JSTL.<br><br><a href="http://stackoverflow.com/questions/488930/which-java-mvc-frameworks-integrate-easily-with-stringtemplate"><b>Which Java MVC frameworks integrate easily with StringTemplate?</b></a><br>
<b>submitted by Terence</b> <i>Fri Feb 20, 2009 09:00</i><br>
A few code snippets showing ST use with Spring.<br><br><a href="http://websitelogic.net/articles/MVC/stringtemplate-viewengine-asp-net-mvc/"><b>Using StringTemplate as a ViewEngine for ASP.Net MVC</b></a><br>
<b>Jamison Morrow</b> <i>Sun Feb 15, 2009 18:02</i><br>
An article describing the basics of using StringTemplate as a View Engine for the ASP.Net MVC Framework.<br><br>
<a href="http://hardlikesoftware.com/weblog/2008/02/15/script-injection-and-stringtemplate/"><b>Script injection and StringTemplate</b></a><br>
<b>John Snyders</b> <i>Fri Feb 15, 2008 19:13</i><br>
Some thoughts on rendering in StringTemplate. What can be done to protect against script injection in HTML without the template author needing to be aware of escaping rules?<br><br><a href="http://aetoolbox.com/default.aspx"><b>Setting up ANTLR/ST for use with Matlab</b></a><br>
<b>L & D Engineering LLC</b> <i>Sun Dec 2, 2007 11:11</i><br>
<br><br><a href="http://java-aap.blogspot.com/2007/07/refactoring-your-templates.html"><b>Refactoring your Templates</b></a><br>
<b>Sander Hahn</b> <i>Sat Oct 13, 2007 08:55</i><br>
Chronicles Sander's use of ST.<br><br><a href="http://hardlikesoftware.com/weblog/2007/06/25/thoughts-on-stringtemplate-part-2/"><b>Thoughts on StringTemplate</b></a><br>
<b>John Snyders</b> <i>Wed Jun 27, 2007 17:59</i><br>
Second in a series of articles on ideas for the future of StringTemplate. Part 2 is about programming-in-the-large. <br><br><a href="http://davidrupp.blogspot.com/2007/06/required-reading-enforcing-strict-model.html"><b>Required Reading: Enforcing Strict Model-View Separation in Template Engines</b></a><br>
<b>David Rupp</b> <i>Wed Jun 6, 2007 16:01</i><br>
Blog entry discussing <a href="https://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf">Enforcing Strict Model-View Separation in Template Engines</a>.<br><br><a href="https://www.cnblogs.com/RicCC/archive/2007/06/03/769642.html"><b>Chinese version: Enforcing Strict Model-View-Separation in Template Engines</b></a><br>
<b>Translated by Richie Liu</b> <i>Tue Jun 5, 2007 11:39</i><br>
I translated the paper into Chinese and post it there, is to bring it to Chinese programmers, and make it more readable to us.<br><br><a href="http://hardlikesoftware.com/weblog/2007/04/26/on-learning-stringtemplate/"><b>On Learning StringTemplate</b></a><br>
<b>John Snyders</b> <i>Thu Apr 26, 2007 10:46</i><br>
I have been thinking lately about the learnability (the ease with which something can be learned) of StringTemplate. StringTemplate needs is a literal representation for data that can be used as input and a stand alone program to read the data and templates to produce the output text. I created a command line tool called StringTemplate Standalone Tool (STST). It takes as input the name of a file containing data in JSON format, the name of a template and optionally the name of a group as well as various options.<br><br><a href="http://hardlikesoftware.com/weblog/2006/12/11/web-app-investigation-part-2-stringtemplate/"><b>Web app investigation part 2 - StringTemplate</b></a><br>
<b>John Snyders</b> <i>Tue Mar 27, 2007 15:58</i><br>
This post will describe my experience with StringTemplate. I also give some informal performance numbers.<br><br><a href="http://silentsoftware.blogspot.com/2007/02/grokking-stringtemplate.html"><b>Grokking StringTemplate</b></a><br>
<b>Ian Rae</b> <i>Tue Feb 13, 2007 14:57</i><br>
The blog has conclusions after a couple of days of playing with StringTemplate in Java.<br><br><a href="http://hardlikesoftware.com/weblog/category/stringtemplate"><b>John Snyders' blog entry on ST</b></a><br>
<b>John Snyders</b> <i>Mon Dec 11, 2006 09:43</i><br>
Talks about using ST in a simple website, comparing to hand-coded servlet and JSF. ST's speed is in between those two.<br><br><a href="http://www.artima.com/forums/flat.jsp?forum=276&thread=180957"><b>Terence Parr on Strict Model-View Separation in Templates</b></a><br>
<b>Terence Parr</b> <i>Wed Oct 18, 2006 10:39</i><br>
An interview I did for Artima.com :)<br><br><a href="http://www.cs.usfca.edu/~parrt/course/601/lectures/page.generation.html"><b>Intelligent Web Site Page Generation</b></a><br>
<b>Terence Parr</b> <i>Fri Jul 7, 2006 14:30</i><br>
Discussing factoring code for building dynamic web sites and other issues related to page design.<br><br><a href="http://www.cs.usfca.edu/~parrt/course/601/lectures/stringtemplate.html"><b>Using StringTemplate in Page classes</b></a><br>
<b>Terence Parr</b> <i>Fri Jul 7, 2006 14:29</i><br>
How to integrate ST into some servlets; look near the bottom of the page.<br><br><a href="http://www.researchchannel.org/prog/displayevent.asp?rid=3286"><b>The Role of Template Engines in Code Generation</b></a><br>
<b>Terence Parr</b> <i>Fri Jul 7, 2006 09:36</i><br>
A multimedia version of my presentation at Microsoft Research in July of 2004.<br><br>
<a href="https://www.stringtemplate.org/BEA-StringTemplate.ppt"><b>Slides from BEA Presentation</b></a><br>
<b>Terence Parr</b> <i>Fri Apr 1, 2005 17:37</i><br>
Jean Bovet and I went to BEA to show off StringTemplate, ANTLR, and ANTLRWorks.<br><br>
<a href="https://www.stringtemplate.org/StringTemplateEvolution.ppt"><b>The Evolution of the StringTemplate Engine</b></a><br>
<b>Terence Parr</b> <i>Wed Dec 15, 2004 13:00</i><br>
Slides from my presentation at UC Berkeley's Harmonia group<br><br><a href="http://www.codegeneration.net/tiki-read_article.php?articleId=65"><b>Generating Java and XML Using StringTemplate</b></a><br>
<b>Terence Parr</b> <i>Wed Aug 18, 2004 10:00</i><br>
This small article demonstrates how a Java program may dump out its own field/method interface as Java text using reflection and then generate the interface in XML--all without changing the generation logic.<br><br><a href="https://www.stringtemplate.org/MSR-StringTemplate.ppt"><b>The Role Of Template Engines in Code Generation</b></a><br>
<b>Terence Parr</b> <i>Sun Jul 25, 2004 10:00</i><br>
Slides from my presentation at Microsoft Research.<br><br>
</div><!--/content-->
<div id="sidebar">
<script src="scripts/leftnav.js"></script>
</div><!--/sidebar-->
</div><!--/main-->
</div><!--/container-->
<div class="clear"><!--necessary nudge--></div>
</div><!--/wrapper-->
<footer>
<script src="scripts/bottomnav.js"></script>
</footer>
<script src="scripts/functions.js"></script>
</body>
</html>