monad 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CONTRIBUTING.markdown +91 -0
- data/Gemfile +1 -1
- data/History.markdown +772 -0
- data/{README.md → README.markdown} +5 -2
- data/Rakefile +163 -1
- data/bin/monad +86 -30
- data/features/create_sites.feature +54 -25
- data/features/data.feature +65 -0
- data/features/data_sources.feature +10 -10
- data/features/drafts.feature +5 -5
- data/features/embed_filters.feature +10 -10
- data/features/include_tag.feature +48 -0
- data/features/markdown.feature +5 -5
- data/features/pagination.feature +38 -10
- data/features/permalinks.feature +31 -11
- data/features/post_data.feature +41 -41
- data/features/post_excerpts.feature +50 -0
- data/features/site_configuration.feature +47 -26
- data/features/site_data.feature +30 -24
- data/features/step_definitions/{monad_steps.rb → jekyll_steps.rb} +66 -52
- data/features/support/env.rb +27 -8
- data/lib/jekyll.rb +99 -0
- data/lib/jekyll/cleaner.rb +73 -0
- data/lib/{monad → jekyll}/command.rb +6 -6
- data/lib/{monad → jekyll}/commands/build.rb +9 -9
- data/lib/jekyll/commands/doctor.rb +67 -0
- data/lib/jekyll/commands/new.rb +67 -0
- data/lib/jekyll/commands/serve.rb +65 -0
- data/lib/{monad → jekyll}/configuration.rb +60 -18
- data/lib/{monad → jekyll}/converter.rb +1 -1
- data/lib/{monad → jekyll}/converters/identity.rb +1 -1
- data/lib/{monad → jekyll}/converters/markdown.rb +2 -2
- data/lib/jekyll/converters/markdown/kramdown_parser.rb +29 -0
- data/lib/{monad → jekyll}/converters/markdown/maruku_parser.rb +12 -8
- data/lib/{monad → jekyll}/converters/markdown/rdiscount_parser.rb +4 -2
- data/lib/{monad → jekyll}/converters/markdown/redcarpet_parser.rb +1 -1
- data/lib/{monad → jekyll}/converters/textile.rb +1 -1
- data/lib/{monad → jekyll}/convertible.rb +39 -17
- data/lib/{monad → jekyll}/core_ext.rb +22 -4
- data/lib/jekyll/deprecator.rb +36 -0
- data/lib/{monad → jekyll}/draft.rb +1 -1
- data/lib/{monad → jekyll}/drivers/json_driver.rb +1 -1
- data/lib/{monad → jekyll}/drivers/yaml_driver.rb +1 -1
- data/lib/{monad → jekyll}/errors.rb +1 -1
- data/lib/jekyll/excerpt.rb +113 -0
- data/lib/{monad → jekyll}/filters.rb +16 -6
- data/lib/{monad → jekyll}/generator.rb +1 -1
- data/lib/jekyll/generators/pagination.rb +214 -0
- data/lib/{monad → jekyll}/layout.rb +4 -1
- data/lib/{monad → jekyll}/mime.types +0 -0
- data/lib/{monad → jekyll}/page.rb +36 -39
- data/lib/{monad → jekyll}/plugin.rb +1 -1
- data/lib/{monad → jekyll}/post.rb +58 -123
- data/lib/jekyll/related_posts.rb +59 -0
- data/lib/{monad → jekyll}/site.rb +120 -123
- data/lib/{monad → jekyll}/static_file.rb +1 -1
- data/lib/jekyll/stevenson.rb +89 -0
- data/lib/jekyll/tags/gist.rb +48 -0
- data/lib/{monad → jekyll}/tags/highlight.rb +3 -3
- data/lib/jekyll/tags/include.rb +135 -0
- data/lib/{monad → jekyll}/tags/post_url.rb +8 -6
- data/lib/jekyll/url.rb +67 -0
- data/lib/monad.rb +36 -27
- data/lib/site_template/_config.yml +2 -1
- data/lib/site_template/_layouts/default.html +21 -23
- data/lib/site_template/_layouts/post.html +1 -1
- data/lib/site_template/_posts/{0000-00-00-welcome-to-monad.markdown.erb → 0000-00-00-welcome-to-jekyll.markdown.erb} +6 -6
- data/lib/site_template/css/main.css +22 -27
- data/lib/site_template/index.html +2 -2
- data/monad.gemspec +153 -52
- data/site/.gitignore +4 -0
- data/site/CNAME +1 -0
- data/site/README +1 -0
- data/site/_config.yml +6 -0
- data/site/_includes/analytics.html +32 -0
- data/site/_includes/docs_contents.html +16 -0
- data/site/_includes/docs_contents_mobile.html +23 -0
- data/site/_includes/docs_option.html +11 -0
- data/site/_includes/docs_ul.html +20 -0
- data/site/_includes/footer.html +15 -0
- data/site/_includes/header.html +18 -0
- data/site/_includes/news_contents.html +23 -0
- data/site/_includes/news_contents_mobile.html +11 -0
- data/site/_includes/news_item.html +24 -0
- data/site/_includes/primary-nav-items.html +14 -0
- data/site/_includes/section_nav.html +22 -0
- data/site/_includes/top.html +17 -0
- data/site/_layouts/default.html +12 -0
- data/site/_layouts/docs.html +23 -0
- data/site/_layouts/news.html +19 -0
- data/site/_layouts/news_item.html +27 -0
- data/site/_posts/2013-05-06-jekyll-1-0-0-released.markdown +23 -0
- data/site/_posts/2013-05-08-jekyll-1-0-1-released.markdown +27 -0
- data/site/_posts/2013-05-12-jekyll-1-0-2-released.markdown +28 -0
- data/site/_posts/2013-06-07-jekyll-1-0-3-released.markdown +25 -0
- data/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown +27 -0
- data/site/_posts/2013-07-24-jekyll-1-1-1-released.markdown +31 -0
- data/site/_posts/2013-07-25-jekyll-1-0-4-released.markdown +20 -0
- data/site/_posts/2013-07-25-jekyll-1-1-2-released.markdown +20 -0
- data/site/_posts/2013-09-06-jekyll-1-2-0-released.markdown +23 -0
- data/site/_posts/2013-09-14-jekyll-1-2-1-released.markdown +19 -0
- data/site/css/gridism.css +110 -0
- data/site/css/normalize.css +1 -0
- data/site/css/pygments.css +70 -0
- data/site/css/style.css +946 -0
- data/site/docs/configuration.md +373 -0
- data/site/docs/contributing.md +128 -0
- data/site/docs/datafiles.md +63 -0
- data/site/docs/deployment-methods.md +109 -0
- data/site/docs/drafts.md +20 -0
- data/site/docs/extras.md +56 -0
- data/site/docs/frontmatter.md +180 -0
- data/site/docs/github-pages.md +91 -0
- data/site/docs/heroku.md +9 -0
- data/site/docs/history.md +722 -0
- data/site/docs/index.md +52 -0
- data/site/docs/installation.md +76 -0
- data/site/docs/migrations.md +257 -0
- data/site/docs/pages.md +86 -0
- data/site/docs/pagination.md +211 -0
- data/site/docs/permalinks.md +180 -0
- data/site/docs/plugins.md +508 -0
- data/site/docs/posts.md +181 -0
- data/site/docs/quickstart.md +32 -0
- data/site/docs/resources.md +46 -0
- data/site/docs/sites.md +29 -0
- data/site/docs/structure.md +190 -0
- data/site/docs/templates.md +319 -0
- data/site/docs/troubleshooting.md +150 -0
- data/site/docs/upgrading.md +146 -0
- data/site/docs/usage.md +63 -0
- data/site/docs/variables.md +322 -0
- data/site/favicon.png +0 -0
- data/site/feed.xml +36 -0
- data/site/freenode.txt +1 -0
- data/site/img/article-footer.png +0 -0
- data/site/img/footer-arrow.png +0 -0
- data/site/img/footer-logo.png +0 -0
- data/site/img/logo-2x.png +0 -0
- data/site/img/octojekyll.png +0 -0
- data/site/img/tube.png +0 -0
- data/site/img/tube1x.png +0 -0
- data/site/index.html +90 -0
- data/site/js/modernizr-2.5.3.min.js +4 -0
- data/site/news/index.html +10 -0
- data/site/news/releases/index.html +10 -0
- data/test/helper.rb +6 -3
- data/test/source/+/foo.md +7 -0
- data/test/source/_data/languages.yml +2 -0
- data/test/source/_data/members.yaml +7 -0
- data/test/source/_data/products.yml +4 -0
- data/test/source/_includes/params.html +7 -0
- data/test/source/_layouts/default.html +1 -1
- data/test/source/_layouts/post/simple.html +1 -0
- data/test/source/_plugins/dummy.rb +1 -1
- data/test/source/_posts/2013-01-02-post-excerpt.markdown +1 -1
- data/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown +23 -0
- data/test/source/_posts/2013-08-01-mkdn-extension.mkdn +0 -0
- data/test/source/deal.with.dots.html +1 -1
- data/test/source/products.yml +4 -0
- data/test/test_configuration.rb +46 -11
- data/test/test_convertible.rb +2 -2
- data/test/test_excerpt.rb +78 -0
- data/test/test_filters.rb +4 -4
- data/test/test_generated_site.rb +13 -13
- data/test/test_json_driver.rb +9 -9
- data/test/test_kramdown.rb +32 -5
- data/test/test_new_command.rb +8 -8
- data/test/test_page.rb +12 -3
- data/test/test_pager.rb +34 -33
- data/test/test_post.rb +34 -26
- data/test/test_redcloth.rb +3 -3
- data/test/test_related_posts.rb +47 -0
- data/test/test_site.rb +102 -44
- data/test/test_tags.rb +168 -23
- data/test/test_url.rb +28 -0
- data/test/test_yaml_driver.rb +6 -6
- metadata +215 -137
- data/lib/monad/commands/doctor.rb +0 -29
- data/lib/monad/commands/new.rb +0 -50
- data/lib/monad/commands/serve.rb +0 -33
- data/lib/monad/converters/markdown/kramdown_parser.rb +0 -44
- data/lib/monad/deprecator.rb +0 -32
- data/lib/monad/generators/pagination.rb +0 -143
- data/lib/monad/logger.rb +0 -54
- data/lib/monad/tags/gist.rb +0 -30
- data/lib/monad/tags/include.rb +0 -37
data/site/docs/posts.md
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
---
|
2
|
+
layout: docs
|
3
|
+
title: Writing posts
|
4
|
+
prev_section: frontmatter
|
5
|
+
next_section: pages
|
6
|
+
permalink: /docs/posts/
|
7
|
+
---
|
8
|
+
|
9
|
+
One of Jekyll’s best aspects is that it is “blog aware”. What does this mean,
|
10
|
+
exactly? Well, simply put, it means that blogging is baked into Jekyll’s
|
11
|
+
functionality. If you write articles and publish them online, this means that
|
12
|
+
you can publish and maintain a blog simply by managing a folder of text-files on
|
13
|
+
your computer. Compared to the hassle of configuring and maintaining databases
|
14
|
+
and web-based CMS systems, this will be a welcome change!
|
15
|
+
|
16
|
+
## The Posts Folder
|
17
|
+
|
18
|
+
As explained on the [directory structure](../structure/) page, the `_posts`
|
19
|
+
folder is where your blog posts will live. These files can be either
|
20
|
+
[Markdown](http://daringfireball.net/projects/markdown/) or
|
21
|
+
[Textile](http://textile.sitemonks.com/) formatted text files, and as long as
|
22
|
+
they have [YAML front-matter](../frontmatter/), they will be converted from their
|
23
|
+
source format into an HTML page that is part of your static site.
|
24
|
+
|
25
|
+
### Creating Post Files
|
26
|
+
|
27
|
+
To create a new post, all you need to do is create a new file in the `_posts`
|
28
|
+
directory. How you name files in this folder is important. Jekyll requires blog
|
29
|
+
post files to be named according to the following format:
|
30
|
+
|
31
|
+
{% highlight bash %}
|
32
|
+
YEAR-MONTH-DAY-title.MARKUP
|
33
|
+
{% endhighlight %}
|
34
|
+
|
35
|
+
Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit
|
36
|
+
numbers, and `MARKUP` is the file extension representing the format used in the
|
37
|
+
file. For example, the following are examples of valid post filenames:
|
38
|
+
|
39
|
+
{% highlight bash %}
|
40
|
+
2011-12-31-new-years-eve-is-awesome.md
|
41
|
+
2012-09-12-how-to-write-a-blog.textile
|
42
|
+
{% endhighlight %}
|
43
|
+
|
44
|
+
### Content Formats
|
45
|
+
|
46
|
+
All blog post files must begin with [YAML front- matter](../frontmatter/). After
|
47
|
+
that, it's simply a matter of deciding which format you prefer. Jekyll supports
|
48
|
+
two popular content markup formats:
|
49
|
+
[Markdown](http://daringfireball.net/projects/markdown/) and
|
50
|
+
[Textile](http://textile.sitemonks.com/). These formats each have their own way
|
51
|
+
of marking up different types of content within a post, so you should
|
52
|
+
familiarize yourself with these formats and decide which one best suits your
|
53
|
+
needs.
|
54
|
+
|
55
|
+
## Including images and resources
|
56
|
+
|
57
|
+
Chances are, at some point, you'll want to include images, downloads, or other
|
58
|
+
digital assets along with your text content. While the syntax for linking to
|
59
|
+
these resources differs between Markdown and Textile, the problem of working out
|
60
|
+
where to store these files in your site is something everyone will face.
|
61
|
+
|
62
|
+
Because of Jekyll’s flexibility, there are many solutions to how to do this. One
|
63
|
+
common solution is to create a folder in the root of the project directory
|
64
|
+
called something like `assets` or `downloads`, into which any images, downloads
|
65
|
+
or other resources are placed. Then, from within any post, they can be linked to
|
66
|
+
using the site’s root as the path for the asset to include. Again, this will
|
67
|
+
depend on the way your site’s (sub)domain and path are configured, but here some
|
68
|
+
examples (in Markdown) of how you could do this using the `site.url` variable in
|
69
|
+
a post.
|
70
|
+
|
71
|
+
Including an image asset in a post:
|
72
|
+
|
73
|
+
{% highlight text %}
|
74
|
+
… which is shown in the screenshot below:
|
75
|
+
![My helpful screenshot]({% raw %}{{ site.url }}{% endraw %}/assets/screenshot.jpg)
|
76
|
+
{% endhighlight %}
|
77
|
+
|
78
|
+
Linking to a PDF for readers to download:
|
79
|
+
|
80
|
+
{% highlight text %}
|
81
|
+
… you can [get the PDF]({% raw %}{{ site.url }}{% endraw %}/assets/mydoc.pdf) directly.
|
82
|
+
{% endhighlight %}
|
83
|
+
|
84
|
+
<div class="note">
|
85
|
+
<h5>ProTip™: Link using just the site root URL</h5>
|
86
|
+
<p>
|
87
|
+
You can skip the <code>{% raw %}{{ site.url }}{% endraw %}</code> variable
|
88
|
+
if you <strong>know</strong> your site will only ever be displayed at the
|
89
|
+
root URL of your domain. In this case you can reference assets directly with
|
90
|
+
just <code>/path/file.jpg</code>.
|
91
|
+
</p>
|
92
|
+
</div>
|
93
|
+
|
94
|
+
## Displaying an index of posts
|
95
|
+
|
96
|
+
It’s all well and good to have posts in a folder, but a blog is no use unless
|
97
|
+
you have a list of posts somewhere. Creating an index of posts on another page
|
98
|
+
(or in a [template](../templates/)) is easy, thanks to the [Liquid template
|
99
|
+
language](http://wiki.shopify.com/Liquid) and its tags. Here’s a basic example of how
|
100
|
+
to create a list of links to your blog posts:
|
101
|
+
|
102
|
+
{% highlight html %}
|
103
|
+
<ul>
|
104
|
+
{% raw %}{% for post in site.posts %}{% endraw %}
|
105
|
+
<li>
|
106
|
+
<a href="{% raw %}{{ post.url }}{% endraw %}">{% raw %}{{ post.title }}{% endraw %}</a>
|
107
|
+
</li>
|
108
|
+
{% raw %}{% endfor %}{% endraw %}
|
109
|
+
</ul>
|
110
|
+
{% endhighlight %}
|
111
|
+
|
112
|
+
Of course, you have full control over how (and where) you display your posts,
|
113
|
+
and how you structure your site. You should read more about [how templates
|
114
|
+
work](../templates/) with Jekyll if you want to know more.
|
115
|
+
|
116
|
+
## Post excerpts
|
117
|
+
|
118
|
+
Each post automatically takes the first block of text, from the beginning of the content
|
119
|
+
to the first occurrence of `excerpt_separator`, and sets it as the `post.excerpt`.
|
120
|
+
Take the above example of an index of posts. Perhaps you want to include
|
121
|
+
a little hint about the post's content by adding the first paragraph of each of your
|
122
|
+
posts:
|
123
|
+
|
124
|
+
{% highlight html %}
|
125
|
+
<ul>
|
126
|
+
{% raw %}{% for post in site.posts %}{% endraw %}
|
127
|
+
<li>
|
128
|
+
<a href="{% raw %}{{ post.url }}{% endraw %}">{% raw %}{{ post.title }}{% endraw %}</a>
|
129
|
+
<p>{% raw %}{{ post.excerpt }}{% endraw %}</p>
|
130
|
+
</li>
|
131
|
+
{% raw %}{% endfor %}{% endraw %}
|
132
|
+
</ul>
|
133
|
+
{% endhighlight %}
|
134
|
+
|
135
|
+
If you don't like the automatically-generated post excerpt, it can be overridden by adding
|
136
|
+
`excerpt` to your post's YAML front-matter. Completely disable it by setting
|
137
|
+
your `excerpt_separator` to `""`.
|
138
|
+
|
139
|
+
## Highlighting code snippets
|
140
|
+
|
141
|
+
Jekyll also has built-in support for syntax highlighting of code snippets using
|
142
|
+
Pygments, and including a code snippet in any post is easy. Just use the
|
143
|
+
dedicated Liquid tag as follows:
|
144
|
+
|
145
|
+
{% highlight text %}
|
146
|
+
{% raw %}{% highlight ruby %}{% endraw %}
|
147
|
+
def show
|
148
|
+
@widget = Widget(params[:id])
|
149
|
+
respond_to do |format|
|
150
|
+
format.html # show.html.erb
|
151
|
+
format.json { render json: @widget }
|
152
|
+
end
|
153
|
+
end
|
154
|
+
{% raw %}{% endhighlight %}{% endraw %}
|
155
|
+
{% endhighlight %}
|
156
|
+
|
157
|
+
And the output will look like this:
|
158
|
+
|
159
|
+
{% highlight ruby %}
|
160
|
+
def show
|
161
|
+
@widget = Widget(params[:id])
|
162
|
+
respond_to do |format|
|
163
|
+
format.html # show.html.erb
|
164
|
+
format.json { render json: @widget }
|
165
|
+
end
|
166
|
+
end
|
167
|
+
{% endhighlight %}
|
168
|
+
|
169
|
+
<div class="note">
|
170
|
+
<h5>ProTip™: Show line numbers</h5>
|
171
|
+
<p>
|
172
|
+
You can make code snippets include line-numbers by adding the word
|
173
|
+
<code>linenos</code> to the end of the opening highlight tag like this:
|
174
|
+
<code>{% raw %}{% highlight ruby linenos %}{% endraw %}</code>.
|
175
|
+
</p>
|
176
|
+
</div>
|
177
|
+
|
178
|
+
These basics should be enough to get you started writing your first posts. When
|
179
|
+
you’re ready to dig into what else is possible, you might be interested in doing
|
180
|
+
things like [customizing post permalinks](../permalinks/) or using [custom
|
181
|
+
variables](../variables/) in your posts and elsewhere on your site.
|
@@ -0,0 +1,32 @@
|
|
1
|
+
---
|
2
|
+
layout: docs
|
3
|
+
title: Quick-start guide
|
4
|
+
prev_section: home
|
5
|
+
next_section: installation
|
6
|
+
permalink: /docs/quickstart/
|
7
|
+
---
|
8
|
+
|
9
|
+
For the impatient, here's how to get a boilerplate Jekyll site up and running.
|
10
|
+
|
11
|
+
{% highlight bash %}
|
12
|
+
~ $ gem install jekyll
|
13
|
+
~ $ jekyll new myblog
|
14
|
+
~ $ cd myblog
|
15
|
+
~/myblog $ jekyll serve
|
16
|
+
# => Now browse to http://localhost:4000
|
17
|
+
{% endhighlight %}
|
18
|
+
|
19
|
+
That's nothing, though. The real magic happens when you start creating blog
|
20
|
+
posts, using the front-matter to control templates and layouts, and taking
|
21
|
+
advantage of all the awesome configuration options Jekyll makes available.
|
22
|
+
|
23
|
+
<div class="note info">
|
24
|
+
<h5>Redcarpet is the default Markdown engine for new sites</h5>
|
25
|
+
<p>In Jekyll 1.1, we switched the default markdown engine for sites
|
26
|
+
generated with <code>jekyll new</code> to Redcarpet</p>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
If you're running into problems, ensure you have all the [requirements
|
30
|
+
installed][Installation].
|
31
|
+
|
32
|
+
[Installation]: /docs/installation/
|
@@ -0,0 +1,46 @@
|
|
1
|
+
---
|
2
|
+
layout: docs
|
3
|
+
title: Resources
|
4
|
+
prev_section: sites
|
5
|
+
next_section: upgrading
|
6
|
+
permalink: /docs/resources/
|
7
|
+
---
|
8
|
+
|
9
|
+
Jekyll’s growing use is producing a wide variety of tutorials, frameworks, extensions, examples, and other resources that can be very helpful. Below is a collection of links to some of the most popular Jekyll resources.
|
10
|
+
|
11
|
+
### Jekyll tips & tricks, and examples
|
12
|
+
|
13
|
+
- [Tips for working with GitHub Pages Integration](https://gist.github.com/2890453)
|
14
|
+
|
15
|
+
Code example reuse, and keeping documentation up to date.
|
16
|
+
|
17
|
+
- [Use Simple Form to integrate a simple contact
|
18
|
+
form](http://getsimpleform.com/)
|
19
|
+
- [JekyllBootstrap.com](http://jekyllbootstrap.com)
|
20
|
+
|
21
|
+
Provides detailed explanations, examples, and helper-code to make
|
22
|
+
getting started with Jekyll easier.
|
23
|
+
|
24
|
+
### Tutorials
|
25
|
+
|
26
|
+
#### Integrating Jekyll with Git
|
27
|
+
|
28
|
+
- [Blogging with Git, Emacs and Jekyll](http://metajack.im/2009/01/23/blogging-with-git-emacs-and-jekyll/)
|
29
|
+
|
30
|
+
#### Other hacks
|
31
|
+
|
32
|
+
- [Integrating Twitter with Jekyll](http://www.justkez.com/integrating-twitter-with-jekyll/)
|
33
|
+
> “Having migrated Justkez.com to be based on Jekyll, I was pondering how I might include my recent twitterings on the front page of the site. In the WordPress world, this would have been done via a plugin which may or may not have hung the loading of the page, might have employed caching, but would certainly have had some overheads. … Not in Jekyll.”
|
34
|
+
- [‘My Jekyll Fork’, by Mike West](http://mikewest.org/2009/11/my-jekyll-fork)
|
35
|
+
> “Jekyll is a well-architected throwback to a time before WordPress, when men were men, and HTML was static. I like the ideas it espouses, and have made a few improvements to it’s core. Here, I’ll point out some highlights of my fork in the hopes that they see usage beyond this site.”
|
36
|
+
- [‘About this Website’, by Carter Allen](http://cartera.me/2010/08/12/about-this-website/)
|
37
|
+
> “Jekyll is everything that I ever wanted in a blogging engine. Really. It isn’t perfect, but what’s excellent about it is that if there’s something wrong, I know exactly how it works and how to fix it. It runs on the your machine only, and is essentially an added”build" step between you and the browser. I coded this entire site in TextMate using standard HTML5 and CSS3, and then at the end I added just a few little variables to the markup. Presto-chango, my site is built and I am at peace with the world.”
|
38
|
+
- [Generating a Tag Cloud in Jekyll](http://www.justkez.com/generating-a-tag-cloud-in-jekyll/)
|
39
|
+
|
40
|
+
A guide to implementing a tag cloud and per-tag content pages using Jekyll.
|
41
|
+
|
42
|
+
- [Jekyll Extensions -= Pain](http://rfelix.com/2010/01/19/jekyll-extensions-minus-equal-pain/)
|
43
|
+
|
44
|
+
A way to [extend Jekyll](http://github.com/rfelix/jekyll_ext) without forking and modifying the Jekyll gem codebase and some [portable Jekyll extensions](http://wiki.github.com/rfelix/jekyll_ext/extensions) that can be reused and shared.
|
45
|
+
|
46
|
+
- [Using your Rails layouts in Jekyll](http://numbers.brighterplanet.com/2010/08/09/sharing-rails-views-with-jekyll)
|
data/site/docs/sites.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
---
|
2
|
+
layout: docs
|
3
|
+
title: Sites using Jekyll
|
4
|
+
prev_section: troubleshooting
|
5
|
+
next_section: resources
|
6
|
+
permalink: /docs/sites/
|
7
|
+
---
|
8
|
+
|
9
|
+
It’s interesting to see what designs and features others have come up
|
10
|
+
with. Below are some Jekyll-powered blogs which were hand-picked for
|
11
|
+
learning purposes.
|
12
|
+
|
13
|
+
- [Tom Preston-Werner](http://tom.preston-werner.com/)
|
14
|
+
([source](http://github.com/mojombo/mojombo.github.com))
|
15
|
+
- [Nick Quaranto](http://quaran.to/)
|
16
|
+
([source](https://github.com/qrush/qrush.github.com))
|
17
|
+
- [Roger Chapman](http://rogchap.com/)
|
18
|
+
([source](https://github.com/rogchap/rogchap.github.com))
|
19
|
+
- [GitHub Official Teaching Materials](http://teach.github.com)
|
20
|
+
([source](https://github.com/github/teach.github.com))
|
21
|
+
- [Rasmus Andersson](http://rsms.me/)
|
22
|
+
([source](https://github.com/rsms/rsms.github.com))
|
23
|
+
- [Scott Chacon](http://schacon.github.com)
|
24
|
+
([source](https://github.com/schacon/schacon.github.com))
|
25
|
+
|
26
|
+
If you would like to explore more examples, you can find a list of sites
|
27
|
+
and their sources on the ["Sites" page in the Jekyll wiki][jekyll-sites].
|
28
|
+
|
29
|
+
[jekyll-sites]: {{ site.repository }}/wiki/Sites
|
@@ -0,0 +1,190 @@
|
|
1
|
+
---
|
2
|
+
layout: docs
|
3
|
+
title: Directory structure
|
4
|
+
prev_section: usage
|
5
|
+
next_section: configuration
|
6
|
+
permalink: /docs/structure/
|
7
|
+
---
|
8
|
+
|
9
|
+
Jekyll is, at its core, a text transformation engine. The concept behind the
|
10
|
+
system is this: you give it text written in your favorite markup language, be
|
11
|
+
that Markdown, Textile, or just plain HTML, and it churns that through a layout
|
12
|
+
or series of layout files. Throughout that process you can tweak how you want
|
13
|
+
the site URLs to look, what data gets displayed in the layout, and more. This is
|
14
|
+
all done through editing text files, and the static web site is the final
|
15
|
+
product.
|
16
|
+
|
17
|
+
A basic Jekyll site usually looks something like this:
|
18
|
+
|
19
|
+
{% highlight bash %}
|
20
|
+
.
|
21
|
+
├── _config.yml
|
22
|
+
├── _drafts
|
23
|
+
| ├── begin-with-the-crazy-ideas.textile
|
24
|
+
| └── on-simplicity-in-technology.markdown
|
25
|
+
├── _includes
|
26
|
+
| ├── footer.html
|
27
|
+
| └── header.html
|
28
|
+
├── _layouts
|
29
|
+
| ├── default.html
|
30
|
+
| └── post.html
|
31
|
+
├── _posts
|
32
|
+
| ├── 2007-10-29-why-every-programmer-should-play-nethack.textile
|
33
|
+
| └── 2009-04-26-barcamp-boston-4-roundup.textile
|
34
|
+
├── _data
|
35
|
+
| └── members.yml
|
36
|
+
├── _site
|
37
|
+
└── index.html
|
38
|
+
{% endhighlight %}
|
39
|
+
|
40
|
+
An overview of what each of these does:
|
41
|
+
|
42
|
+
<div class="mobile-side-scroller">
|
43
|
+
<table>
|
44
|
+
<thead>
|
45
|
+
<tr>
|
46
|
+
<th>File / Directory</th>
|
47
|
+
<th>Description</th>
|
48
|
+
</tr>
|
49
|
+
</thead>
|
50
|
+
<tbody>
|
51
|
+
<tr>
|
52
|
+
<td>
|
53
|
+
<p><code>_config.yml</code></p>
|
54
|
+
</td>
|
55
|
+
<td>
|
56
|
+
<p>
|
57
|
+
|
58
|
+
Stores <a href="../configuration/">configuration</a> data. Many of
|
59
|
+
these options can be specified from the command line executable but
|
60
|
+
it’s easier to specify them here so you don’t have to remember them.
|
61
|
+
|
62
|
+
</p>
|
63
|
+
</td>
|
64
|
+
</tr>
|
65
|
+
<tr>
|
66
|
+
<td>
|
67
|
+
<p><code>_drafts</code></p>
|
68
|
+
</td>
|
69
|
+
<td>
|
70
|
+
<p>
|
71
|
+
|
72
|
+
Drafts are unpublished posts. The format of these files is without a date: <code>title.MARKUP</code>. Learn how to <a href="../drafts/">work with drafts</a>.
|
73
|
+
|
74
|
+
</p>
|
75
|
+
</td>
|
76
|
+
</tr>
|
77
|
+
<tr>
|
78
|
+
<td>
|
79
|
+
<p><code>_includes</code></p>
|
80
|
+
</td>
|
81
|
+
<td>
|
82
|
+
<p>
|
83
|
+
|
84
|
+
These are the partials that can be mixed and matched by your layouts
|
85
|
+
and posts to facilitate reuse. The liquid tag
|
86
|
+
<code>{% raw %}{% include file.ext %}{% endraw %}</code>
|
87
|
+
can be used to include the partial in
|
88
|
+
<code>_includes/file.ext</code>.
|
89
|
+
|
90
|
+
</p>
|
91
|
+
</td>
|
92
|
+
</tr>
|
93
|
+
<tr>
|
94
|
+
<td>
|
95
|
+
<p><code>_layouts</code></p>
|
96
|
+
</td>
|
97
|
+
<td>
|
98
|
+
<p>
|
99
|
+
|
100
|
+
These are the templates that wrap posts. Layouts are chosen on a post-
|
101
|
+
by-post basis in the <a href="../frontmatter/">YAML front matter</a>,
|
102
|
+
which is described in the next section. The liquid tag
|
103
|
+
<code>{% raw %}{{ content }}{% endraw %}</code>
|
104
|
+
is used to inject content into the web page.
|
105
|
+
|
106
|
+
</p>
|
107
|
+
</td>
|
108
|
+
</tr>
|
109
|
+
<tr>
|
110
|
+
<td>
|
111
|
+
<p><code>_posts</code></p>
|
112
|
+
</td>
|
113
|
+
<td>
|
114
|
+
<p>
|
115
|
+
|
116
|
+
Your dynamic content, so to speak. The format of these files is
|
117
|
+
important, and must follow the format:
|
118
|
+
<code>YEAR-MONTH-DAY-title.MARKUP</code>.
|
119
|
+
The <a href="../permalinks/">permalinks</a> can be customized for each
|
120
|
+
post, but the date and markup language are determined solely by the
|
121
|
+
file name.
|
122
|
+
|
123
|
+
</p>
|
124
|
+
</td>
|
125
|
+
</tr>
|
126
|
+
<tr>
|
127
|
+
<td>
|
128
|
+
<p><code>_data</code></p>
|
129
|
+
</td>
|
130
|
+
<td>
|
131
|
+
<p>
|
132
|
+
|
133
|
+
Well-formatted site data should be placed here. The jekyll engine will
|
134
|
+
autoload all yaml files (ends with <code>.yml</code> or <code>.yaml</code>)
|
135
|
+
in this directory. If there's a file <code>members.yml</code> under the directory,
|
136
|
+
then you can access contents of the file through <code>site.data.members</code>.
|
137
|
+
|
138
|
+
</p>
|
139
|
+
</td>
|
140
|
+
</tr>
|
141
|
+
<tr>
|
142
|
+
<td>
|
143
|
+
<p><code>_site</code></p>
|
144
|
+
</td>
|
145
|
+
<td>
|
146
|
+
<p>
|
147
|
+
|
148
|
+
This is where the generated site will be placed (by default) once
|
149
|
+
Jekyll is done transforming it. It’s probably a good idea to add this
|
150
|
+
to your <code>.gitignore</code> file.
|
151
|
+
|
152
|
+
</p>
|
153
|
+
</td>
|
154
|
+
</tr>
|
155
|
+
<tr>
|
156
|
+
<td>
|
157
|
+
<p><code>index.html</code> and other HTML, Markdown, Textile files</p>
|
158
|
+
</td>
|
159
|
+
<td>
|
160
|
+
<p>
|
161
|
+
|
162
|
+
Provided that the file has a <a href="../frontmatter/">YAML Front
|
163
|
+
Matter</a> section, it will be transformed by Jekyll. The same will
|
164
|
+
happen for any <code>.html</code>, <code>.markdown</code>,
|
165
|
+
<code>.md</code>, or <code>.textile</code> file in your site’s root
|
166
|
+
directory or directories not listed above.
|
167
|
+
|
168
|
+
</p>
|
169
|
+
</td>
|
170
|
+
</tr>
|
171
|
+
<tr>
|
172
|
+
<td>
|
173
|
+
<p>Other Files/Folders</p>
|
174
|
+
</td>
|
175
|
+
<td>
|
176
|
+
<p>
|
177
|
+
|
178
|
+
Every other directory and file except for those listed above—such as
|
179
|
+
<code>css</code> and <code>images</code> folders,
|
180
|
+
<code>favicon.ico</code> files, and so forth—will be copied verbatim
|
181
|
+
to the generated site. There are plenty of <a href="../sites/">sites
|
182
|
+
already using Jekyll</a> if you’re curious to see how they’re laid
|
183
|
+
out.
|
184
|
+
|
185
|
+
</p>
|
186
|
+
</td>
|
187
|
+
</tr>
|
188
|
+
</tbody>
|
189
|
+
</table>
|
190
|
+
</div>
|