diff options
Diffstat (limited to 'recipes/content/Basic_Inheritance.html')
-rw-r--r-- | recipes/content/Basic_Inheritance.html | 441 |
1 files changed, 0 insertions, 441 deletions
diff --git a/recipes/content/Basic_Inheritance.html b/recipes/content/Basic_Inheritance.html deleted file mode 100644 index 1331ecd..0000000 --- a/recipes/content/Basic_Inheritance.html +++ /dev/null @@ -1,441 +0,0 @@ - - - -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> -<html> - <head> - <title>Community Cheetah - The Python-Powered Template Engine - Basic_Inheritance</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>Basic Inheritance</h1> -<h2>Introduction</h2> -<p>Cheetah, like Python, is an object-oriented language if you so choose to -use it in that fashion. That is to say that you can use Cheetah in with -object-oriented principles <em>or</em> you can use Cheetah in a strictly functional -sense, like Python, Cheetah does not place restrictions on these barriers.</p> -<p>While Cheetah is not strictly Python, it was designed as such to interoperate, -particularly with the notion of classes, with Python itself. In effect you can -define Python classes that inherit and extend from Cheetah-derived classes and -vice versa. For this, Cheetah defines a few <strong>directives</strong> (denoted with the <code>#</code> -hash-mark) that are of some help, the most important one being the <code>#extends</code> -directive, with others playing important roles like <code>#import</code>, <code>#attr</code> and <code>#super</code></p> -<p>In this recipe/tutorial I intend to explain and define a few key inheritance -patterns with Cheetah, being:</p> -<ul> -<li>A Cheetah Template inheriting from Python</li> -<li>Python inheriting from a Cheetah Template</li> -<li>Cheetah Templates and "<em>mixins</em>"</li> -</ul> -<p>This document also operates on the assumption that the reader is at least -somewhat familiar with the basic tenets of object-oriented programming in -Python.</p> -<h2>Cheetah inheriting from Python</h2> -<p>Whether or not you are aware of it, Cheetah templates are always inheriting from -a Python class by default. Unless otherwise denoted, Cheetah templates are compiled -to Python classes that subclass from the <code>Cheetah.Template.Template</code> class.</p> -<p>What if you would like to introduce your own Template base class? Easily acheived by -defining your own Template class in a Python module, for example:</p> -<pre><code>import Cheetah.Template - -class CookbookTemplate(Cheetah.Template.Template): - _page = 'Cookbook' - author = 'R. Tyler Ballance' - def pageName(self): - return self._page or 'Unknown' -</code></pre> -<p><strong>Figure 1. cookbook.py</strong></p> -<p>For this example, I want all my subclasses of the <code>CookbookTemplate</code> to define a -page author which will be used in some shared rendering code, to accomplish this -my templates will need to subclass from <code>CookbookTemplate</code> explicitly instead of -implicitly subclassing from <code>Cheetah.Template.Template</code></p> -<pre><code>#import cookbook -#extends cookbook.CookbookTemplate -#attr author = 'Tavis Rudd' - -## 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: 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> - - - - - - - - |