ca20cf1cb90b

garter: Update documentation.
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Tue, 04 May 2010 22:59:21 -0400
parents 50444dfe7265
children 388fd65c29fc
branches/tags (none)
files garter/_list.html garter/csrf.html garter/index.html garter/lesscss.html garter/media/_list.html garter/media/css/_list.html garter/media/css/garter.css garter/media/css/index.html garter/media/css/pygments.css garter/media/css/style.css garter/media/images/_list.html garter/media/images/index.html garter/media/images/logo.png garter/media/index.html garter/media/sass/_list.html garter/media/sass/index.html garter/media/sass/style.sass garter/urls.html

Changes

--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/_list.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+      xmlns:dc="http://purl.org/dc/elements/1.1/"
+      xmlns:foaf="http://xmlns.com/foaf/0.1/">
+  
+  <head>
+    
+    
+      
+        <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+      
+      
+      <title>
+        Garter » 
+        ls /
+      </title>
+      
+      
+        <!-- YUI CSS reset, fonts, base -->
+        <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+        
+        <link rel="stylesheet" type="text/css" href="media/css/style.css" media="screen, projection" />
+        <link rel="stylesheet" type="text/css" href="media/css/pygments.css" media="screen, projection" />
+      
+      
+      
+      
+      
+        
+      
+    
+  </head>
+  
+  <body class="listing">
+    
+      
+      
+        
+          
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="./">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 last">
+          
+            <span class="list-crumb">list</span>
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+        
+      
+      
+      <div id="content">
+        
+        
+        
+        
+  <h1><code>ls /</code></h1>
+
+  
+  <h2>Directories</h2>
+
+  <table id="subdirs">
+    
+      <tr>
+        <td class="name">
+          <a class="dirlink" href="media/">
+            media/
+          </a>
+        </td>
+      </tr>
+    
+  </table>
+  
+
+  
+
+  
+
+        
+        
+        
+        
+        <hr class="clear" />
+      </div> <!-- div#content -->
+      
+      
+      <div id="footer">
+        <p>
+          
+            Garter —
+          
+          Powered by <a href="http://markdoc.org/">Markdoc</a>.
+        </p>
+      </div>
+      
+    
+    
+    
+    <hr class="clear" />
+  </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/csrf.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                Csrf
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="media/css/style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="media/css/pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="media/css/garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body >
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="./">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 last">
+          
+            csrf
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                <h1><a href="">CSRF Protection</a></h1>
+
+<p>The internet is a dangerous place.  One common type of attack your site's users can fall victim to is <a href="http://www.squarefree.com/securitytips/web-developers.html#CSRF">Cross-site Request Forgery</a> attacks.</p>
+<p>Garter provides a simple way to guard against these attacks, based on <a href="http://flask.pocoo.org/snippets/3/">this snippet</a> from the Flask snippet site.</p>
+<p>To activate CSRF protection for your Flask application you need to do two things.  First, call Garter's <code>csrf</code> function with your Flask app as a parameter:</p>
+<div class="codehilite"><pre><span class="kn">from</span> <span class="nn">garter.csrf</span> <span class="kn">import</span> <span class="n">csrf</span>
+<span class="n">csrf</span><span class="p">(</span><span class="n">app</span><span class="p">)</span>
+</pre></div>
+
+
+<p>Once you do that you'll need to add a CSRF token to every form on your site that makes an HTTP <code>POST</code> request:</p>
+<div class="codehilite"><pre><span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">&quot;hidden&quot;</span> <span class="na">value=</span><span class="s">&quot;{{ csrf_token() }}&quot;</span><span class="nt">&gt;</span>
+</pre></div>
+
+
+<p>If you have certain views that need to be excluded from this protection (perhaps they receive <code>POST</code> requests from a third-party site) you can use the <code>csrf_exempt</code> decorator to disable protection:</p>
+<div class="codehilite"><pre><span class="kn">from</span> <span class="nn">garter.csrf</span> <span class="kn">import</span> <span class="n">csrf</span><span class="p">,</span> <span class="n">csrf_exempt</span>
+
+<span class="nd">@csrf_exempt</span>
+<span class="nd">@route</span><span class="p">(</span><span class="s">&#39;/foo/&#39;</span><span class="p">)</span>
+<span class="k">def</span> <span class="nf">my_receiving_view</span><span class="p">():</span>
+    <span class="c"># ...</span>
+
+<span class="n">csrf</span><span class="p">(</span><span class="n">app</span><span class="p">)</span>
+</pre></div>
+
+
+<p>If for some reason you want to know <em>when</em> a CSRF attack happens, you can pass a function to the <code>csrf</code> call and it will be called whenever Garter detects an attack:</p>
+<div class="codehilite"><pre><span class="kn">from</span> <span class="nn">garter.csrf</span> <span class="kn">import</span> <span class="n">csrf</span>
+
+<span class="n">attacks</span> <span class="o">=</span> <span class="mi">0</span>
+<span class="k">def</span> <span class="nf">count_csrf_attacks</span><span class="p">(</span><span class="n">endpoint</span><span class="p">,</span> <span class="n">arguments</span><span class="p">):</span>
+    <span class="n">attacks</span> <span class="o">+=</span> <span class="mi">1</span>
+
+<span class="n">csrf</span><span class="p">(</span><span class="n">app</span><span class="p">,</span> <span class="n">on_csrf</span><span class="o">=</span><span class="n">count_csrf_attacks</span><span class="p">)</span>
+</pre></div>
+
+
+<p>This function must take two parameters:</p>
+<ul>
+<li><strong>endpoint</strong> - A string representing the view that would normally handle
+  this request.</li>
+<li><strong>arguments</strong> - The arguments that would normally be passed (if any) to that
+  view.</li>
+</ul>
+<p>You can use this function to do anything you like; counting attacks is just a simple example.</p>
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/index.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                Garter
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="media/css/style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="media/css/pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="media/css/garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body >
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 last">
+          
+            index
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                <h1 id="splash-logo">Garter</h1>
+
+<div id="logo"><a href=""><img src="/media/images/logo.png"/></a></div>
+
+<p><a href="http://sjl.bitbucket.org/garter/">Garter</a> is a collection of small utilities that makes creating webapps with
+<a href="http://flask.pocoo.org/">Flask</a> easier.</p>
+<p>Flask is a wonderful little web framework, but sometimes you need
+<a href="http://en.wikipedia.org/wiki/File:Mlle._Rhea_Flask_LC-USZ62-99952.jpg">a garter</a> to get your webapp working in the big old <a href="http://en.wikipedia.org/wiki/Speakeasy">speakeasy</a> that
+is the Internet.</p>
+<div class="toc">
+<ul>
+<li><a href="#installing">Installing</a></li>
+<li><a href="#using">Using</a><ul>
+<li><a href="#csrf-protectioncsrf"><a href="csrf.html">CSRF Protection</a></a></li>
+<li><a href="#lesscss-supportlesscss"><a href="lesscss.html">LessCSS Support</a></a></li>
+<li><a href="#url-convenience-functionsurls"><a href="urls.html">URL Convenience Functions</a></a></li>
+</ul>
+</li>
+<li><a href="#contributing">Contributing</a></li>
+</ul>
+</div>
+<h2 id="installing">Installing</h2>
+<p>Use <a href="http://pip.openplans.org/">pip</a> to install Garter:</p>
+<div class="codehilite"><pre>pip install -e hg+http://bitbucket.org/sjl/garter/#egg=garter
+</pre></div>
+
+
+<p>Prefer <a href="http://git-scm.com/">git</a> to <a href="http://hg-scm.org/">Mercurial</a>?</p>
+<div class="codehilite"><pre>pip install -e git+http://github.com/sjl/garter.git#egg=garter
+</pre></div>
+
+
+<p>You can install it without pip, but why would you want to?</p>
+<div class="codehilite"><pre>hg clone http://bitbucket.org/sjl/garter/
+cd garter
+python setup.py install
+</pre></div>
+
+
+<h2 id="using">Using</h2>
+<p>Garter contains a bunch of useful little functions. Use the ones you need,
+ignore the rest.</p>
+<h3 id="csrf-protectioncsrf"><a href="csrf.html">CSRF Protection</a></h3>
+<h3 id="lesscss-supportlesscss"><a href="lesscss.html">LessCSS Support</a></h3>
+<h3 id="url-convenience-functionsurls"><a href="urls.html">URL Convenience Functions</a></h3>
+<h2 id="contributing">Contributing</h2>
+<p>Want to contribute your own useful functions?  Fork the
+<a href="http://bitbucket.org/sjl/garter/">Mercurial repository</a> or <a href="http://github.com/sjl/garter/">git repository</a> and send a
+pull request.</p>
+<p>Make sure you update the documentation to mention your changes!</p>
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/lesscss.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                Lesscss
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="media/css/style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="media/css/pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="media/css/garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body >
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="./">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 last">
+          
+            lesscss
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                <h1><a href="">LessCSS Support</a></h1>
+
+<p>If you use <a href="http://lesscss.org/">LessCSS</a> to stay sane while writing CSS, you probably know it
+can be a pain to run <code>lessc --watch static/style.less</code> every time you want to
+work on your styles. It gets even worse when you have more than one <code>.less</code>
+file.</p>
+<p>Garter provides a function that will automatically re-render <code>.less</code> files into CSS before each request if they've changed.</p>
+<p>You can activate it by calling the <code>lesscss</code> function with your Flask app as a parameter:</p>
+<div class="codehilite"><pre><span class="kn">from</span> <span class="nn">garter.lesscss</span> <span class="kn">import</span> <span class="n">lesscss</span>
+<span class="n">lesscss</span><span class="p">(</span><span class="n">app</span><span class="p">)</span>
+</pre></div>
+
+
+<p>This will watch your app's static media directory and automatically render <code>.less</code> files into <code>.css</code> files in the same (sub)directory.</p>
+<p>When you deploy your app you might not want to accept the overhead of checking the modification time of your <code>.less</code> and <code>.css</code> files on each request.  A simple way to avoid this is wrapping the <code>lesscss</code> call in an <code>if</code> statement:</p>
+<div class="codehilite"><pre><span class="k">if</span> <span class="n">app</span><span class="o">.</span><span class="n">debug</span><span class="p">:</span>
+    <span class="kn">from</span> <span class="nn">garter.lesscss</span> <span class="kn">import</span> <span class="n">lesscss</span>
+    <span class="n">lesscss</span><span class="p">(</span><span class="n">app</span><span class="p">)</span>
+</pre></div>
+
+
+<p>If you do this <em>you'll</em> be responsible for rendering the <code>.less</code> files into CSS when you deploy in non-debug mode to your production server.</p>
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/_list.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                ls /media
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="css/style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="css/pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="css/garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body class="listing">
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="../">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 not-last">
+          
+            <a href="./">media</a>
+          
+        </li>
+      
+        <li class="crumb-2 last">
+          
+            <span class="list-crumb">list</span>
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                
+  <h1><code>ls /media</code></h1>
+
+  
+  <h2>Directories</h2>
+
+  <table id="subdirs">
+    
+      <tr>
+        <td class="name">
+          <a class="dirlink" href="css/">
+            css/
+          </a>
+        </td>
+      </tr>
+    
+      <tr>
+        <td class="name">
+          <a class="dirlink" href="images/">
+            images/
+          </a>
+        </td>
+      </tr>
+    
+      <tr>
+        <td class="name">
+          <a class="dirlink" href="sass/">
+            sass/
+          </a>
+        </td>
+      </tr>
+    
+  </table>
+  
+
+  
+
+  
+
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/css/_list.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                ls /media/css
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body class="listing">
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="../../">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 not-last">
+          
+            <a href="../">media</a>
+          
+        </li>
+      
+        <li class="crumb-2 not-last">
+          
+            <a href="./">css</a>
+          
+        </li>
+      
+        <li class="crumb-3 last">
+          
+            <span class="list-crumb">list</span>
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                
+  <h1><code>ls /media/css</code></h1>
+
+  
+
+  
+
+  
+  <h2>Files</h2>
+
+  <table id="files">
+    
+      <tr>
+        <td class="size">1K</td>
+        <td class="name">
+          <a href="garter.css">
+            <code>garter.css</code>
+          </a>
+        </td>
+      </tr>
+    
+      <tr>
+        <td class="size">4K</td>
+        <td class="name">
+          <a href="pygments.css">
+            <code>pygments.css</code>
+          </a>
+        </td>
+      </tr>
+    
+      <tr>
+        <td class="size">4K</td>
+        <td class="name">
+          <a href="style.css">
+            <code>style.css</code>
+          </a>
+        </td>
+      </tr>
+    
+  </table>
+  
+
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/css/garter.css	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,83 @@
+/* @override http://localhost:8008/media/css/garter.css */
+
+html, body {
+    font-family: "Palatino", "Palatino Linotype", "Times", serif;
+    font-size:  16px;
+}
+body {
+    margin-bottom: 5em;
+}
+
+ol#breadcrumbs {
+    height: 2em;
+}
+ol#breadcrumbs li {
+    font-size: 16px !important;
+    line-height: 2em;
+}
+
+div.toc ul {
+    margin: 0;
+}
+div.toc ul li {
+    list-style-type: none;
+}
+div.toc ul ul {
+    margin-left:  1.5em;
+}
+
+a:link, a:visited, a:active {
+    color: #e51b52;
+    text-decoration: none;
+}
+a:hover {
+    text-decoration: underline;
+}
+h1 a:link, h1 a:visited, h1 a:active {
+    color: black;
+}
+h1 a:hover {
+    color: #e51b52;
+    text-decoration: none;
+}
+
+h1 {
+    font-size: 42px;
+}
+h2 {
+    font-size: 26px;
+}
+h3 {
+    font-size: 18px;
+}
+
+code, pre {
+    font-family: "Monaco", "Menlo", "Consolas", "Courier New", monospaced;
+    font-size: 12px;
+    line-height: 1.75em;
+}
+div.codehilite {
+    margin: 0;
+    padding: 5px 36px;
+    margin-left: 0px;
+    margin-bottom: 1.4em;
+    width: 560px;
+    background-color: #f5f5f5;
+    border: 1px dotted #eee;
+    border-right: none;
+}
+
+div#footer {
+    font-size: 14px;
+    font-style: italic;
+    text-align: center;
+    text-transform: none;
+}
+
+h1#splash-logo {
+    display: none;
+}
+div#logo {
+    text-align: center;
+    margin: 8px 0 16px;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/css/index.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                ls /media/css
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body class="listing">
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="../../">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 not-last">
+          
+            <a href="../">media</a>
+          
+        </li>
+      
+        <li class="crumb-2 not-last">
+          
+            <a href="./">css</a>
+          
+        </li>
+      
+        <li class="crumb-3 last">
+          
+            <span class="list-crumb">list</span>
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                
+  <h1><code>ls /media/css</code></h1>
+
+  
+
+  
+
+  
+  <h2>Files</h2>
+
+  <table id="files">
+    
+      <tr>
+        <td class="size">1K</td>
+        <td class="name">
+          <a href="garter.css">
+            <code>garter.css</code>
+          </a>
+        </td>
+      </tr>
+    
+      <tr>
+        <td class="size">4K</td>
+        <td class="name">
+          <a href="pygments.css">
+            <code>pygments.css</code>
+          </a>
+        </td>
+      </tr>
+    
+      <tr>
+        <td class="size">4K</td>
+        <td class="name">
+          <a href="style.css">
+            <code>style.css</code>
+          </a>
+        </td>
+      </tr>
+    
+  </table>
+  
+
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/css/pygments.css	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,60 @@
+.codehilite  { background: #ffffff; }
+.codehilite .c { color: #999988; font-style: italic } /* Comment */
+.codehilite .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.codehilite .k { font-weight: bold } /* Keyword */
+.codehilite .o { font-weight: bold } /* Operator */
+.codehilite .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.codehilite .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
+.codehilite .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.codehilite .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.codehilite .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.codehilite .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
+.codehilite .ge { font-style: italic } /* Generic.Emph */
+.codehilite .gr { color: #aa0000 } /* Generic.Error */
+.codehilite .gh { color: #999999 } /* Generic.Heading */
+.codehilite .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.codehilite .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
+.codehilite .go { color: #888888 } /* Generic.Output */
+.codehilite .gp { color: #555555 } /* Generic.Prompt */
+.codehilite .gs { font-weight: bold } /* Generic.Strong */
+.codehilite .gu { color: #aaaaaa } /* Generic.Subheading */
+.codehilite .gt { color: #aa0000 } /* Generic.Traceback */
+.codehilite .kc { font-weight: bold } /* Keyword.Constant */
+.codehilite .kd { font-weight: bold } /* Keyword.Declaration */
+.codehilite .kp { font-weight: bold } /* Keyword.Pseudo */
+.codehilite .kr { font-weight: bold } /* Keyword.Reserved */
+.codehilite .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.codehilite .m { color: #009999 } /* Literal.Number */
+.codehilite .s { color: #d14 } /* Literal.String */
+.codehilite .na { color: #008080 } /* Name.Attribute */
+.codehilite .nb { color: #0086B3 } /* Name.Builtin */
+.codehilite .nc { color: #445588; font-weight: bold } /* Name.Class */
+.codehilite .no { color: #008080 } /* Name.Constant */
+.codehilite .ni { color: #800080 } /* Name.Entity */
+.codehilite .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.codehilite .nf { color: #990000; font-weight: bold } /* Name.Function */
+.codehilite .nn { color: #555555 } /* Name.Namespace */
+.codehilite .nt { color: #000080 } /* Name.Tag */
+.codehilite .nv { color: #008080 } /* Name.Variable */
+.codehilite .ow { font-weight: bold } /* Operator.Word */
+.codehilite .w { color: #bbbbbb } /* Text.Whitespace */
+.codehilite .mf { color: #009999 } /* Literal.Number.Float */
+.codehilite .mh { color: #009999 } /* Literal.Number.Hex */
+.codehilite .mi { color: #009999 } /* Literal.Number.Integer */
+.codehilite .mo { color: #009999 } /* Literal.Number.Oct */
+.codehilite .sb { color: #d14 } /* Literal.String.Backtick */
+.codehilite .sc { color: #d14 } /* Literal.String.Char */
+.codehilite .sd { color: #d14 } /* Literal.String.Doc */
+.codehilite .s2 { color: #d14 } /* Literal.String.Double */
+.codehilite .se { color: #d14 } /* Literal.String.Escape */
+.codehilite .sh { color: #d14 } /* Literal.String.Heredoc */
+.codehilite .si { color: #d14 } /* Literal.String.Interpol */
+.codehilite .sx { color: #d14 } /* Literal.String.Other */
+.codehilite .sr { color: #009926 } /* Literal.String.Regex */
+.codehilite .s1 { color: #d14 } /* Literal.String.Single */
+.codehilite .ss { color: #990073 } /* Literal.String.Symbol */
+.codehilite .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.codehilite .vc { color: #008080 } /* Name.Variable.Class */
+.codehilite .vg { color: #008080 } /* Name.Variable.Global */
+.codehilite .vi { color: #008080 } /* Name.Variable.Instance */
+.codehilite .il { color: #009999 } /* Literal.Number.Integer.Long */
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/css/style.css	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,178 @@
+html {
+  background-color: #f6f6f6; }
+
+body {
+  background-color: white;
+  margin: 0 auto;
+  width: 650px; }
+  body #breadcrumbs, body #content, body #footer {
+    background-color: white;
+    clear: both;
+    float: left;
+    overflow: hidden;
+    padding: 0 20px;
+    width: 610px; }
+  body #breadcrumbs {
+    border-bottom: 2px solid #f6f6f6;
+    height: 28px;
+    margin: 0;
+    padding: 0;
+    width: 650px; }
+    body #breadcrumbs li {
+      float: left;
+      list-style: none;
+      margin: 0;
+      padding: 0; }
+      body #breadcrumbs li a {
+        display: block;
+        float: left;
+        padding: 0 8px; }
+      body #breadcrumbs li.last {
+        padding: 0 8px; }
+      body #breadcrumbs li.not-last:after {
+        content: "»";
+        float: right; }
+  body #footer {
+    border-top: 8px solid #f6f6f6;
+    padding-top: 13px; }
+  body .clear {
+    clear: both;
+    border-width: 0;
+    margin: 0;
+    visibility: hidden; }
+
+body.listing table#pages tr, body.listing table#subdirs tr, body.listing table#files tr {
+  border-bottom: 1px solid #777;
+  border-top: 1px solid #777; }
+body.listing table#pages td, body.listing table#subdirs td, body.listing table#files td {
+  border: none; }
+  body.listing table#pages td.size, body.listing table#subdirs td.size, body.listing table#files td.size {
+    background-color: #f6f6f6; }
+  body.listing table#pages td.name, body.listing table#subdirs td.name, body.listing table#files td.name {
+    padding: 0; }
+    body.listing table#pages td.name a, body.listing table#subdirs td.name a, body.listing table#files td.name a {
+      display: block;
+      margin: 0;
+      padding: 4px 8px; }
+
+blockquote {
+  background-color: #f6f6f6;
+  padding: 13px;
+  padding-bottom: 1px; }
+
+hr {
+  border-style: solid;
+  border: none;
+  border-top: 1px solid #777;
+  margin: 28px 0; }
+
+dl {
+  margin-left: 0; }
+  dl dd {
+    margin-bottom: 13px;
+    margin-left: 13px; }
+
+ul {
+  margin-top: 0; }
+  ul li {
+    list-style: square outside; }
+  ul ul {
+    margin-bottom: 0; }
+
+pre {
+  border-left: 1px solid gray;
+  margin-bottom: 13px;
+  margin-left: 30px;
+  padding-left: 12px; }
+
+.codehilite {
+  border-left: 1px solid gray;
+  margin-bottom: 13px;
+  margin-left: 30px;
+  padding-left: 12px; }
+  .codehilite pre {
+    border: none;
+    margin: 0;
+    padding: 0; }
+
+.codehilitetable {
+  margin-left: 0;
+  padding-left: 0; }
+  .codehilitetable tr td {
+    border: none;
+    padding: 3px 5px 0 5px; }
+    .codehilitetable tr td.linenos {
+      background-color: #f6f6f6;
+      border-right: 1px solid gray;
+      margin: 0;
+      padding-right: 6px;
+      text-align: right;
+      width: 19px; }
+      .codehilitetable tr td.linenos .linenodiv pre {
+        border: none;
+        margin: 0;
+        padding: 0; }
+    .codehilitetable tr td.code {
+      margin: 0;
+      padding-left: 12px; }
+      .codehilitetable tr td.code .codehilite {
+        border: none;
+        margin: 0;
+        padding: 0; }
+
+body {
+  font-family: 'Helvetica Neue', Helvetica, Arial, Geneva, sans-serif;
+  line-height: 21px; }
+  body #breadcrumbs li {
+    color: #aaa;
+    font-size: 13px;
+    font-weight: bold;
+    line-height: 28px; }
+    body #breadcrumbs li a {
+      text-decoration: none; }
+    body #breadcrumbs li .list-crumb {
+      font-weight: normal; }
+  body #footer {
+    color: #777;
+    font-size: 13px;
+    text-transform: lowercase; }
+  body.listing table#pages td.size, body.listing table#subdirs td.size {
+    font-family: Menlo, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, 'Courier 10 Pitch', 'Courier New', monospace;
+    text-align: right; }
+  body.listing table#subdirs td.name {
+    font-family: Courier, 'Courier 10 Pitch', 'Courier New', monospace; }
+
+h1, h2, h3, h4, h5, h6 {
+  line-height: 21px; }
+
+h1 {
+  font-size: 21px; }
+
+h2 {
+  font-size: 18px; }
+
+h3 {
+  font-size: 15px; }
+
+h4, h5, h6 {
+  font-size: 13px; }
+
+a {
+  color: #990000;
+  text-decoration: none; }
+  a:hover {
+    color: #4c0000; }
+  a[href^="http:"] {
+    text-decoration: underline; }
+
+dl dt {
+  font-weight: bold; }
+
+code {
+  font-family: Courier, 'Courier 10 Pitch', 'Courier New', monospace;
+  line-height: 18px; }
+
+pre {
+  font-family: Menlo, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, 'Courier 10 Pitch', 'Courier New', monospace;
+  font-size: 11px;
+  line-height: 18px; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/images/_list.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                ls /media/images
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="../css/style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="../css/pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="../css/garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body class="listing">
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="../../">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 not-last">
+          
+            <a href="../">media</a>
+          
+        </li>
+      
+        <li class="crumb-2 not-last">
+          
+            <a href="./">images</a>
+          
+        </li>
+      
+        <li class="crumb-3 last">
+          
+            <span class="list-crumb">list</span>
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                
+  <h1><code>ls /media/images</code></h1>
+
+  
+
+  
+
+  
+  <h2>Files</h2>
+
+  <table id="files">
+    
+      <tr>
+        <td class="size">13K</td>
+        <td class="name">
+          <a href="logo.png">
+            <code>logo.png</code>
+          </a>
+        </td>
+      </tr>
+    
+  </table>
+  
+
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/images/index.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                ls /media/images
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="../css/style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="../css/pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="../css/garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body class="listing">
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="../../">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 not-last">
+          
+            <a href="../">media</a>
+          
+        </li>
+      
+        <li class="crumb-2 not-last">
+          
+            <a href="./">images</a>
+          
+        </li>
+      
+        <li class="crumb-3 last">
+          
+            <span class="list-crumb">list</span>
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                
+  <h1><code>ls /media/images</code></h1>
+
+  
+
+  
+
+  
+  <h2>Files</h2>
+
+  <table id="files">
+    
+      <tr>
+        <td class="size">13K</td>
+        <td class="name">
+          <a href="logo.png">
+            <code>logo.png</code>
+          </a>
+        </td>
+      </tr>
+    
+  </table>
+  
+
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
Binary file garter/media/images/logo.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/index.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                ls /media
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="css/style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="css/pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="css/garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body class="listing">
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="../">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 not-last">
+          
+            <a href="./">media</a>
+          
+        </li>
+      
+        <li class="crumb-2 last">
+          
+            <span class="list-crumb">list</span>
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                
+  <h1><code>ls /media</code></h1>
+
+  
+  <h2>Directories</h2>
+
+  <table id="subdirs">
+    
+      <tr>
+        <td class="name">
+          <a class="dirlink" href="css/">
+            css/
+          </a>
+        </td>
+      </tr>
+    
+      <tr>
+        <td class="name">
+          <a class="dirlink" href="images/">
+            images/
+          </a>
+        </td>
+      </tr>
+    
+      <tr>
+        <td class="name">
+          <a class="dirlink" href="sass/">
+            sass/
+          </a>
+        </td>
+      </tr>
+    
+  </table>
+  
+
+  
+
+  
+
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/sass/_list.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                ls /media/sass
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="../css/style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="../css/pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="../css/garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body class="listing">
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="../../">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 not-last">
+          
+            <a href="../">media</a>
+          
+        </li>
+      
+        <li class="crumb-2 not-last">
+          
+            <a href="./">sass</a>
+          
+        </li>
+      
+        <li class="crumb-3 last">
+          
+            <span class="list-crumb">list</span>
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                
+  <h1><code>ls /media/sass</code></h1>
+
+  
+
+  
+
+  
+  <h2>Files</h2>
+
+  <table id="files">
+    
+      <tr>
+        <td class="size">46B</td>
+        <td class="name">
+          <a href="style.sass">
+            <code>style.sass</code>
+          </a>
+        </td>
+      </tr>
+    
+  </table>
+  
+
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/sass/index.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                ls /media/sass
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="../css/style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="../css/pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="../css/garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body class="listing">
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="../../">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 not-last">
+          
+            <a href="../">media</a>
+          
+        </li>
+      
+        <li class="crumb-2 not-last">
+          
+            <a href="./">sass</a>
+          
+        </li>
+      
+        <li class="crumb-3 last">
+          
+            <span class="list-crumb">list</span>
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                
+  <h1><code>ls /media/sass</code></h1>
+
+  
+
+  
+
+  
+  <h2>Files</h2>
+
+  <table id="files">
+    
+      <tr>
+        <td class="size">46B</td>
+        <td class="name">
+          <a href="style.sass">
+            <code>style.sass</code>
+          </a>
+        </td>
+      </tr>
+    
+  </table>
+  
+
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/media/sass/style.sass	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,2 @@
+@import _layout.sass
+@import _typography.sass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/garter/urls.html	Tue May 04 22:59:21 2010 -0400
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
+    "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+          xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+          xmlns:dc="http://purl.org/dc/elements/1.1/"
+          xmlns:foaf="http://xmlns.com/foaf/0.1/">
+      
+      <head>
+        
+            
+            
+                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
+            
+            
+            <title>
+                Garter »
+                Urls
+            </title>
+            
+            
+                <!-- YUI CSS reset, fonts, base -->
+                <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?3.0.0/build/cssreset/reset-min.css&amp;3.0.0/build/cssfonts/fonts-min.css&amp;3.0.0/build/cssbase/base-min.css" media="screen, projection" />
+                
+                <link rel="stylesheet" type="text/css" href="media/css/style.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="media/css/pygments.css" media="screen, projection" />
+                <link rel="stylesheet" type="text/css" href="media/css/garter.css" media="screen, projection" />
+            
+            
+            
+            
+        
+    </head>
+    
+    <body >
+        
+            
+                
+                    
+  
+    <ol id="breadcrumbs">
+      
+        <li class="crumb-0 not-last">
+          
+            <a href="./">index</a>
+          
+        </li>
+      
+        <li class="crumb-1 last">
+          
+            urls
+          
+        </li>
+      
+    </ol> <!-- ol#breadcrumbs -->
+  
+
+                
+            
+            
+            <div id="content">
+                
+                
+                
+                <h1><a href="">URL Convenience Functions</a></h1>
+
+<p>URLs are a pain.  Garter tries to help by providing some useful functions to make working with URLs easier.</p>
+<div class="toc">
+<ul>
+<li><a href="#permalink">permalink</a></li>
+</ul>
+</div>
+<h2 id="permalink">permalink</h2>
+<p>The <code>permalink</code> decorator was taken from
+<a href="http://flask.pocoo.org/snippets/6/">this snippet</a> on the Flask site. It's used to wrap functions so they only need to return the arguments to Flask's <code>url_for</code> function, instead of calling the function themselves.</p>
+<p>For example, say you have several classes that represents items on your site:</p>
+<div class="codehilite"><pre><span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">url_for</span>
+
+<span class="k">class</span> <span class="nc">Event</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event_id</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">event_id</span> <span class="o">=</span> <span class="n">event_id</span>
+
+    <span class="k">def</span> <span class="nf">link</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="n">url_for</span><span class="p">(</span><span class="s">&#39;event&#39;</span><span class="p">,</span> <span class="n">event_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">event_id</span><span class="p">)</span>
+
+<span class="k">class</span> <span class="nc">User</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">username</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">username</span> <span class="o">=</span> <span class="n">username</span>
+
+    <span class="k">def</span> <span class="nf">link</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="n">url_for</span><span class="p">(</span><span class="s">&#39;profile&#39;</span><span class="p">,</span> <span class="n">username</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">username</span><span class="p">)</span>
+</pre></div>
+
+
+<p>Using the permalink decorator can make the <code>link</code> functions a bit cleaner:</p>
+<div class="codehilite"><pre><span class="kn">from</span> <span class="nn">garter.urls</span> <span class="kn">import</span> <span class="n">permalink</span>
+
+<span class="k">class</span> <span class="nc">Event</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event_id</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">event_id</span> <span class="o">=</span> <span class="n">event_id</span>
+
+    <span class="nd">@permalink</span>
+    <span class="k">def</span> <span class="nf">link</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="s">&#39;event&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="s">&#39;event_id&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_id</span> <span class="p">}</span>
+
+<span class="k">class</span> <span class="nc">User</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">username</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span class="n">username</span> <span class="o">=</span> <span class="n">username</span>
+
+    <span class="nd">@permalink</span>
+    <span class="k">def</span> <span class="nf">link</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="k">return</span> <span class="s">&#39;profile&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="s">&#39;username&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">username</span> <span class="p">}</span>
+</pre></div>
+                
+                
+                
+                
+                <hr class="clear" />
+            </div>
+            
+            
+                <div id="footer">
+                    <p>
+                        <a href="http://sjl.bitbucket.org/garter/">Garter</a>
+                        was lovingly crafted by
+                        <a href="http://stevelosh.com/">Steve Losh</a>.
+                        The documentation is powered by
+                        <a href="http://markdoc.org/">Markdoc</a>.
+                    </p>
+                </div>
+            
+        
+        
+        <hr class="clear" />
+    </body>
+</html>
\ No newline at end of file