diff options
Diffstat (limited to 'recipes')
-rw-r--r-- | recipes/content/@staticmethod_and_@classmethod.html | 436 | ||||
-rw-r--r-- | recipes/content/@staticmethod_and_@classmethod.markdown | 52 | ||||
-rw-r--r-- | recipes/content/Basic_Inheritance.html | 2 | ||||
-rw-r--r-- | recipes/content/Precompiled_Templates.html | 2 | ||||
-rw-r--r-- | recipes/content/Writing_A_Recipe.html | 2 | ||||
-rw-r--r-- | recipes/index.html | 1 |
6 files changed, 492 insertions, 3 deletions
diff --git a/recipes/content/@staticmethod_and_@classmethod.html b/recipes/content/@staticmethod_and_@classmethod.html new file mode 100644 index 0000000..30e622e --- /dev/null +++ b/recipes/content/@staticmethod_and_@classmethod.html @@ -0,0 +1,436 @@ + + + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> +<html> + <head> + <title>Community Cheetah - The Python-Powered Template Engine - @staticmethod_and_@classmethod</title> + <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> + <meta name="keywords" content="cheetah, template engine, python, community cheetah, templating, markdown, markup, mod_python, webware"/> + <meta name="googlebot" content="index, follow" /> + <meta name="language" content="en-us, english" /> + </head> + <body> + <style type="text/css"> + <!-- + /* This CSS style sheet was developed by www.studio7designs.com for opensourcetemplates.org ... Please email if you have any questions aran@studio7designs.com Have fun! */ + + +body { +background:#ffffff url('../../images/bg.jpg') top center repeat-x; +margin:10px 10px 0px 10px; +padding:0px; +color: #000; +font-family:"Trebuchet MS",arial,sans-serif; +font-size: 80%; + +} + +body a:link, body a:visited { + color: blue; +} + +#blogtitle{ +width:100%; +margin:0px auto; +padding:0 0 5px 0; +font-size:1.1em; +line-height:1.2em; +} + +#blogtitle a:link, a:visited { + color:#b8ce83; + text-decoration:none; +} + +#blogtitle a:hover, a:active { + color:#fff; + text-decoration:none; +} + +#small{ +positon:relative; +padding-left: 5px; + +} + +#small2{ +positon:relative; +float:right; +margin-top: -15px; + +} + +UL.BLUE { +list-style: url(../../images/bullet.jpg) disc; +font-size: 1.1em; + +} + +#leftcontent { +position: absolute; +left:10px; +top:50px; +width:200px; +margin-top: 116px; +background-image:url("../../images/strips_onside.jpg"); +background-repeat:repeat-y; +font-size:1.0em; +padding-left: 12px; +padding-top: 8px; + +} + +#leftcontent p{padding-right:10px; margin-left: 5px; color:#888; font-size:1em;} + +#centercontent { +margin-top: 37px; +background:#fff; +margin-left: 199px; +margin-right:199px; +color:#000; +voice-family: "\"}\""; +voice-family: inherit; +margin-left: 201px; +margin-right:201px; +padding:20px; +font-size: 1.3em; +} + +#centercontent p {color:#000;} + +html>body #centercontent { +margin-left: 201px; +margin-right:201px; + +} + +.centercontentleft {float:left; width:40%; height:200px; background-color:#fff; text-align:left; +border:dashed 2px #ccc; margin: 4px 10px 5px 10px; padding:6px; font-size:1.1em; color:#666666;} + +.centercontentright {float:right; width:30%; height:100px; background-color:#fff; text-align:left; +border:dashed 2px #ccc; margin: 4px 10px 5px 10px; padding:6px; font-size:1.1em; color:#666666;} + + +#rightcontent { +position: absolute; +right:10px; +top:0px; +width: 200px; +font-size:1.1em; +background-image:url("../../images/strips_onside.jpg"); +background-repeat:repeat-y; +margin-top:150px; +padding-left: 5px; +padding-right: 8px; +padding-top: 8px; +} + +#rightcontent p {color:#888;} + +#banner { +background:#fff; +height:40px; +voice-family: "\"}\""; +voice-family: inherit; +height:39px; + +} + +html>body #banner { +height:39px; + +} + +p,h1,pre { +margin:0px 10px 10px 10px; +font:Arial, Helvetica, sans-serif; +font-size:12px; +line-height: 1.6em; +text-align:justify; +text-decoration:none; +} + +h1 { +font-size:2.5em; +float:right; +color:#ccc; +padding-top:15px; + +} + +h3 { +font-size:14px; +color:#999; + +} + +#banner h1 { +font-size:14px; +padding:10px 10px 0px 10px; +margin:0px; + +} + +#rightcontent p { +font-size:11px + +} + +.introduction ul, #introduction li { +text-align:center; +list-style: none; +margin: 0; +padding: 0; + +} + +.introduction h3{ +text-align: center; +position:static; + +} + + +/* ~~~~~~~~~ PROPS FOR THE MENU GO OUT TO EXPLODING-BOY.COM ~~~~~~~~~ */ + +#topmenu { +position: absolute; +top: 45px; +left: 240px; +width: 600px; +font-size:100%; +margin: 0 0 50px 0;; +line-height:normal; +height: 35px; +} +#topmenu ul { +margin:0; +padding:0px 0px 0 0px; +list-style:none; +} +#topmenu li { +display:inline; +margin:0; +padding:0; +} +#topmenu a { +float:left; +background:url(../../images/menuleft.gif) no-repeat left top; +margin:0; +padding:0 0 0 4px; +text-decoration:none; +} +#topmenu a span, a:visited span { +float:left; +display:block; +background:url(../../images/menuright.gif) no-repeat right top; +padding:5px 15px 4px 6px; +color:#888; +} + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +#topmenu a span {float:none;} +/* End IE5-Mac hack */ +#topmenu a:hover span { +color:#999999; +} +#topmenu a:hover { +background-position:0% -42px; +} +#topmenu a:hover span { +background-position:100% -42px; +} + +/* ~~~~~~~~~ END MENU ~~~~~~~~~ */ + + + +/* ~~~~~~~~~ BEGIN FOOTER ~~~~~~~~~ */ + +#footer{ +/*height:329px;*/ +background:#000 url('../../images/bg.jpg') top center repeat-x; +text-align: center; +padding-top: 8px; +clear: both; +float: none; +margin-left: -10px; +margin-right: -10px; +margin-bottom: -20px; + +} + +#footer a, a:link { +color:#999999; +text-decoration: none; + +} +#footer a:hover { +color:#A5CE77; +text-decoration: none; + +} + +/* ~~~~~~~~~ END FOOTER~~~~~~~~~ */ + + +/* ~~~~~~~~~ BOXES AT BOTTOM OF PAGE ~~~~~~~~~ */ + +.centercontentleftb {float:left; width:45%; height:200px; background-color:#31412c; text-align:left; +border:dashed 1px #888; margin: 50px 10px 5px 10px; padding:6px; font-size:1.1em; color:#fff;} + + +.centercontentleftimg {float:left; width:45%; height:45%x; background-color:#31412c; text-align:left; +border:dashed 1px #888; padding:6px; font-size:1.1em; color:#fff;} + +.centercontentrightimg {float:right; width:45%; height:45%; background-color:#31412c; text-align:left; +border:dashed 1px #888; padding:6px; font-size:1.1em; color:#fff;} + +.centercontentrightb {float:right; width:45%; height:200px; background-color:#31412c; text-align:left; +border:dashed 1px #888; margin: 50px 13px 5px 10px; padding:6px; font-size:1.1em; color:#fff;} + +.centercontentleftimg {float:left; width:45%; height:45%; background-color:#31412c; text-align:left; +border:dashed 1px #888; padding:6px; font-size:1.1em; color:#fff;} + +.centercontentrightimg {float:right; width:45%; height:45%; background-color:#31412c; text-align:left; +border:dashed 1px #888; padding:6px; font-size:1.1em; color:#fff;} + + --> + </style> + + + <a href="http://github.com/rtyler/cheetah"> + <img style="position: absolute; top: 0; left: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_left_orange_ff7600.png" alt="Fork me on GitHub" /> +</a> + <div id="blogtitle"> + <div id="small" style="margin-left: 130px;"><a href="#">Community Cheetah</a> </div> + <div id="small2"> + <a href="../../index.html">Home</a> | + <a href="../../http://bugs.communitycheetah.org">Issues</a> | + <a href="../../http://github.com/rtyler/cheetah/tree/master">Source</a> | + <a href="../../roadmap.html">Roadmap</a> | + </div> + </div> + + <div id="topmenu"> + <ul class="BLUE"> + <li> + <a href="../../index.html" title="Home"> + <span>Home</span> + </a> + </li> + <li> + <a href="../../download.html" title="Download"> + <span>Download</span> + </a> + </li> + <li> + <a href="../../docs.html" title="Documentation"> + <span>Documentation</span> + </a> + </li> + <li> + <a href="../../recipes/" title="Recipes"> + <span>Recipes</span> + </a> + </li> + <li> + <a href="../../community.html" title="Community"> + <span>Community</span> + </a> + </li> + <li> + <a href="../../developers.html" title="Developers"> + <span>Developers</span> + </a> + </li> + </ul> + </div> + + + + <div id="centercontent"> + <h1>@staticmethod and @classmethod</h1> +<p>Refer the Python's documentation if you're unfamiliar with either +<a href="http://docs.python.org/library/functions.html#staticmethod">@staticmethod</a> or <a href="http://docs.python.org/library/functions.html#classmethod">@classmethod</a> and their uses in Python, as they +pertain to their uses in Cheetah as well. Using <a href="http://docs.python.org/library/functions.html#staticmethod">@staticmethod</a> it's +trivial to create <em>utility templates</em> which are common when using +Cheetah for web development. These <em>utility templates</em> might contain +a number of small functions which generate useful snippets of markup.</p> +<p>For example:</p> +<pre><code>#def copyright() + #import time + &copy; CheetahCorp, Inc. $time.strftime('%Y', time.gmtime()) +#end def +</code></pre> +<p><strong>Figure 1, util.tmpl</strong></p> +<p>Prior to version <strong>v2.2.0</strong> of Cheetah, there wasn't really an easy means +of filling templates with bunches of these small utility functions. In +<strong>v2.2.0</strong> however, you can decorate these methods with <code>#@staticmethod</code> +and use "proper" Python syntax for calling them, <strong>fig 1</strong> revisited:</p> +<pre><code>#@staticmethod +#def copyright() + #import time + &copy; CheetahCorp, Inc. $time.strftime('%Y', time.gmtime()) +#end def +</code></pre> +<p><strong>Figure 1.1, util.tmpl</strong></p> +<p>With the addition of the <a href="http://docs.python.org/library/functions.html#staticmethod">@staticmethod</a> decorator, the <code>copyright()</code> +function can now be used without instantiating an instance of the <code>util</code> +template class. In effect:</p> +<pre><code>#from util import util + +<strong>This is my page</strong> +<br/> +<hr noshade/> +$util.copyright() +</code></pre> +<p><strong>Figure 2, index.tmpl</strong></p> +<p>This approach is however no means to structure anything complex, +<a href="http://docs.python.org/library/functions.html#staticmethod">@staticmethod</a> and <a href="http://docs.python.org/library/functions.html#classmethod">@classmethod</a> use in Cheetah is not meant as a +replacement for properly structured class hierarchies (which +Cheetah supports). That said if you are building a web application +<a href="http://docs.python.org/library/functions.html#staticmethod">@staticmethod</a>/<a href="http://docs.python.org/library/functions.html#classmethod">@classmethod</a> are quite useful for the little snippets +of markup, etc that are needed (Google AdSense blocks, footers, +banners, etc).</p> +<p><span style="float: right; clear: both;"><em>Last edited: Sun May 31 18:40:24 2009 </em></span></p> + </div> + + <div id="rightcontent"> + <img style="margin-top:-9px; margin-left: -5px;" src="../../images/top2.jpg" alt="" /> + + <div id="twitter_div"> + <h2 class="sidebar-title">Twitter Updates</h2> + <ul id="twitter_update_list"></ul> + + <a href="http://twitter.com/cheetahtemplate" id="twitter-link" style="display:block;text-align:right;">follow Cheetah on Twitter</a> + </div> + + + <img style="padding-top:5px; margin-left:-5px; margin-bottom:-4px;" src="../../images/specs_bottom.jpg" alt="" /> + </div> + + <br clear="all"/> + <br/> + + <a href="http://www.python.org" target="_blank"><img src="../../images/python-logo.gif" border="0" alt="Python-powered" title="Python-powered" align="right"/></a> + <br clear="all"/> + <br/> + <div id="footer"> + © 2006 Design by <a href="http://www.studio7designs.com">Studio7designs.com</a> + </div> + + + <script type="text/javascript" src="http://twitter.com/javascripts/blogger.js"></script> + <script type="text/javascript" src="http://twitter.com/statuses/user_timeline/cheetahtemplate.json?callback=twitterCallback2&count=5"></script> + </body> +</html> + + + + + + + + diff --git a/recipes/content/@staticmethod_and_@classmethod.markdown b/recipes/content/@staticmethod_and_@classmethod.markdown new file mode 100644 index 0000000..de2f995 --- /dev/null +++ b/recipes/content/@staticmethod_and_@classmethod.markdown @@ -0,0 +1,52 @@ +@staticmethod and @classmethod +============================== +#set $staticmethod = '[@staticmethod](http://docs.python.org/library/functions.html#staticmethod)' +#set $classmethod = '[@classmethod](http://docs.python.org/library/functions.html#classmethod)' + +Refer the Python's documentation if you're unfamiliar with either +$staticmethod or $classmethod and their uses in Python, as they +pertain to their uses in Cheetah as well. Using $staticmethod it's +trivial to create *utility templates* which are common when using +Cheetah for web development. These *utility templates* might contain +a number of small functions which generate useful snippets of markup. + +For example: + + \#def copyright() + \#import time + © CheetahCorp, Inc. \$time.strftime('%Y', time.gmtime()) + \#end def +**Figure 1, util.tmpl** + +Prior to version **v2.2.0** of Cheetah, there wasn't really an easy means +of filling templates with bunches of these small utility functions. In +**v2.2.0** however, you can decorate these methods with `\#@staticmethod` +and use "proper" Python syntax for calling them, **fig 1** revisited: + + \#@staticmethod + \#def copyright() + \#import time + © CheetahCorp, Inc. \$time.strftime('%Y', time.gmtime()) + \#end def +**Figure 1.1, util.tmpl** + +With the addition of the $staticmethod decorator, the `copyright()` +function can now be used without instantiating an instance of the `util` +template class. In effect: + + \#from util import util + + <strong>This is my page</strong> + <br/> + <hr noshade/> + \$util.copyright() +**Figure 2, index.tmpl** + + +This approach is however no means to structure anything complex, +$staticmethod and $classmethod use in Cheetah is not meant as a +replacement for properly structured class hierarchies (which +Cheetah supports). That said if you are building a web application +$staticmethod/$classmethod are quite useful for the little snippets +of markup, etc that are needed (Google AdSense blocks, footers, +banners, etc). diff --git a/recipes/content/Basic_Inheritance.html b/recipes/content/Basic_Inheritance.html index 213263c..1331ecd 100644 --- a/recipes/content/Basic_Inheritance.html +++ b/recipes/content/Basic_Inheritance.html @@ -399,7 +399,7 @@ implicitly subclassing from <code>Cheetah.Template.Template</code></p> ## The rest of my recipe template would be below </code></pre> <p><strong>Figure 2. recipe1.tmpl</strong></p> -<p><span style="float: right; clear: both;"><em>Last edited: Sat May 30 12:05:40 2009 </em></span></p> +<p><span style="float: right; clear: both;"><em>Last edited: Sun May 31 18:40:24 2009 </em></span></p> </div> <div id="rightcontent"> diff --git a/recipes/content/Precompiled_Templates.html b/recipes/content/Precompiled_Templates.html index 5e2c213..08ed9c2 100644 --- a/recipes/content/Precompiled_Templates.html +++ b/recipes/content/Precompiled_Templates.html @@ -396,7 +396,7 @@ method" for executing the Cheetah template. You can adjust the example above in results = getattr(tmpl, mainMethod)() </code></pre> <p><strong>Figure 3. Dynamic runner.py</strong></p> -<p><span style="float: right; clear: both;"><em>Last edited: Sat May 30 12:05:40 2009 </em></span></p> +<p><span style="float: right; clear: both;"><em>Last edited: Sun May 31 18:40:24 2009 </em></span></p> </div> <div id="rightcontent"> diff --git a/recipes/content/Writing_A_Recipe.html b/recipes/content/Writing_A_Recipe.html index ca30611..e78b003 100644 --- a/recipes/content/Writing_A_Recipe.html +++ b/recipes/content/Writing_A_Recipe.html @@ -353,7 +353,7 @@ border:dashed 1px #888; padding:6px; font-size:1.1em; color:#fff;} <div id="centercontent"> <h1>Writing a "Recipe"</h1> <p>I'll fill this out soon enough :)</p> -<p><span style="float: right; clear: both;"><em>Last edited: Sat May 30 12:05:40 2009 </em></span></p> +<p><span style="float: right; clear: both;"><em>Last edited: Sun May 31 18:40:24 2009 </em></span></p> </div> <div id="rightcontent"> diff --git a/recipes/index.html b/recipes/index.html index a7d34b6..4542cca 100644 --- a/recipes/index.html +++ b/recipes/index.html @@ -357,6 +357,7 @@ border:dashed 1px #888; padding:6px; font-size:1.1em; color:#fff;} <li><a href="content/Precompiled_Templates.html">Precompiled Templates</a></li> <li><a href="content/Writing_A_Recipe.html">Writing A Recipe</a></li> <li><a href="content/Basic_Inheritance.html">Basic Inheritance</a></li> +<li><a href="content/@staticmethod_and_@classmethod.html">@staticmethod and @classmethod</a></li> </ul> <p>If you're really hungry for some Cheetah recipies, you can check out the out-of-date <a href="http://wiki.cheetahtemplate.org/cheetah-recipes.html">Cheetah recipes page</a> |