Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

We’re showing branches in this repository, but you can also compare across forks.

base fork: serenium/jekyll
base: 5a3751ee3a
...
head fork: serenium/jekyll
compare: 2ca7a24307
  • 15 commits
  • 16 files changed
  • 0 commit comments
  • 7 contributors
Commits on Jun 20, 2011
Kouhei Sutou kou fix path name in syntax error message. 70aaded
Commits on Jun 26, 2011
Julian Gruber juliangruber fixed redcarpet typo 89f4892
Aman Gupta tmm1 Merge pull request #354 from juliangruber/patch-1
fixed redcarpet typo
e679729
Commits on Jun 28, 2011
richbecks richbecks Added meta tag import goodness. This for instance allows you to prese…
…rve all your hard-worked on WP SEO keywords, images, alternative images and other yummy-ness.

Replaced PubDate with wp:post_date, this is better than PubDate since some of the posts you import could be a draft (in this case the pubDate is invalid and contains a non-sensical value).
Added wp:status so we now know whether the post is published, draft or in the trash.
Added wp:post_type so we differentiate between posts and image or other post types
365f57e
richbecks richbecks Sometimes wp:post_name can be empty (e.g. when a post is still draft)…
…, in this case we make up an appropriate permalink_title that will be used as the filename. The importer can always rename the file later on, and at least the file is unlikely to have been overwritten by another draft on the same day.
3389c6d
richbecks richbecks Drafts are now marked as published:false 29c4808
richbecks richbecks Now creates _<directory> for each post type (e.g. _posts, _pages, _at…
…tachments)
eb6a2b9
Commits on Jul 02, 2011
Matt Palmer mpalmer Give name of file that generated YAML exception message
It's not much good saying "hey, there was a problem" if you don't know where
the problem *is*.  Hunting through several hundred YAML files is no fun.
eebeaf5
Aman Gupta tmm1 Merge pull request #356 from mpalmer/yaml-exception-message
Give name of file that generated YAML exception message
f6b5d82
Commits on Jul 04, 2011
richbecks richbecks Create import_hash with .new(0) so that we don't have to check if
a hash exists before incrementing it.
8c35cc9
richbecks richbecks Tidied up indentation 00a0d14
Commits on Jul 06, 2011
Tom Preston-Werner mojombo Merge remote-tracking branch 'richbecks/master' 3c94ff3
Tom Preston-Werner mojombo Merge remote-tracking branch 'kou/fix-error-message' 3241d88
Commits on Jul 10, 2011
Tom Preston-Werner mojombo Release 0.11.0 72b7b1f
Commits on Jul 16, 2011
Chad Round Merge branch 'master' into personal 2ca7a24
4 History.txt
View
@@ -1,7 +1,7 @@
-== HEAD
+== 0.11.0 / 2011-07-10
* Major Enhancements
* Add command line importer functionality (#253)
- * Add Recarpet Markdown support (#318)
+ * Add Redcarpet Markdown support (#318)
* Make markdown/textile extensions configurable (#312)
* Add `markdownify` filter
* Minor Enhancements
574 doc/output/book.html
View
@@ -0,0 +1,574 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<meta name="generator" content="AsciiDoc 8.5.3" />
+<title>Jekyll</title>
+<style type="text/css">
+/* ---------------------------------------------------------------------------
+ Bare AsciiDoc styles
+ Ryan Tomayko <r@tomayko.com>
+--------------------------------------------------------------------------- */
+
+body {
+ font-family:verdana,helvetica,arial,sans-serif;
+ font-size:81.25%; /* 13px */
+ line-height:1.538; /* 20px */
+ margin:40px auto 50px auto;
+ max-width:53.8461538462em; /* 790px */
+ color:#333;
+}
+
+em {
+ font-style:italic;
+}
+
+strong {
+ font-weight:bold;
+ color:#000;
+}
+
+tt {
+ font-family:consolas, 'lucida console', 'bitstream vera sans mono',
+ 'courier new', monospace;
+ color:#000;
+}
+
+p, ul, ol, dl {
+ margin:10px 0
+}
+
+dl {
+ margin-left:40px
+}
+
+dt {
+ font-weight:normal;
+ color:#000;
+}
+
+h1, h2, h3, h4, h5 {
+ font-family:'lucida grande',georgia,verdana,helvetica,arial,sans-serif;
+ font-weight:normal;
+ color:#000;
+}
+
+h1 {
+ font-size:40px;
+ line-height:1.428;
+ margin:20px 0;
+}
+
+h2 {
+ font-size:30px;
+ line-height:1.36363636; /* repeating, of course */
+ margin:60px 0 20px 0;
+}
+
+h2 + .sectionbody {}
+
+h3 {
+ font-size:24px;
+ line-height:1.1;
+ margin:30px 0 10px 0;
+}
+
+h4 {
+ font-size:18px;
+ line-height:1.1;
+ margin:20px 0 5px 0;
+}
+
+h5 {
+ font-size:13px;
+ font-style:italic;
+ line-height:1.1;
+}
+
+#header {
+ text-align:center;
+ margin-bottom:30px;
+}
+
+#header h1 { margin-bottom:0 }
+
+.title, .sidebar-title {
+ font-weight:normal;
+ color:#000;
+ margin-bottom:0;
+}
+
+.admonitionblock .title {
+ font-weight:bold;
+}
+
+.admonitionblock {
+ margin:30px 0px;
+ color:#555;
+}
+
+.admonitionblock td.icon {
+ width:30px;
+ padding-right:20px;
+ padding-left:20px;
+ text-transform:uppercase;
+ font-weight:bold;
+ color:#888;
+}
+
+.listingblock {
+ margin: 13px 0;
+}
+
+.listingblock .content {
+ border:1px solid silver;
+ background:#eee;
+ padding:5px;
+}
+
+.listingblock .content pre {
+ margin:0;
+}
+
+.literalblock .content {
+ margin-left:40px;
+}
+
+.verseblock .content {
+ white-space:pre
+}
+
+.sidebarblock .sidebar-content {
+ border:1px solid silver;
+ background:#FFFFEE;
+ padding:0 10px;
+ color:#222;
+ font-size:smaller;
+ line-height:1.5;
+}
+
+.sidebar-title {
+ margin:10px 0;
+ font-weight:bold;
+ color:#442;
+}
+
+.quoteblock-content {
+ font-style:italic;
+ color:#444;
+ margin-left:40px;
+}
+
+.quoteblock-content .attribution {
+ font-style:normal;
+ text-align:right;
+ color:#000;
+}
+
+.exampleblock-content *:first-child { margin-top:0 }
+.exampleblock-content {
+ border-left:2px solid silver;
+ padding-left:8px;
+}
+
+#footer {
+ font-size:11px;
+ margin-top:40px;
+ border-top:1px solid silver;
+ color:#555;
+}
+
+#author {
+ color:#000;
+ text-transform:uppercase
+}
+
+</style>
+<script type="text/javascript">
+/*<![CDATA[*/
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}
+var asciidoc = { // Namespace.
+
+/////////////////////////////////////////////////////////////////////
+// Table Of Contents generator
+/////////////////////////////////////////////////////////////////////
+
+/* Author: Mihai Bazon, September 2002
+ * http://students.infoiasi.ro/~mishoo
+ *
+ * Table Of Content generator
+ * Version: 0.4
+ *
+ * Feel free to use this script under the terms of the GNU General Public
+ * License, as long as you do not remove or alter this notice.
+ */
+
+ /* modified by Troy D. Hanson, September 2006. License: GPL */
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */
+
+// toclevels = 1..4.
+toc: function (toclevels) {
+
+ function getText(el) {
+ var text = "";
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
+ text += i.data;
+ else if (i.firstChild != null)
+ text += getText(i);
+ }
+ return text;
+ }
+
+ function TocEntry(el, text, toclevel) {
+ this.element = el;
+ this.text = text;
+ this.toclevel = toclevel;
+ }
+
+ function tocEntries(el, toclevels) {
+ var result = new Array;
+ var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
+ // Function that scans the DOM tree for header elements (the DOM2
+ // nodeIterator API would be a better technique but not supported by all
+ // browsers).
+ var iterate = function (el) {
+ for (var i = el.firstChild; i != null; i = i.nextSibling) {
+ if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
+ var mo = re.exec(i.tagName);
+ if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
+ result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
+ }
+ iterate(i);
+ }
+ }
+ }
+ iterate(el);
+ return result;
+ }
+
+ var toc = document.getElementById("toc");
+ var entries = tocEntries(document.getElementById("content"), toclevels);
+ for (var i = 0; i < entries.length; ++i) {
+ var entry = entries[i];
+ if (entry.element.id == "")
+ entry.element.id = "_toc_" + i;
+ var a = document.createElement("a");
+ a.href = "#" + entry.element.id;
+ a.appendChild(document.createTextNode(entry.text));
+ var div = document.createElement("div");
+ div.appendChild(a);
+ div.className = "toclevel" + entry.toclevel;
+ toc.appendChild(div);
+ }
+ if (entries.length == 0)
+ toc.parentNode.removeChild(toc);
+},
+
+
+/////////////////////////////////////////////////////////////////////
+// Footnotes generator
+/////////////////////////////////////////////////////////////////////
+
+/* Based on footnote generation code from:
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
+ */
+
+footnotes: function () {
+ var cont = document.getElementById("content");
+ var noteholder = document.getElementById("footnotes");
+ var spans = cont.getElementsByTagName("span");
+ var refs = {};
+ var n = 0;
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnote") {
+ n++;
+ // Use [\s\S] in place of . so multi-line matches work.
+ // Because JavaScript has no s (dotall) regex flag.
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
+ noteholder.innerHTML +=
+ "<div class='footnote' id='_footnote_" + n + "'>" +
+ "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
+ n + "</a>. " + note + "</div>";
+ spans[i].innerHTML =
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ var id =spans[i].getAttribute("id");
+ if (id != null) refs["#"+id] = n;
+ }
+ }
+ if (n == 0)
+ noteholder.parentNode.removeChild(noteholder);
+ else {
+ // Process footnoterefs.
+ for (i=0; i<spans.length; i++) {
+ if (spans[i].className == "footnoteref") {
+ var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
+ href = href.match(/#.*/)[0]; // Because IE return full URL.
+ n = refs[href];
+ spans[i].innerHTML =
+ "[<a href='#_footnote_" + n +
+ "' title='View footnote' class='footnote'>" + n + "</a>]";
+ }
+ }
+ }
+}
+
+}
+/*]]>*/
+</script>
+</head>
+<body>
+<div id="header">
+<h1>Jekyll</h1>
+<span id="author">Tom Preston-Werner</span><br />
+<span id="email"><tt>&lt;<a href="mailto:&lt;tom@mojombo.com&gt;">&lt;tom@mojombo.com&gt;</a>&gt;</tt></span><br />
+<div id="toc">
+ <div id="toctitle">Table of Contents</div>
+ <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</div>
+</div>
+<div id="content">
+<h2 id="_preface">1. Preface</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>Jekyll was born out the desire to create a blog engine that would make it
+possible to write posts in my local text editor, version those posts with Git,
+and keep up with my desire to tweak the styles and layout of my site.</p></div>
+<div class="paragraph"><p>In other words, I wanted something that fit into my existing software
+development workflow and toolchain. Jekyll handles not only this case, but a
+wide variety of other situations that call for static site generation based on
+converted content and layout templates.</p></div>
+<div class="paragraph"><p>At its core, Jekyll is a text transformation engine. The concept behind the
+system is this: you give it text written in your favorite markup language, be
+that Markdown, Textile, or just plain HTML, and it churns that through a
+layout or series of layout files. Throughout that process you can tweak how
+you want the site URLs to look, what data gets displayed on the layout and
+much more.</p></div>
+<div class="paragraph"><p>If you&#8217;re looking for a simple, yet powerful solution to your blogging or
+static site needs, Jekyll may be just what you&#8217;ve been looking for.</p></div>
+<h3 id="_what_this_book_covers">1.1. What this book covers</h3><div style="clear:left"></div>
+<div class="paragraph"><p><em>Chapter 1, Quick Start</em> covers installation, introduces the Jekyll command
+line interface, and runs through a quick example demonstrating the site
+generator, post generator and how to convert your Jekyll site into a static
+site.</p></div>
+<div class="paragraph"><p><em>Chapter 2, Directory Layout</em> covers the various files and directories that
+comprise a Jekyll site.</p></div>
+<div class="paragraph"><p><em>Chapter 3, Tags and Filters</em></p></div>
+<div class="paragraph"><p><em>Chapter X, Deploying your Jekyll Site</em></p></div>
+<div class="paragraph"><p><em>Chapter X, Customizing Jekyll with Plugins</em></p></div>
+<div class="paragraph"><p><em>Chapter X, Migrating to Jekyll from your Existing Blog</em></p></div>
+<div class="paragraph"><p><em>Chapter X, Configuration Reference</em></p></div>
+</div>
+<h2 id="_chapter_1_quick_start">2. Chapter 1: Quick Start</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>This chapter is designed to get you up and running with Jekyll as quickly as
+possible.</p></div>
+<h3 id="_installation">2.1. Installation</h3><div style="clear:left"></div>
+<div class="paragraph"><p>The best way to install Jekyll is via RubyGems:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>gem install jekyll</tt></pre>
+</div></div>
+<div class="paragraph"><p>This is all you need in order to get started with a basic Jekyll site. Some
+options require additional packages to be installed.</p></div>
+<div class="paragraph"><p>If you encounter errors during gem installation, you may need to install the
+header files for compiling extension modules for ruby 1.8:</p></div>
+<div class="listingblock">
+<div class="title">Debian</div>
+<div class="content">
+<pre><tt>sudo apt-get install ruby1.8-dev</tt></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">Red Hat / CentOS / Fedora systems</div>
+<div class="content">
+<pre><tt>sudo yum install ruby-devel</tt></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">NearlyFreeSpeech</div>
+<div class="content">
+<pre><tt>RB_USER_INSTALL=true gem install jekyll</tt></pre>
+</div></div>
+<div class="paragraph"><p>If you encounter errors like <tt>Failed to build gem native extension</tt> on Windows
+you may need to install <a href="http://wiki.github.com/oneclick/rubyinstaller/development-kit">RubyInstaller
+DevKit</a>.</p></div>
+<h4 id="_latex_to_png">2.1.1. LaTeX to PNG</h4>
+<div class="paragraph"><p>Maruku comes with optional support for LaTeX to PNG rendering via blahtex
+(Version 0.6) which must be in your $PATH along with @dvips@.</p></div>
+<div class="paragraph"><p>(NOTE: "remi&#8217;s fork of Maruku":http://github.com/remi/maruku/tree/master does
+not assume a fixed location for @dvips@ if you need that fixed)</p></div>
+<h4 id="_rdiscount">2.1.2. RDiscount</h4>
+<div class="paragraph"><p>If you prefer to use
+<a href="http://github.com/rtomayko/rdiscount/tree/master">RDiscount</a> instead of
+<a href="http://maruku.rubyforge.org/">Maruku</a> for markdown, just make sure it&#8217;s
+installed:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>sudo gem install rdiscount</tt></pre>
+</div></div>
+<div class="paragraph"><p>And run Jekyll with the following option:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>jekyll --rdiscount</tt></pre>
+</div></div>
+<div class="paragraph"><p>Or, in your @_config.yml@ file put the following so you don&#8217;t have to specify the flag:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>markdown: rdiscount</tt></pre>
+</div></div>
+<h4 id="_pygments">2.1.3. Pygments</h4>
+<div class="paragraph"><p>If you want syntax highlighting via the @{% highlight %}@ tag in your posts,
+you&#8217;ll need to install <a href="http://pygments.org/">Pygments</a>.</p></div>
+<div class="listingblock">
+<div class="title">On OSX with Homebrew</div>
+<div class="content">
+<pre><tt>brew install pip &amp;&amp; pip install pygments</tt></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">On OSX with MacPorts</div>
+<div class="content">
+<pre><tt>sudo port install python25 py25-pygments</tt></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">Bare OS X Leopard</div>
+<div class="content">
+<pre><tt>sudo easy_install Pygments</tt></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">Archlinux</div>
+<div class="content">
+<pre><tt>sudo pacman -S python-pygments</tt></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">Archlinux python2 for Pygments</div>
+<div class="content">
+<pre><tt>$ sudo pacman -S python2-pygments</tt></pre>
+</div></div>
+<div class="admonitionblock">
+<table><tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">python2 pygments version creates a <tt>pygmentize2</tt> executable, while
+Jekyll tries to find <tt>pygmentize</tt>. Either create a symlink <tt># ln -s
+/usr/bin/pygmentize2 /usr/bin/pygmentize</tt> or use the python3 version.</td>
+</tr></table>
+</div>
+<div class="listingblock">
+<div class="title">Ubuntu and Debian</div>
+<div class="content">
+<pre><tt>sudo apt-get install python-pygments</tt></pre>
+</div></div>
+<div class="listingblock">
+<div class="title">Gentoo</div>
+<div class="content">
+<pre><tt>$ sudo emerge -av dev-python/pygments</tt></pre>
+</div></div>
+<h3 id="_creating_your_first_site">2.2. Creating your First Site</h3><div style="clear:left"></div>
+<div class="paragraph"><p>Jekyll comes with a handy generator that will create a barebones skeleton site
+to help you get up and running in no time. Simply create an empty directory to
+contain your site, navigate to it, and run the generator command:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>$ mkdir mysite
+$ cd mysite
+$ jekyll gen</tt></pre>
+</div></div>
+<div class="paragraph"><p>Make sure the directory is empty or Jekyll will refuse to run. If everything
+was successful, you&#8217;ll be left with a complete, valid Jekyll site that&#8217;s ready
+to be converted into a static site.</p></div>
+<div class="paragraph"><p>To perform the conversion, make sure you&#8217;re in the root of your Jekyll site
+directory and run:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>$ jekyll --server</tt></pre>
+</div></div>
+<div class="paragraph"><p>If all goes well, you should get a few lines with information about config
+file detection, source and destination paths, and a success message.</p></div>
+<div class="paragraph"><p>The <tt>--server</tt> command line option fires up a simple web server that will
+serve the static site we just generated so that we can easily preview what it
+will look like once we deploy it to a production environment.</p></div>
+<div class="paragraph"><p>Open up your favorite web browser and navigate to:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>http://localhost:4000</tt></pre>
+</div></div>
+<div class="paragraph"><p>Congratulations! You have now successfully created and converted your first
+Jekyll site!</p></div>
+</div>
+<h2 id="_chapter_2_directory_layout">3. Chapter 2: Directory Layout</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>If you followed the Quick Start in the last chapter, you have a Jekyll site on
+your local machine. Let&#8217;s take a closer look at it and see what makes it tick.
+The file layout should look something like this:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><tt>.
+|-- _config.yml
+|-- _layouts
+| |-- default.html
+| `-- post.html
+|-- _posts
+| |-- 2007-10-29-why-every-programmer-should-play-nethack.textile
+| `-- 2009-04-26-barcamp-boston-4-roundup.textile
+|-- _site
+|-- images
+| `-- logo.png
+`-- index.html</tt></pre>
+</div></div>
+<div class="paragraph"><p>Notice that some of the files and directories begin with an underscore. These
+have special meaning to Jekyll. The underscore ensures that they will not
+interfere with the rest of your site&#8217;s normal content. It also means that if
+any of your normal files start with an underscore, they will cause problems,
+so try to avoid this.</p></div>
+<h3 id="_config_yml">3.1. _config.yml</h3><div style="clear:left"></div>
+<div class="paragraph"><p>This file stores configuration data. A majority of these options can be
+specified from the command line executable but it&#8217;s easier to throw them in
+here so you don&#8217;t have to type them out every time. Detailed explanations of
+configuration directives can be found in Chapter X.</p></div>
+<h3 id="_layouts">3.2. _layouts</h3><div style="clear:left"></div>
+<div class="paragraph"><p>Files in this directory represent templates that can be used to wrap converted
+pages. Layouts are defined on a page-by-page basis in the YAML front matter.
+The liquid tag <tt>{{ content }}</tt> specifies where the content will be placed
+during the conversion process.</p></div>
+<h3 id="_posts">3.3. _posts</h3><div style="clear:left"></div>
+<div class="paragraph"><p>If you&#8217;re using Jekyll as a blog engine, this is where you&#8217;ll place your blog
+posts. A post&#8217;s filename contains several pieces of data, so you must be very
+careful about how these files are named. The filename format is:
+<tt>YEAR-MONTH-DATE-SLUG.MARKUP</tt>. The YEAR must be four numbers and the MONTH and
+DATE must be two numbers each. The SLUG is what will appear in the URL. The
+MARKUP tells Jekyll the format of the post. The date and slug will be used
+along with any permalink options you specify (See Chapter X) to construct the
+final URL of the post.</p></div>
+<h3 id="_site">3.4. _site</h3><div style="clear:left"></div>
+<div class="paragraph"><p>This is where the generated site will be placed (by default) once Jekyll is
+done transforming it. If you&#8217;re using version control, you&#8217;ll want to add this
+directory to the list of files to be ignored.</p></div>
+<h3 id="_normal_files_with_yaml_front_matter">3.5. Normal Files with YAML Front Matter</h3><div style="clear:left"></div>
+<div class="paragraph"><p>All files outside of the special underscore directories and that do not
+themselves begin with an underscore will be scanned by Jekyll and subjected to
+conversion if they contain any YAML front matter.</p></div>
+<h3 id="_everything_else">3.6. Everything Else</h3><div style="clear:left"></div>
+<div class="paragraph"><p>Any files and directories that do not fall into one of the above categories
+will be copied to the static site as-is without modification. In this example,
+<tt>images/logo.png</tt> will be copied to the same location in the generated site.</p></div>
+<div class="paragraph"><p>h2. Running Jekyll</p></div>
+<div class="paragraph"><p>Usually this is done through the @jekyll@ executable, which is installed with
+the gem. In order to get a server up and running with your Jekyll site, run:</p></div>
+<div class="paragraph"><p>@jekyll --server@</p></div>
+<div class="paragraph"><p>and then browse to <a href="http://0.0.0.0:4000">http://0.0.0.0:4000</a>. There&#8217;s plenty of <a id="configuration options|Configuration"></a> available to you as well.</p></div>
+<div class="paragraph"><p>On Debian or Ubuntu, you may need to add @/var/lib/gems/1.8/bin/@ to your path.</p></div>
+<div class="paragraph"><p>h2. Deployment</p></div>
+<div class="paragraph"><p>Since Jekyll simply generates a folder filled with HTML files, it can be
+served using practically any available web server out there. Please check the
+<a id="Deployment"></a> page for more information regarding specific scenarios.</p></div>
+</div>
+</div>
+<div id="footnotes"><hr /></div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2011-03-18 21:05:02 PDT
+</div>
+</div>
+</body>
+</html>
41 doc/output/ch00-preface.asc
View
@@ -0,0 +1,41 @@
+== Preface
+
+Jekyll was born out the desire to create a blog engine that would make it
+possible to write posts in my local text editor, version those posts with Git,
+and keep up with my desire to tweak the styles and layout of my site.
+
+In other words, I wanted something that fit into my existing software
+development workflow and toolchain. Jekyll handles not only this case, but a
+wide variety of other situations that call for static site generation based on
+converted content and layout templates.
+
+At its core, Jekyll is a text transformation engine. The concept behind the
+system is this: you give it text written in your favorite markup language, be
+that Markdown, Textile, or just plain HTML, and it churns that through a
+layout or series of layout files. Throughout that process you can tweak how
+you want the site URLs to look, what data gets displayed on the layout and
+much more.
+
+If you're looking for a simple, yet powerful solution to your blogging or
+static site needs, Jekyll may be just what you've been looking for.
+
+
+=== What this book covers
+
+_Chapter 1, Quick Start_ covers installation, introduces the Jekyll command
+line interface, and runs through a quick example demonstrating the site
+generator, post generator and how to convert your Jekyll site into a static
+site.
+
+_Chapter 2, Directory Layout_ covers the various files and directories that
+comprise a Jekyll site.
+
+_Chapter 3, Tags and Filters_
+
+_Chapter X, Deploying your Jekyll Site_
+
+_Chapter X, Customizing Jekyll with Plugins_
+
+_Chapter X, Migrating to Jekyll from your Existing Blog_
+
+_Chapter X, Configuration Reference_
153 doc/output/ch01-quick-start.asc
View
@@ -0,0 +1,153 @@
+== Chapter 1: Quick Start
+
+This chapter is designed to get you up and running with Jekyll as quickly as
+possible.
+
+
+=== Installation
+
+The best way to install Jekyll is via RubyGems:
+
+----
+gem install jekyll
+----
+
+This is all you need in order to get started with a basic Jekyll site. Some
+options require additional packages to be installed.
+
+If you encounter errors during gem installation, you may need to install the
+header files for compiling extension modules for ruby 1.8:
+
+.Debian
+----
+sudo apt-get install ruby1.8-dev
+----
+
+.Red Hat / CentOS / Fedora systems
+----
+sudo yum install ruby-devel
+----
+
+.NearlyFreeSpeech
+----
+RB_USER_INSTALL=true gem install jekyll
+----
+
+If you encounter errors like +Failed to build gem native extension+ on Windows
+you may need to install http://wiki.github.com/oneclick/rubyinstaller/development-kit[RubyInstaller
+DevKit].
+
+==== LaTeX to PNG
+
+Maruku comes with optional support for LaTeX to PNG rendering via blahtex
+(Version 0.6) which must be in your $PATH along with @dvips@.
+
+(NOTE: "remi's fork of Maruku":http://github.com/remi/maruku/tree/master does
+not assume a fixed location for @dvips@ if you need that fixed)
+
+==== RDiscount
+
+If you prefer to use
+http://github.com/rtomayko/rdiscount/tree/master[RDiscount] instead of
+http://maruku.rubyforge.org/[Maruku] for markdown, just make sure it's
+installed:
+
+----
+sudo gem install rdiscount
+----
+
+And run Jekyll with the following option:
+
+----
+jekyll --rdiscount
+----
+
+Or, in your @_config.yml@ file put the following so you don't have to specify the flag:
+
+----
+markdown: rdiscount
+----
+
+==== Pygments
+
+If you want syntax highlighting via the @{% highlight %}@ tag in your posts,
+you'll need to install http://pygments.org/[Pygments].
+
+.On OSX with Homebrew
+----
+brew install pip && pip install pygments
+----
+
+.On OSX with MacPorts
+----
+sudo port install python25 py25-pygments
+----
+
+.Bare OS X Leopard
+----
+sudo easy_install Pygments
+----
+
+.Archlinux
+----
+sudo pacman -S python-pygments
+----
+
+.Archlinux python2 for Pygments
+----
+$ sudo pacman -S python2-pygments
+----
+
+NOTE: python2 pygments version creates a `pygmentize2` executable, while
+Jekyll tries to find `pygmentize`. Either create a symlink `# ln -s
+/usr/bin/pygmentize2 /usr/bin/pygmentize` or use the python3 version.
+
+.Ubuntu and Debian
+----
+sudo apt-get install python-pygments
+----
+
+.Gentoo
+----
+$ sudo emerge -av dev-python/pygments
+----
+
+
+=== Creating your First Site
+
+Jekyll comes with a handy generator that will create a barebones skeleton site
+to help you get up and running in no time. Simply create an empty directory to
+contain your site, navigate to it, and run the generator command:
+
+----
+$ mkdir mysite
+$ cd mysite
+$ jekyll gen
+----
+
+Make sure the directory is empty or Jekyll will refuse to run. If everything
+was successful, you'll be left with a complete, valid Jekyll site that's ready
+to be converted into a static site.
+
+To perform the conversion, make sure you're in the root of your Jekyll site
+directory and run:
+
+----
+$ jekyll --server
+----
+
+If all goes well, you should get a few lines with information about config
+file detection, source and destination paths, and a success message.
+
+The `--server` command line option fires up a simple web server that will
+serve the static site we just generated so that we can easily preview what it
+will look like once we deploy it to a production environment.
+
+Open up your favorite web browser and navigate to:
+
+----
+http://localhost:4000
+----
+
+Congratulations! You have now successfully created and converted your first
+Jekyll site!
90 doc/output/ch02-directory-layout.asc
View
@@ -0,0 +1,90 @@
+== Chapter 2: Directory Layout
+
+If you followed the Quick Start in the last chapter, you have a Jekyll site on
+your local machine. Let's take a closer look at it and see what makes it tick.
+The file layout should look something like this:
+
+----
+.
+|-- _config.yml
+|-- _layouts
+| |-- default.html
+| `-- post.html
+|-- _posts
+| |-- 2007-10-29-why-every-programmer-should-play-nethack.textile
+| `-- 2009-04-26-barcamp-boston-4-roundup.textile
+|-- _site
+|-- images
+| `-- logo.png
+`-- index.html
+----
+
+Notice that some of the files and directories begin with an underscore. These
+have special meaning to Jekyll. The underscore ensures that they will not
+interfere with the rest of your site's normal content. It also means that if
+any of your normal files start with an underscore, they will cause problems,
+so try to avoid this.
+
+=== _config.yml
+
+This file stores configuration data. A majority of these options can be
+specified from the command line executable but it's easier to throw them in
+here so you don't have to type them out every time. Detailed explanations of
+configuration directives can be found in Chapter X.
+
+=== _layouts
+
+Files in this directory represent templates that can be used to wrap converted
+pages. Layouts are defined on a page-by-page basis in the YAML front matter.
+The liquid tag +{{ content }}+ specifies where the content will be placed
+during the conversion process.
+
+=== _posts
+
+If you're using Jekyll as a blog engine, this is where you'll place your blog
+posts. A post's filename contains several pieces of data, so you must be very
+careful about how these files are named. The filename format is:
++YEAR-MONTH-DATE-SLUG.MARKUP+. The YEAR must be four numbers and the MONTH and
+DATE must be two numbers each. The SLUG is what will appear in the URL. The
+MARKUP tells Jekyll the format of the post. The date and slug will be used
+along with any permalink options you specify (See Chapter X) to construct the
+final URL of the post.
+
+=== _site
+
+This is where the generated site will be placed (by default) once Jekyll is
+done transforming it. If you're using version control, you'll want to add this
+directory to the list of files to be ignored.
+
+=== Normal Files with YAML Front Matter
+
+All files outside of the special underscore directories and that do not
+themselves begin with an underscore will be scanned by Jekyll and subjected to
+conversion if they contain any YAML front matter.
+
+=== Everything Else
+
+Any files and directories that do not fall into one of the above categories
+will be copied to the static site as-is without modification. In this example,
++images/logo.png+ will be copied to the same location in the generated site.
+
+
+
+
+h2. Running Jekyll
+
+Usually this is done through the @jekyll@ executable, which is installed with
+the gem. In order to get a server up and running with your Jekyll site, run:
+
+@jekyll --server@
+
+and then browse to http://0.0.0.0:4000. There's plenty of [[configuration
+options|Configuration]] available to you as well.
+
+On Debian or Ubuntu, you may need to add @/var/lib/gems/1.8/bin/@ to your path.
+
+h2. Deployment
+
+Since Jekyll simply generates a folder filled with HTML files, it can be
+served using practically any available web server out there. Please check the
+[[Deployment]] page for more information regarding specific scenarios.
0  doc/output/stylesheets/handbookish-quirks.css
View
No changes.
231 doc/output/stylesheets/handbookish.css
View
@@ -0,0 +1,231 @@
+/* BEG */
+/* ---------------------------------------------------------------------------
+ Bare AsciiDoc styles
+ Ryan Tomayko <r@tomayko.com>
+--------------------------------------------------------------------------- */
+
+body {
+ font-family:verdana,helvetica,arial,sans-serif;
+ font-size:81.25%; /* 13px */
+ line-height:1.538; /* 20px */
+ margin:40px 50px;
+ max-width:53.8461538462em; /* 790px */
+ color:#333;
+}
+
+em {
+ font-style:italic;
+}
+
+strong {
+ font-weight:bold;
+ color:#000;
+}
+
+tt {
+ font-family:consolas, 'lucida console', 'bitstream vera sans mono',
+ 'courier new', monospace;
+ color:#000;
+}
+
+p, ul, ol, dl {
+ margin:10px 0
+}
+
+dl { }
+
+dt {
+ font-weight:normal;
+ color:#000;
+}
+
+h1, h2, h3, h4, h5 {
+ font-family:'lucida grande',georgia,verdana,helvetica,arial,sans-serif;
+ font-weight:normal;
+ color:#000;
+}
+
+h1 {
+ font-size:30px;
+ line-height:1.428;
+ margin:20px 0;
+}
+
+h2 {
+ font-size:23px;
+ line-height:1.36363636; /* repeating, of course */
+ margin:20px 0;
+}
+
+h2 + .sectionbody {}
+
+h3 {
+ font-size:18px;
+ line-height:1.1;
+ margin:30px 0 10px 0;
+}
+
+h4 {
+ font-size:13px;
+ font-weight:bold;
+ line-height:1.538;
+}
+
+h5 {
+ font-size:13px;
+ font-style:italic;
+ line-height:1.538;
+}
+
+pre {
+ font-size:larger;
+}
+
+#header {
+ text-align:center;
+ margin-bottom:30px;
+}
+
+#header h1 { margin-bottom:0 }
+
+
+.title, .sidebar-title {
+ font-weight:normal;
+ margin-bottom:0;
+}
+
+.admonitionblock .title {
+ font-weight:bold;
+}
+
+.admonitionblock {
+ margin:30px 0px;
+ color:#555;
+}
+
+.admonitionblock td.icon {
+ width:30px;
+ padding-right:20px;
+ padding-left:20px;
+ text-transform:uppercase;
+ font-weight:bold;
+ color:#888;
+}
+
+.listingblock .content {
+ border:1px solid silver;
+ background:#eee;
+ padding:5px;
+}
+
+.listingblock .content pre {
+ margin:0;
+}
+
+.literalblock .content {
+ margin-left:40px;
+}
+
+.verseblock .content {
+ white-space:pre
+}
+
+.sidebarblock .sidebar-content {
+ border:1px solid silver;
+ background:#FFFFEE;
+ padding:0 10px;
+ color:#222;
+ font-size:smaller;
+ line-height:1.5;
+}
+
+.sidebar-title {
+ margin:10px 0;
+ font-weight:bold;
+ color:#442;
+}
+
+.quoteblock-content {
+ font-style:italic;
+ color:#444;
+ margin-left:40px;
+}
+
+.quoteblock-content .attribution {
+ font-style:normal;
+ text-align:right;
+ color:#000;
+}
+
+.exampleblock-content *:first-child { margin-top:0 }
+.exampleblock-content {
+ border-left:2px solid silver;
+ padding-left:8px;
+}
+
+#footer {
+ font-size:11px;
+ margin-top:40px;
+ border-top:1px solid silver;
+ color:#555;
+}
+
+#author {
+ color:#000;
+ text-transform:uppercase
+}
+
+/* vim: set ft=css ts=4 sw=4 noexpandtab: */
+
+/* END @import url(bare.css); */
+
+/* ---------------------------------------------------------------------------
+ FreeBSD AsciiDoc Theme
+ Ryan Tomayko <r@tomayko.com>
+
+ Based on The FreeBSD Handbook and various other FreeBSD documenration.
+--------------------------------------------------------------------------- */
+
+body {
+ font-family:verdana,helvetica,arial,sans-serif;
+ font-size:100%;
+ color:#000;
+}
+
+tt { color:#007A00 }
+pre tt { color:#000 }
+
+dt { color:#000 }
+
+h1, h2, h3, h4, h5 {
+ font-family:'lucida grande',helvetica,verdana,sans-serif;
+ color:#900;
+ font-weight:bold;
+}
+
+#header {
+ text-align:left;
+}
+#header h1 { margin-bottom:40px }
+
+h1 {
+ font-size:36px;
+ line-height:1;
+ margin:40px 0;
+}
+
+h2 {
+ font-size:28px;
+ line-height:1;
+ margin:30px 0 20px 0;
+}
+
+.sectionbody {
+ margin-left:30px;
+}
+
+pre {
+ background:#EEE;
+}
+
+/* vim: set ft=css ts=4 sw=4 noexpandtab: */
0  doc/output/stylesheets/scribe-quirks.css
View
No changes.
177 doc/output/stylesheets/scribe.css
View
@@ -0,0 +1,177 @@
+/* ---------------------------------------------------------------------------
+ Bare AsciiDoc styles
+ Ryan Tomayko <r@tomayko.com>
+--------------------------------------------------------------------------- */
+
+body {
+ font-family:verdana,helvetica,arial,sans-serif;
+ font-size:81.25%; /* 13px */
+ line-height:1.538; /* 20px */
+ margin:40px auto 50px auto;
+ max-width:53.8461538462em; /* 790px */
+ color:#333;
+}
+
+em {
+ font-style:italic;
+}
+
+strong {
+ font-weight:bold;
+ color:#000;
+}
+
+tt {
+ font-family:consolas, 'lucida console', 'bitstream vera sans mono',
+ 'courier new', monospace;
+ color:#000;
+}
+
+p, ul, ol, dl {
+ margin:10px 0
+}
+
+dl {
+ margin-left:40px
+}
+
+dt {
+ font-weight:normal;
+ color:#000;
+}
+
+h1, h2, h3, h4, h5 {
+ font-family:'lucida grande',georgia,verdana,helvetica,arial,sans-serif;
+ font-weight:normal;
+ color:#000;
+}
+
+h1 {
+ font-size:40px;
+ line-height:1.428;
+ margin:20px 0;
+}
+
+h2 {
+ font-size:30px;
+ line-height:1.36363636; /* repeating, of course */
+ margin:60px 0 20px 0;
+}
+
+h2 + .sectionbody {}
+
+h3 {
+ font-size:24px;
+ line-height:1.1;
+ margin:30px 0 10px 0;
+}
+
+h4 {
+ font-size:18px;
+ line-height:1.1;
+ margin:20px 0 5px 0;
+}
+
+h5 {
+ font-size:13px;
+ font-style:italic;
+ line-height:1.1;
+}
+
+#header {
+ text-align:center;
+ margin-bottom:30px;
+}
+
+#header h1 { margin-bottom:0 }
+
+.title, .sidebar-title {
+ font-weight:normal;
+ color:#000;
+ margin-bottom:0;
+}
+
+.admonitionblock .title {
+ font-weight:bold;
+}
+
+.admonitionblock {
+ margin:30px 0px;
+ color:#555;
+}
+
+.admonitionblock td.icon {
+ width:30px;
+ padding-right:20px;
+ padding-left:20px;
+ text-transform:uppercase;
+ font-weight:bold;
+ color:#888;
+}
+
+.listingblock {
+ margin: 13px 0;
+}
+
+.listingblock .content {
+ border:1px solid silver;
+ background:#eee;
+ padding:5px;
+}
+
+.listingblock .content pre {
+ margin:0;
+}
+
+.literalblock .content {
+ margin-left:40px;
+}
+
+.verseblock .content {
+ white-space:pre
+}
+
+.sidebarblock .sidebar-content {
+ border:1px solid silver;
+ background:#FFFFEE;
+ padding:0 10px;
+ color:#222;
+ font-size:smaller;
+ line-height:1.5;
+}
+
+.sidebar-title {
+ margin:10px 0;
+ font-weight:bold;
+ color:#442;
+}
+
+.quoteblock-content {
+ font-style:italic;
+ color:#444;
+ margin-left:40px;
+}
+
+.quoteblock-content .attribution {
+ font-style:normal;
+ text-align:right;
+ color:#000;
+}
+
+.exampleblock-content *:first-child { margin-top:0 }
+.exampleblock-content {
+ border-left:2px solid silver;
+ padding-left:8px;
+}
+
+#footer {
+ font-size:11px;
+ margin-top:40px;
+ border-top:1px solid silver;
+ color:#555;
+}
+
+#author {
+ color:#000;
+ text-transform:uppercase
+}
48 g.pl
View
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+#fetch Gravatars
+
+use strict;
+use warnings;
+
+use LWP::Simple;
+use Digest::MD5 qw(md5_hex);
+
+my $size = 90;
+my $output_dir = '.git/avatar';
+
+die("no .git/ directory found in current path\n") unless -d '.git';
+
+mkdir($output_dir) unless -d $output_dir;
+
+open(GITLOG, q/git log --pretty=format:"%ae|%an" |/) or die("failed to read git-log: $!\n");
+
+my %processed_authors;
+
+while(<GITLOG>) {
+ chomp;
+ my($email, $author) = split(/\|/, $_);
+
+ next if $processed_authors{$author}++;
+
+ my $author_image_file = $output_dir . '/' . $author . '.png';
+
+ #skip images we have
+ next if -e $author_image_file;
+
+ #try and fetch image
+
+ my $grav_url = "http://www.gravatar.com/avatar/".md5_hex(lc $email)."?d=404&size=".$size;
+
+ warn "fetching image for '$author' $email ($grav_url)...\n";
+
+ my $rc = getstore($grav_url, $author_image_file);
+
+ sleep(1);
+
+ if($rc != 200) {
+ unlink($author_image_file);
+ next;
+ }
+}
+
+close GITLOG;
17 jekyll.gemspec
View
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
s.rubygems_version = '1.3.5'
s.name = 'jekyll'
- s.version = '0.10.0'
- s.date = '2011-05-30'
+ s.version = '0.11.0'
+ s.date = '2011-07-10'
s.rubyforge_project = 'jekyll'
s.summary = "A simple, blog aware, static site generator."
@@ -46,6 +46,14 @@ Gem::Specification.new do |s|
Rakefile
bin/jekyll
cucumber.yml
+ doc/output/book.html
+ doc/output/ch00-preface.asc
+ doc/output/ch01-quick-start.asc
+ doc/output/ch02-directory-layout.asc
+ doc/output/stylesheets/handbookish-quirks.css
+ doc/output/stylesheets/handbookish.css
+ doc/output/stylesheets/scribe-quirks.css
+ doc/output/stylesheets/scribe.css
features/create_sites.feature
features/embed_filters.feature
features/markdown.feature
@@ -56,6 +64,7 @@ Gem::Specification.new do |s|
features/site_data.feature
features/step_definitions/jekyll_steps.rb
features/support/env.rb
+ g.pl
jekyll.gemspec
lib/jekyll.rb
lib/jekyll/converter.rb
@@ -88,6 +97,8 @@ Gem::Specification.new do |s|
lib/jekyll/static_file.rb
lib/jekyll/tags/highlight.rb
lib/jekyll/tags/include.rb
+ output/stylesheets/scribe-quirks.css
+ output/stylesheets/scribe.css
test/helper.rb
test/source/.htaccess
test/source/_includes/sig.markdown
@@ -116,6 +127,8 @@ Gem::Specification.new do |s|
test/source/_posts/2010-01-09-time-override.textile
test/source/_posts/2010-01-09-timezone-override.textile
test/source/_posts/2010-01-16-override-data.textile
+ test/source/_posts/2011-04-12-md-extension.md
+ test/source/_posts/2011-04-12-text-extension.text
test/source/about.html
test/source/category/_posts/2008-9-23-categories.textile
test/source/contacts.html
2  lib/jekyll.rb
View
@@ -46,7 +46,7 @@ def require_all(path)
require_all 'jekyll/tags'
module Jekyll
- VERSION = '0.10.0'
+ VERSION = '0.11.0'
# Default options. Overriden by values in _config.yml or command-line opts.
# (Strings rather symbols used for compatability with YAML).
4 lib/jekyll/convertible.rb
View
@@ -32,7 +32,7 @@ def read_yaml(base, name)
begin
self.data = YAML.load($1)
rescue => e
- puts "YAML Exception: #{e.message}"
+ puts "YAML Exception reading #{name}: #{e.message}"
end
end
@@ -78,7 +78,7 @@ def do_layout(payload, layouts)
begin
self.content = Liquid::Template.parse(self.content).render(payload, info)
rescue => e
- puts "Liquid Exception: #{e.message} in #{self.data["layout"]}"
+ puts "Liquid Exception: #{e.message} in #{self.name}"
end
self.transform
46 lib/jekyll/migrators/wordpressdotcom.rb
View
@@ -4,39 +4,67 @@
require 'hpricot'
require 'fileutils'
require 'yaml'
+require 'time'
module Jekyll
# This importer takes a wordpress.xml file, which can be exported from your
# wordpress.com blog (/wp-admin/export.php).
module WordpressDotCom
def self.process(filename = "wordpress.xml")
- FileUtils.mkdir_p "_posts"
- posts = 0
-
+ import_count = Hash.new(0)
doc = Hpricot::XML(File.read(filename))
(doc/:channel/:item).each do |item|
title = item.at(:title).inner_text.strip
permalink_title = item.at('wp:post_name').inner_text
- date = Time.parse(item.at(:pubDate).inner_text)
+ # Fallback to "prettified" title if post_name is empty (can happen)
+ if permalink_title == ""
+ permalink_title = title.downcase.split.join('-')
+ end
+
+ date = Time.parse(item.at('wp:post_date').inner_text)
+ status = item.at('wp:status').inner_text
+
+ if status == "publish"
+ published = true
+ else
+ published = false
+ end
+
+ type = item.at('wp:post_type').inner_text
tags = (item/:category).map{|c| c.inner_text}.reject{|c| c == 'Uncategorized'}.uniq
+
+ metas = Hash.new
+ item.search("wp:postmeta").each do |meta|
+ key = meta.at('wp:meta_key').inner_text
+ value = meta.at('wp:meta_value').inner_text
+ metas[key] = value;
+ end
+
name = "#{date.strftime('%Y-%m-%d')}-#{permalink_title}.html"
header = {
- 'layout' => 'post',
+ 'layout' => type,
'title' => title,
- 'tags' => tags
+ 'tags' => tags,
+ 'status' => status,
+ 'type' => type,
+ 'published' => published,
+ 'meta' => metas
}
- File.open("_posts/#{name}", "w") do |f|
+ FileUtils.mkdir_p "_#{type}s"
+ File.open("_#{type}s/#{name}", "w") do |f|
f.puts header.to_yaml
f.puts '---'
f.puts item.at('content:encoded').inner_text
end
- posts += 1
+ import_count[type] += 1
end
- puts "Imported #{posts} posts"
+ import_count.each do |key, value|
+ puts "Imported #{value} #{key}s"
+ end
end
end
end
0  output/stylesheets/scribe-quirks.css
View
No changes.
177 output/stylesheets/scribe.css
View
@@ -0,0 +1,177 @@
+/* ---------------------------------------------------------------------------
+ Bare AsciiDoc styles
+ Ryan Tomayko <r@tomayko.com>
+--------------------------------------------------------------------------- */
+
+body {
+ font-family:verdana,helvetica,arial,sans-serif;
+ font-size:81.25%; /* 13px */
+ line-height:1.538; /* 20px */
+ margin:40px auto 50px auto;
+ max-width:53.8461538462em; /* 790px */
+ color:#333;
+}
+
+em {
+ font-style:italic;
+}
+
+strong {
+ font-weight:bold;
+ color:#000;
+}
+
+tt {
+ font-family:consolas, 'lucida console', 'bitstream vera sans mono',
+ 'courier new', monospace;
+ color:#000;
+}
+
+p, ul, ol, dl {
+ margin:10px 0
+}
+
+dl {
+ margin-left:40px
+}
+
+dt {
+ font-weight:normal;
+ color:#000;
+}
+
+h1, h2, h3, h4, h5 {
+ font-family:'lucida grande',georgia,verdana,helvetica,arial,sans-serif;
+ font-weight:normal;
+ color:#000;
+}
+
+h1 {
+ font-size:40px;
+ line-height:1.428;
+ margin:20px 0;
+}
+
+h2 {
+ font-size:30px;
+ line-height:1.36363636; /* repeating, of course */
+ margin:60px 0 20px 0;
+}
+
+h2 + .sectionbody {}
+
+h3 {
+ font-size:24px;
+ line-height:1.1;
+ margin:30px 0 10px 0;
+}
+
+h4 {
+ font-size:18px;
+ line-height:1.1;
+ margin:20px 0 5px 0;
+}
+
+h5 {
+ font-size:13px;
+ font-style:italic;
+ line-height:1.1;
+}
+
+#header {
+ text-align:center;
+ margin-bottom:30px;
+}
+
+#header h1 { margin-bottom:0 }
+
+.title, .sidebar-title {
+ font-weight:normal;
+ color:#000;
+ margin-bottom:0;
+}
+
+.admonitionblock .title {
+ font-weight:bold;
+}
+
+.admonitionblock {
+ margin:30px 0px;
+ color:#555;
+}
+
+.admonitionblock td.icon {
+ width:30px;
+ padding-right:20px;
+ padding-left:20px;
+ text-transform:uppercase;
+ font-weight:bold;
+ color:#888;
+}
+
+.listingblock {
+ margin: 13px 0;
+}
+
+.listingblock .content {
+ border:1px solid silver;
+ background:#eee;
+ padding:5px;
+}
+
+.listingblock .content pre {
+ margin:0;
+}
+
+.literalblock .content {
+ margin-left:40px;
+}
+
+.verseblock .content {
+ white-space:pre
+}
+
+.sidebarblock .sidebar-content {
+ border:1px solid silver;
+ background:#FFFFEE;
+ padding:0 10px;
+ color:#222;
+ font-size:smaller;
+ line-height:1.5;
+}
+
+.sidebar-title {
+ margin:10px 0;
+ font-weight:bold;
+ color:#442;
+}
+
+.quoteblock-content {
+ font-style:italic;
+ color:#444;
+ margin-left:40px;
+}
+
+.quoteblock-content .attribution {
+ font-style:normal;
+ text-align:right;
+ color:#000;
+}
+
+.exampleblock-content *:first-child { margin-top:0 }
+.exampleblock-content {
+ border-left:2px solid silver;
+ padding-left:8px;
+}
+
+#footer {
+ font-size:11px;
+ margin-top:40px;
+ border-top:1px solid silver;
+ color:#555;
+}
+
+#author {
+ color:#000;
+ text-transform:uppercase
+}

No commit comments for this range

Something went wrong with that request. Please try again.