--- /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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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"><input</span> <span class="na">type=</span><span class="s">"hidden"</span> <span class="na">value=</span><span class="s">"{{ csrf_token() }}"</span><span class="nt">></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">'/foo/'</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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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&3.0.0/build/cssfonts/fonts-min.css&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">'event'</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">'profile'</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">'event'</span><span class="p">,</span> <span class="p">{</span> <span class="s">'event_id'</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">'profile'</span><span class="p">,</span> <span class="p">{</span> <span class="s">'username'</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