<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: Tempita</title>
	<atom:link href="http://blog.ianbicking.org/2007/08/06/tempita/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ianbicking.org/2007/08/06/tempita/</link>
	<description></description>
	<pubDate>Wed, 07 Jan 2009 07:36:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: John Lee</title>
		<link>http://blog.ianbicking.org/2007/08/06/tempita/comment-page-1/#comment-951</link>
		<dc:creator>John Lee</dc:creator>
		<pubDate>Sun, 16 Sep 2007 12:59:28 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/2007/08/06/tempita/#comment-951</guid>
		<description>Not sure what you mean about "better error messages".  preppy (the current version) gives ordinary Python tracebacks with correct preppy source lines and preppy source line numbers.

It also has a feature where you can declare template signatures in the template {{def a, b, spam='eggs'}} (I forget the precise syntax that was chosen, but very similar to that), and call templates like ordinary Python functions (I don't think this feature is documented...).  Otherwise the ordinary usage is import preppy; print preppy.getModule('mytemplate').getOutput(dict(foo='bar')).

It was *going* to have a feature similar to PTL's automatic escaping (using a different Python type for markup), but sadly I think that never got implemented (I think something went in in its place, but not sure exactly what).

One possible problem is the use of pycodegen and pyassem, which I think are strictly not public APIs of the stdlib.  But I guess as long as ReportLab continues to maintain it (certainly preppy is used a lot inside ReportLab), that's not a problem.</description>
		<content:encoded><![CDATA[<p>Not sure what you mean about &#8220;better error messages&#8221;.  preppy (the current version) gives ordinary Python tracebacks with correct preppy source lines and preppy source line numbers.</p>

<p>It also has a feature where you can declare template signatures in the template {{def a, b, spam=&#8217;eggs&#8217;}} (I forget the precise syntax that was chosen, but very similar to that), and call templates like ordinary Python functions (I don&#8217;t think this feature is documented&#8230;).  Otherwise the ordinary usage is import preppy; print preppy.getModule(&#8217;mytemplate&#8217;).getOutput(dict(foo=&#8217;bar&#8217;)).</p>

<p>It was <em>going</em> to have a feature similar to PTL&#8217;s automatic escaping (using a different Python type for markup), but sadly I think that never got implemented (I think something went in in its place, but not sure exactly what).</p>

<p>One possible problem is the use of pycodegen and pyassem, which I think are strictly not public APIs of the stdlib.  But I guess as long as ReportLab continues to maintain it (certainly preppy is used a lot inside ReportLab), that&#8217;s not a problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Bicking</title>
		<link>http://blog.ianbicking.org/2007/08/06/tempita/comment-page-1/#comment-943</link>
		<dc:creator>Ian Bicking</dc:creator>
		<pubDate>Sun, 16 Sep 2007 02:18:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/2007/08/06/tempita/#comment-943</guid>
		<description>You are right, that does look extremely similar.  Mine doesn't compile to Python (I far prefer better error messages to the speed), and Python blocks are just slightly different syntactically.  But otherwise, quite the same.</description>
		<content:encoded><![CDATA[<p>You are right, that does look extremely similar.  Mine doesn&#8217;t compile to Python (I far prefer better error messages to the speed), and Python blocks are just slightly different syntactically.  But otherwise, quite the same.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Lee</title>
		<link>http://blog.ianbicking.org/2007/08/06/tempita/comment-page-1/#comment-939</link>
		<dc:creator>John Lee</dc:creator>
		<pubDate>Sat, 15 Sep 2007 20:51:11 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/2007/08/06/tempita/#comment-939</guid>
		<description>You just reinvented preppy:

http://www.reportlab.org/preppy.html

http://www.reportlab.org/downloads.html


There are some oddities about it, but essentially the language appears the same.  The docs are likely out of date.</description>
		<content:encoded><![CDATA[<p>You just reinvented preppy:</p>

<p><a href="http://www.reportlab.org/preppy.html" rel="nofollow">http://www.reportlab.org/preppy.html</a></p>

<p><a href="http://www.reportlab.org/downloads.html" rel="nofollow">http://www.reportlab.org/downloads.html</a></p>

<p>There are some oddities about it, but essentially the language appears the same.  The docs are likely out of date.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Bicking</title>
		<link>http://blog.ianbicking.org/2007/08/06/tempita/comment-page-1/#comment-90</link>
		<dc:creator>Ian Bicking</dc:creator>
		<pubDate>Wed, 08 Aug 2007 15:45:34 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/2007/08/06/tempita/#comment-90</guid>
		<description>Generating code is a lot of what PasteScript does.  But really it's not that bad.</description>
		<content:encoded><![CDATA[<p>Generating code is a lot of what PasteScript does.  But really it&#8217;s not that bad.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Withers</title>
		<link>http://blog.ianbicking.org/2007/08/06/tempita/comment-page-1/#comment-89</link>
		<dc:creator>Chris Withers</dc:creator>
		<pubDate>Wed, 08 Aug 2007 12:18:25 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/2007/08/06/tempita/#comment-89</guid>
		<description>Correct, I don't believe in mixing template source with code that manipulates, ironically, for the same reason you give: I find it very confusing to have to try and determine what's "template" and what's "code", especially when generating plain-text things like email where layout of the source is important.

I find the idea of the template being used to generate python source code too scary to contemplate ;-)</description>
		<content:encoded><![CDATA[<p>Correct, I don&#8217;t believe in mixing template source with code that manipulates, ironically, for the same reason you give: I find it very confusing to have to try and determine what&#8217;s &#8220;template&#8221; and what&#8217;s &#8220;code&#8221;, especially when generating plain-text things like email where layout of the source is important.</p>

<p>I find the idea of the template being used to generate python source code too scary to contemplate ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian Bicking</title>
		<link>http://blog.ianbicking.org/2007/08/06/tempita/comment-page-1/#comment-87</link>
		<dc:creator>Ian Bicking</dc:creator>
		<pubDate>Tue, 07 Aug 2007 15:01:54 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/2007/08/06/tempita/#comment-87</guid>
		<description>It looks like Twiddler is a template driven by external code?  That's definitely not what I'd be looking for -- I want self-describing templates, that would usually be edited by a programmer anyway.  Designers don't edit templates for generating Python source code ;)

I've also found template languages of this style hard to follow, because key information is spread between two separate files.</description>
		<content:encoded><![CDATA[<p>It looks like Twiddler is a template driven by external code?  That&#8217;s definitely not what I&#8217;d be looking for &#8212; I want self-describing templates, that would usually be edited by a programmer anyway.  Designers don&#8217;t edit templates for generating Python source code ;)</p>

<p>I&#8217;ve also found template languages of this style hard to follow, because key information is spread between two separate files.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Withers</title>
		<link>http://blog.ianbicking.org/2007/08/06/tempita/comment-page-1/#comment-82</link>
		<dc:creator>Chris Withers</dc:creator>
		<pubDate>Tue, 07 Aug 2007 13:06:19 +0000</pubDate>
		<guid isPermaLink="false">http://blog.ianbicking.org/2007/08/06/tempita/#comment-82</guid>
		<description>I'd be interested to know what you thought of Twiddler:

http://www.simplistix.co.uk/software/python/twiddler

Using the plain text input would likely give you what you're after in terms of simplicity, and then all your python goes in whatver python file you choose...</description>
		<content:encoded><![CDATA[<p>I&#8217;d be interested to know what you thought of Twiddler:</p>

<p><a href="http://www.simplistix.co.uk/software/python/twiddler" rel="nofollow">http://www.simplistix.co.uk/software/python/twiddler</a></p>

<p>Using the plain text input would likely give you what you&#8217;re after in terms of simplicity, and then all your python goes in whatver python file you choose&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
