monad 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.markdown +91 -0
  3. data/Gemfile +1 -1
  4. data/History.markdown +772 -0
  5. data/{README.md → README.markdown} +5 -2
  6. data/Rakefile +163 -1
  7. data/bin/monad +86 -30
  8. data/features/create_sites.feature +54 -25
  9. data/features/data.feature +65 -0
  10. data/features/data_sources.feature +10 -10
  11. data/features/drafts.feature +5 -5
  12. data/features/embed_filters.feature +10 -10
  13. data/features/include_tag.feature +48 -0
  14. data/features/markdown.feature +5 -5
  15. data/features/pagination.feature +38 -10
  16. data/features/permalinks.feature +31 -11
  17. data/features/post_data.feature +41 -41
  18. data/features/post_excerpts.feature +50 -0
  19. data/features/site_configuration.feature +47 -26
  20. data/features/site_data.feature +30 -24
  21. data/features/step_definitions/{monad_steps.rb → jekyll_steps.rb} +66 -52
  22. data/features/support/env.rb +27 -8
  23. data/lib/jekyll.rb +99 -0
  24. data/lib/jekyll/cleaner.rb +73 -0
  25. data/lib/{monad → jekyll}/command.rb +6 -6
  26. data/lib/{monad → jekyll}/commands/build.rb +9 -9
  27. data/lib/jekyll/commands/doctor.rb +67 -0
  28. data/lib/jekyll/commands/new.rb +67 -0
  29. data/lib/jekyll/commands/serve.rb +65 -0
  30. data/lib/{monad → jekyll}/configuration.rb +60 -18
  31. data/lib/{monad → jekyll}/converter.rb +1 -1
  32. data/lib/{monad → jekyll}/converters/identity.rb +1 -1
  33. data/lib/{monad → jekyll}/converters/markdown.rb +2 -2
  34. data/lib/jekyll/converters/markdown/kramdown_parser.rb +29 -0
  35. data/lib/{monad → jekyll}/converters/markdown/maruku_parser.rb +12 -8
  36. data/lib/{monad → jekyll}/converters/markdown/rdiscount_parser.rb +4 -2
  37. data/lib/{monad → jekyll}/converters/markdown/redcarpet_parser.rb +1 -1
  38. data/lib/{monad → jekyll}/converters/textile.rb +1 -1
  39. data/lib/{monad → jekyll}/convertible.rb +39 -17
  40. data/lib/{monad → jekyll}/core_ext.rb +22 -4
  41. data/lib/jekyll/deprecator.rb +36 -0
  42. data/lib/{monad → jekyll}/draft.rb +1 -1
  43. data/lib/{monad → jekyll}/drivers/json_driver.rb +1 -1
  44. data/lib/{monad → jekyll}/drivers/yaml_driver.rb +1 -1
  45. data/lib/{monad → jekyll}/errors.rb +1 -1
  46. data/lib/jekyll/excerpt.rb +113 -0
  47. data/lib/{monad → jekyll}/filters.rb +16 -6
  48. data/lib/{monad → jekyll}/generator.rb +1 -1
  49. data/lib/jekyll/generators/pagination.rb +214 -0
  50. data/lib/{monad → jekyll}/layout.rb +4 -1
  51. data/lib/{monad → jekyll}/mime.types +0 -0
  52. data/lib/{monad → jekyll}/page.rb +36 -39
  53. data/lib/{monad → jekyll}/plugin.rb +1 -1
  54. data/lib/{monad → jekyll}/post.rb +58 -123
  55. data/lib/jekyll/related_posts.rb +59 -0
  56. data/lib/{monad → jekyll}/site.rb +120 -123
  57. data/lib/{monad → jekyll}/static_file.rb +1 -1
  58. data/lib/jekyll/stevenson.rb +89 -0
  59. data/lib/jekyll/tags/gist.rb +48 -0
  60. data/lib/{monad → jekyll}/tags/highlight.rb +3 -3
  61. data/lib/jekyll/tags/include.rb +135 -0
  62. data/lib/{monad → jekyll}/tags/post_url.rb +8 -6
  63. data/lib/jekyll/url.rb +67 -0
  64. data/lib/monad.rb +36 -27
  65. data/lib/site_template/_config.yml +2 -1
  66. data/lib/site_template/_layouts/default.html +21 -23
  67. data/lib/site_template/_layouts/post.html +1 -1
  68. data/lib/site_template/_posts/{0000-00-00-welcome-to-monad.markdown.erb → 0000-00-00-welcome-to-jekyll.markdown.erb} +6 -6
  69. data/lib/site_template/css/main.css +22 -27
  70. data/lib/site_template/index.html +2 -2
  71. data/monad.gemspec +153 -52
  72. data/site/.gitignore +4 -0
  73. data/site/CNAME +1 -0
  74. data/site/README +1 -0
  75. data/site/_config.yml +6 -0
  76. data/site/_includes/analytics.html +32 -0
  77. data/site/_includes/docs_contents.html +16 -0
  78. data/site/_includes/docs_contents_mobile.html +23 -0
  79. data/site/_includes/docs_option.html +11 -0
  80. data/site/_includes/docs_ul.html +20 -0
  81. data/site/_includes/footer.html +15 -0
  82. data/site/_includes/header.html +18 -0
  83. data/site/_includes/news_contents.html +23 -0
  84. data/site/_includes/news_contents_mobile.html +11 -0
  85. data/site/_includes/news_item.html +24 -0
  86. data/site/_includes/primary-nav-items.html +14 -0
  87. data/site/_includes/section_nav.html +22 -0
  88. data/site/_includes/top.html +17 -0
  89. data/site/_layouts/default.html +12 -0
  90. data/site/_layouts/docs.html +23 -0
  91. data/site/_layouts/news.html +19 -0
  92. data/site/_layouts/news_item.html +27 -0
  93. data/site/_posts/2013-05-06-jekyll-1-0-0-released.markdown +23 -0
  94. data/site/_posts/2013-05-08-jekyll-1-0-1-released.markdown +27 -0
  95. data/site/_posts/2013-05-12-jekyll-1-0-2-released.markdown +28 -0
  96. data/site/_posts/2013-06-07-jekyll-1-0-3-released.markdown +25 -0
  97. data/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown +27 -0
  98. data/site/_posts/2013-07-24-jekyll-1-1-1-released.markdown +31 -0
  99. data/site/_posts/2013-07-25-jekyll-1-0-4-released.markdown +20 -0
  100. data/site/_posts/2013-07-25-jekyll-1-1-2-released.markdown +20 -0
  101. data/site/_posts/2013-09-06-jekyll-1-2-0-released.markdown +23 -0
  102. data/site/_posts/2013-09-14-jekyll-1-2-1-released.markdown +19 -0
  103. data/site/css/gridism.css +110 -0
  104. data/site/css/normalize.css +1 -0
  105. data/site/css/pygments.css +70 -0
  106. data/site/css/style.css +946 -0
  107. data/site/docs/configuration.md +373 -0
  108. data/site/docs/contributing.md +128 -0
  109. data/site/docs/datafiles.md +63 -0
  110. data/site/docs/deployment-methods.md +109 -0
  111. data/site/docs/drafts.md +20 -0
  112. data/site/docs/extras.md +56 -0
  113. data/site/docs/frontmatter.md +180 -0
  114. data/site/docs/github-pages.md +91 -0
  115. data/site/docs/heroku.md +9 -0
  116. data/site/docs/history.md +722 -0
  117. data/site/docs/index.md +52 -0
  118. data/site/docs/installation.md +76 -0
  119. data/site/docs/migrations.md +257 -0
  120. data/site/docs/pages.md +86 -0
  121. data/site/docs/pagination.md +211 -0
  122. data/site/docs/permalinks.md +180 -0
  123. data/site/docs/plugins.md +508 -0
  124. data/site/docs/posts.md +181 -0
  125. data/site/docs/quickstart.md +32 -0
  126. data/site/docs/resources.md +46 -0
  127. data/site/docs/sites.md +29 -0
  128. data/site/docs/structure.md +190 -0
  129. data/site/docs/templates.md +319 -0
  130. data/site/docs/troubleshooting.md +150 -0
  131. data/site/docs/upgrading.md +146 -0
  132. data/site/docs/usage.md +63 -0
  133. data/site/docs/variables.md +322 -0
  134. data/site/favicon.png +0 -0
  135. data/site/feed.xml +36 -0
  136. data/site/freenode.txt +1 -0
  137. data/site/img/article-footer.png +0 -0
  138. data/site/img/footer-arrow.png +0 -0
  139. data/site/img/footer-logo.png +0 -0
  140. data/site/img/logo-2x.png +0 -0
  141. data/site/img/octojekyll.png +0 -0
  142. data/site/img/tube.png +0 -0
  143. data/site/img/tube1x.png +0 -0
  144. data/site/index.html +90 -0
  145. data/site/js/modernizr-2.5.3.min.js +4 -0
  146. data/site/news/index.html +10 -0
  147. data/site/news/releases/index.html +10 -0
  148. data/test/helper.rb +6 -3
  149. data/test/source/+/foo.md +7 -0
  150. data/test/source/_data/languages.yml +2 -0
  151. data/test/source/_data/members.yaml +7 -0
  152. data/test/source/_data/products.yml +4 -0
  153. data/test/source/_includes/params.html +7 -0
  154. data/test/source/_layouts/default.html +1 -1
  155. data/test/source/_layouts/post/simple.html +1 -0
  156. data/test/source/_plugins/dummy.rb +1 -1
  157. data/test/source/_posts/2013-01-02-post-excerpt.markdown +1 -1
  158. data/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown +23 -0
  159. data/test/source/_posts/2013-08-01-mkdn-extension.mkdn +0 -0
  160. data/test/source/deal.with.dots.html +1 -1
  161. data/test/source/products.yml +4 -0
  162. data/test/test_configuration.rb +46 -11
  163. data/test/test_convertible.rb +2 -2
  164. data/test/test_excerpt.rb +78 -0
  165. data/test/test_filters.rb +4 -4
  166. data/test/test_generated_site.rb +13 -13
  167. data/test/test_json_driver.rb +9 -9
  168. data/test/test_kramdown.rb +32 -5
  169. data/test/test_new_command.rb +8 -8
  170. data/test/test_page.rb +12 -3
  171. data/test/test_pager.rb +34 -33
  172. data/test/test_post.rb +34 -26
  173. data/test/test_redcloth.rb +3 -3
  174. data/test/test_related_posts.rb +47 -0
  175. data/test/test_site.rb +102 -44
  176. data/test/test_tags.rb +168 -23
  177. data/test/test_url.rb +28 -0
  178. data/test/test_yaml_driver.rb +6 -6
  179. metadata +215 -137
  180. data/lib/monad/commands/doctor.rb +0 -29
  181. data/lib/monad/commands/new.rb +0 -50
  182. data/lib/monad/commands/serve.rb +0 -33
  183. data/lib/monad/converters/markdown/kramdown_parser.rb +0 -44
  184. data/lib/monad/deprecator.rb +0 -32
  185. data/lib/monad/generators/pagination.rb +0 -143
  186. data/lib/monad/logger.rb +0 -54
  187. data/lib/monad/tags/gist.rb +0 -30
  188. data/lib/monad/tags/include.rb +0 -37
@@ -0,0 +1,373 @@
1
+ ---
2
+ layout: docs
3
+ title: Configuration
4
+ prev_section: structure
5
+ next_section: frontmatter
6
+ permalink: /docs/configuration/
7
+ ---
8
+
9
+ Jekyll allows you to concoct your sites in any way you can dream up, and it’s
10
+ thanks to the powerful and flexible configuration options that this is possible.
11
+ These options can either be specified in a `_config.yml` file placed in your
12
+ site’s root directory, or can be specified as flags for the `jekyll` executable
13
+ in the terminal.
14
+
15
+ ## Configuration Settings
16
+
17
+ ### Global Configuration
18
+
19
+ The table below lists the available settings for Jekyll, and the various <code
20
+ class="option">options</code> (specified in the configuration file) and <code
21
+ class="flag">flags</code> (specified on the command-line) that control them.
22
+
23
+ <div class="mobile-side-scroller">
24
+ <table>
25
+ <thead>
26
+ <tr>
27
+ <th>Setting</th>
28
+ <th>
29
+ <span class="option">Options</span> and <span class="flag">Flags</span>
30
+ </th>
31
+ </tr>
32
+ </thead>
33
+ <tbody>
34
+ <tr class='setting'>
35
+ <td>
36
+ <p class='name'><strong>Site Source</strong></p>
37
+ <p class='description'>Change the directory where Jekyll will read files</p>
38
+ </td>
39
+ <td class="align-center">
40
+ <p><code class="option">source: DIR</code></p>
41
+ <p><code class="flag">-s, --source DIR</code></p>
42
+ </td>
43
+ </tr>
44
+ <tr class='setting'>
45
+ <td>
46
+ <p class='name'><strong>Site Destination</strong></p>
47
+ <p class='description'>Change the directory where Jekyll will write files</p>
48
+ </td>
49
+ <td class="align-center">
50
+ <p><code class="option">destination: DIR</code></p>
51
+ <p><code class="flag">-d, --destination DIR</code></p>
52
+ </td>
53
+ </tr>
54
+ <tr class='setting'>
55
+ <td>
56
+ <p class='name'><strong>Safe</strong></p>
57
+ <p class='description'>Disable <a href="../plugins/">custom plugins</a>.</p>
58
+ </td>
59
+ <td class="align-center">
60
+ <p><code class="option">safe: BOOL</code></p>
61
+ <p><code class="flag">--safe</code></p>
62
+ </td>
63
+ </tr>
64
+ <tr class='setting'>
65
+ <td>
66
+ <p class='name'><strong>Exclude</strong></p>
67
+ <p class="description">Exclude directories and/or files from the conversion</p>
68
+ </td>
69
+ <td class='align-center'>
70
+ <p><code class="option">exclude: [DIR, FILE, ...]</code></p>
71
+ </td>
72
+ </tr>
73
+ <tr class='setting'>
74
+ <td>
75
+ <p class='name'><strong>Include</strong></p>
76
+ <p class="description">
77
+ Force inclusion of directories and/or files in the conversion.
78
+ <code>.htaccess</code> is a good example since dotfiles are excluded
79
+ by default.
80
+ </p>
81
+ </td>
82
+ <td class='align-center'>
83
+ <p><code class="option">include: [DIR, FILE, ...]</code></p>
84
+ </td>
85
+ </tr>
86
+ <tr class='setting'>
87
+ <td>
88
+ <p class='name'><strong>Time Zone</strong></p>
89
+ <p class="description">
90
+ Set the time zone for site generation. This sets the <code>TZ</code>
91
+ environment variable, which Ruby uses to handle time and date
92
+ creation and manipulation. Any entry from the
93
+ <a href="http://en.wikipedia.org/wiki/Tz_database">IANA Time Zone
94
+ Database</a> is valid, e.g. <code>America/New_York</code>. The default
95
+ is the local time zone, as set by your operating system.
96
+ </p>
97
+ </td>
98
+ <td class='align-center'>
99
+ <p><code class="option">timezone: TIMEZONE</code></p>
100
+ </td>
101
+ </tr>
102
+ <tr class='setting'>
103
+ <td>
104
+ <p class='name'><strong>Encoding</strong></p>
105
+ <p class="description">
106
+ Set the encoding of files by name. Only available for Ruby
107
+ 1.9 or later).
108
+ The default value is nil, which use Ruby default,
109
+ <code>ASCII-8BIT</code>.
110
+ Available encoding for the ruby in use, can be shown by
111
+ command <code>ruby -e 'puts Encoding::list.join("\n")'</code>
112
+ </p>
113
+ </td>
114
+ <td class='align-center'>
115
+ <p><code class="option">encoding: ENCODING</code></p>
116
+ </td>
117
+ </tr>
118
+ </tbody>
119
+ </table>
120
+ </div>
121
+
122
+ ### Build Command Options
123
+
124
+ <div class="mobile-side-scroller">
125
+ <table>
126
+ <thead>
127
+ <tr>
128
+ <th>Setting</th>
129
+ <th><span class="option">Options</span> and <span class="flag">Flags</span></th>
130
+ </tr>
131
+ </thead>
132
+ <tbody>
133
+ <tr class='setting'>
134
+ <td>
135
+ <p class='name'><strong>Regeneration</strong></p>
136
+ <p class='description'>Enable auto-regeneration of the site when files are modified.</p>
137
+ </td>
138
+ <td class="align-center">
139
+ <p><code class="flag">-w, --watch</code></p>
140
+ </td>
141
+ </tr>
142
+ <tr class='setting'>
143
+ <td>
144
+ <p class='name'><strong>Configuration</strong></p>
145
+ <p class="description">Specify config files instead of using <code>_config.yml</code> automatically. Settings in later files override settings in earlier files.</p>
146
+ </td>
147
+ <td class='align-center'>
148
+ <p><code class="flag">--config FILE1[,FILE2,...]</code></p>
149
+ </td>
150
+ </tr>
151
+ <tr class='setting'>
152
+ <td>
153
+ <p class='name'><strong>Drafts</strong></p>
154
+ <p class="description">Process and render draft posts.</p>
155
+ </td>
156
+ <td class='align-center'>
157
+ <p><code class="flag">--drafts</code></p>
158
+ </td>
159
+ </tr>
160
+ <tr class='setting'>
161
+ <td>
162
+ <p class='name'><strong>Future</strong></p>
163
+ <p class="description">Publish posts with a future date.</p>
164
+ </td>
165
+ <td class='align-center'>
166
+ <p><code class="option">future: BOOL</code></p>
167
+ <p><code class="flag">--future</code></p>
168
+ </td>
169
+ </tr>
170
+ <tr class='setting'>
171
+ <td>
172
+ <p class='name'><strong>LSI</strong></p>
173
+ <p class="description">Produce an index for related posts.</p>
174
+ </td>
175
+ <td class='align-center'>
176
+ <p><code class="option">lsi: BOOL</code></p>
177
+ <p><code class="flag">--lsi</code></p>
178
+ </td>
179
+ </tr>
180
+ <tr class='setting'>
181
+ <td>
182
+ <p class='name'><strong>Limit Posts</strong></p>
183
+ <p class="description">Limit the number of posts to parse and publish.</p>
184
+ </td>
185
+ <td class='align-center'>
186
+ <p><code class="option">limit_posts: NUM</code></p>
187
+ <p><code class="flag">--limit_posts NUM</code></p>
188
+ </td>
189
+ </tr>
190
+ </tbody>
191
+ </table>
192
+ </div>
193
+
194
+ ### Serve Command Options
195
+
196
+ In addition to the options below, the `serve` sub-command can accept any of the options
197
+ for the `build` sub-command, which are then applied to the site build which occurs right
198
+ before your site is served.
199
+
200
+ <div class="mobile-side-scroller">
201
+ <table>
202
+ <thead>
203
+ <tr>
204
+ <th>Setting</th>
205
+ <th><span class="option">Options</span> and <span class="flag">Flags</span></th>
206
+ </tr>
207
+ </thead>
208
+ <tbody>
209
+ <tr class='setting'>
210
+ <td>
211
+ <p class='name'><strong>Local Server Port</strong></p>
212
+ <p class='description'>Listen on the given port.</p>
213
+ </td>
214
+ <td class="align-center">
215
+ <p><code class="option">port: PORT</code></p>
216
+ <p><code class="flag">--port PORT</code></p>
217
+ </td>
218
+ </tr>
219
+ <tr class='setting'>
220
+ <td>
221
+ <p class='name'><strong>Local Server Hostname</strong></p>
222
+ <p class='description'>Listen at the given hostname.</p>
223
+ </td>
224
+ <td class="align-center">
225
+ <p><code class="option">host: HOSTNAME</code></p>
226
+ <p><code class="flag">--host HOSTNAME</code></p>
227
+ </td>
228
+ </tr>
229
+ <tr class='setting'>
230
+ <td>
231
+ <p class='name'><strong>Base URL</strong></p>
232
+ <p class='description'>Serve the website from the given base URL</p>
233
+ </td>
234
+ <td class="align-center">
235
+ <p><code class="option">baseurl: URL</code></p>
236
+ <p><code class="flag">--baseurl URL</code></p>
237
+ </td>
238
+ </tr>
239
+ <tr class='setting'>
240
+ <td>
241
+ <p class='name'><strong>Detach</strong></p>
242
+ <p class='description'>Detach the server from the terminal</p>
243
+ </td>
244
+ <td class="align-center">
245
+ <p><code class="option">detach: BOOL</code></p>
246
+ <p><code class="flag">-B, --detach</code></p>
247
+ </td>
248
+ </tr>
249
+ </tbody>
250
+ </table>
251
+ </div>
252
+
253
+ <div class="note warning">
254
+ <h5>Do not use tabs in configuration files</h5>
255
+ <p>
256
+ This will either lead to parsing errors, or Jekyll will revert to the
257
+ default settings. Use spaces instead.
258
+ </p>
259
+ </div>
260
+
261
+ ## Default Configuration
262
+
263
+ Jekyll runs with the following configuration options by default. Unless
264
+ alternative settings for these options are explicitly specified in the
265
+ configuration file or on the command-line, Jekyll will run using these options.
266
+
267
+ <div class="note warning">
268
+ <h5>There are two unsupported kramdown options</h5>
269
+ <p>
270
+ Please note that both <code>remove_block_html_tags</code> and
271
+ <code>remove_span_html_tags</code> are currently unsupported in Jekyll due to the
272
+ fact that they are not included within the kramdown HTML converter.
273
+ </p>
274
+ </div>
275
+
276
+ {% highlight yaml %}
277
+ source: .
278
+ destination: ./_site
279
+ plugins: ./_plugins
280
+ layouts: ./_layouts
281
+ include: ['.htaccess']
282
+ exclude: []
283
+ keep_files: ['.git','.svn']
284
+ timezone: nil
285
+ encoding: nil
286
+
287
+ future: true
288
+ show_drafts: nil
289
+ limit_posts: 0
290
+ pygments: true
291
+
292
+ relative_permalinks: true
293
+
294
+ permalink: date
295
+ paginate_path: 'page:num'
296
+
297
+ markdown: maruku
298
+ markdown_ext: markdown,mkd,mkdn,md
299
+ textile_ext: textile
300
+
301
+ excerpt_separator: "\n\n"
302
+
303
+ safe: false
304
+ watch: false # deprecated
305
+ server: false # deprecated
306
+ host: 0.0.0.0
307
+ port: 4000
308
+ baseurl: /
309
+ url: http://localhost:4000
310
+ lsi: false
311
+
312
+ maruku:
313
+ use_tex: false
314
+ use_divs: false
315
+ png_engine: blahtex
316
+ png_dir: images/latex
317
+ png_url: /images/latex
318
+
319
+ rdiscount:
320
+ extensions: []
321
+
322
+ redcarpet:
323
+ extensions: []
324
+
325
+ kramdown:
326
+ auto_ids: true
327
+ footnote_nr: 1
328
+ entity_output: as_char
329
+ toc_levels: 1..6
330
+ smart_quotes: lsquo,rsquo,ldquo,rdquo
331
+ use_coderay: false
332
+
333
+ coderay:
334
+ coderay_wrap: div
335
+ coderay_line_numbers: inline
336
+ coderay_line_numbers_start: 1
337
+ coderay_tab_width: 4
338
+ coderay_bold_every: 10
339
+ coderay_css: style
340
+
341
+ redcloth:
342
+ hard_breaks: true
343
+ {% endhighlight %}
344
+
345
+
346
+ ## Markdown Options
347
+
348
+ The various Markdown renderers supported by Jekyll sometimes have extra options available.
349
+
350
+ ### Redcarpet
351
+
352
+ Redcarpet can be configured by providing an `extensions` sub-setting, whose value should be an array of strings. Each string should be the name of one of the `Redcarpet::Markdown` class's extensions; if present in the array, it will set the corresponding extension to `true`.
353
+
354
+ Jekyll handles two special Redcarpet extensions:
355
+
356
+ - `no_fenced_code_blocks` --- By default, Jekyll sets the `fenced_code_blocks` extension (for delimiting code blocks with triple tildes or triple backticks) to `true`, probably because GitHub's eager adoption of them is starting to make them inescapable. Redcarpet's normal `fenced_code_blocks` extension is inert when used with Jekyll; instead, you can use this inverted version of the extension for disabling fenced code.
357
+
358
+ Note that you can also specify a language for highlighting after the first delimiter:
359
+
360
+ ```ruby
361
+ # ...ruby code
362
+ ```
363
+
364
+ With both fenced code blocks and pygments enabled, this will statically highlight the code; without pygments, it will add a `class="LANGUAGE"` attribute to the `<code>` element, which can be used as a hint by various JavaScript code highlighting libraries.
365
+ - `smart` --- This pseudo-extension turns on SmartyPants, which converts straight quotes to curly quotes and runs of hyphens to em (`---`) and en (`--`) dashes.
366
+
367
+ All other extensions retain their usual names from Redcarpet, and no renderer options aside from `smart` can be specified in Jekyll. [A list of available extensions can be found in the Redcarpet README file.][redcarpet_extensions] Make sure you're looking at the README for the right version of Redcarpet: Jekyll currently uses v2.2.x, and extensions like `footnotes` and `highlight` weren't added until after version 3.0.0. The most commonly used extensions are:
368
+
369
+ - `tables`
370
+ - `no_intra_emphasis`
371
+ - `autolink`
372
+
373
+ [redcarpet_extensions]: https://github.com/vmg/redcarpet/blob/v2.2.2/README.markdown#and-its-like-really-simple-to-use
@@ -0,0 +1,128 @@
1
+ ---
2
+ layout: docs
3
+ title: Contributing
4
+ prev_section: upgrading
5
+ next_section: history
6
+ permalink: /docs/contributing/
7
+ ---
8
+
9
+ So you've got an awesome idea to throw into Jekyll. Great! Please keep the
10
+ following in mind:
11
+
12
+ * If you're creating a small fix or patch to an existing feature, just a simple
13
+ test will do. Please stay in the confines of the current test suite and use
14
+ [Shoulda](http://github.com/thoughtbot/shoulda/tree/master) and
15
+ [RR](http://github.com/btakita/rr/tree/master).
16
+ * If it's a brand new feature, make sure to create a new
17
+ [Cucumber](https://github.com/cucumber/cucumber/) feature and reuse steps
18
+ where appropriate. Also, whipping up some documentation in your fork's `site`
19
+ would be appreciated, and once merged it will be transferred over to the main
20
+ `site`, jekyllrb.com.
21
+ * If your contribution changes any Jekyll behavior, make sure to update the
22
+ documentation. It lives in `site/docs`. If the docs are missing information,
23
+ please feel free to add it in. Great docs make a great project!
24
+ * Please follow the [GitHub Ruby Styleguide](https://github.com/styleguide/ruby)
25
+ when modifying Ruby code.
26
+ * Please do your best to submit **small pull requests**. The easier the proposed
27
+ change is to review, the more likely it will be merged.
28
+ * When submitting a pull request, please make judicious use of the pull request
29
+ body. A description of what changes were made, the motivations behind the
30
+ changes and [any tasks completed or left to complete](http://git.io/gfm-tasks)
31
+ will also speed up review time.
32
+
33
+ <div class="note warning">
34
+ <h5>Contributions will not be accepted without tests</h5>
35
+ <p>
36
+ If you’re creating a small fix or patch to an existing feature, just
37
+ a simple test will do.
38
+ </p>
39
+ </div>
40
+
41
+ Test Dependencies
42
+ -----------------
43
+
44
+ To run the test suite and build the gem you'll need to install Jekyll's
45
+ dependencies. Jekyll uses Bundler, so a quick run of the `bundle` command and
46
+ you're all set!
47
+
48
+ {% highlight bash %}
49
+ $ bundle
50
+ {% endhighlight %}
51
+
52
+ Before you start, run the tests and make sure that they pass (to confirm your
53
+ environment is configured properly):
54
+
55
+ {% highlight bash %}
56
+ $ bundle exec rake test
57
+ $ bundle exec rake features
58
+ {% endhighlight %}
59
+
60
+ Workflow
61
+ --------
62
+
63
+ Here's the most direct way to get your work merged into the project:
64
+
65
+ * Fork the project.
66
+ * Clone down your fork:
67
+
68
+ {% highlight bash %}
69
+ git clone git://github.com/<username>/jekyll.git
70
+ {% endhighlight %}
71
+
72
+ * Create a topic branch to contain your change:
73
+
74
+ {% highlight bash %}
75
+ git checkout -b my_awesome_feature
76
+ {% endhighlight %}
77
+
78
+
79
+ * Hack away, add tests. Not necessarily in that order.
80
+ * Make sure everything still passes by running `rake`.
81
+ * If necessary, rebase your commits into logical chunks, without errors.
82
+ * Push the branch up:
83
+
84
+ {% highlight bash %}
85
+ git push origin my_awesome_feature
86
+ {% endhighlight %}
87
+
88
+ * Create a pull request against mojombo/jekyll:master and describe what your
89
+ change does and the why you think it should be merged.
90
+
91
+ Updating Documentation
92
+ ----------------------
93
+
94
+ We want the Jekyll documentation to be the best it can be. We've
95
+ open-sourced our docs and we welcome any pull requests if you find it
96
+ lacking.
97
+
98
+ You can find the documentation for jekyllrb.com in the
99
+ [site]({{ site.repository }}/tree/master/site) directory of
100
+ Jekyll's repo on GitHub.com.
101
+
102
+ All documentation pull requests should be directed at `master`. Pull
103
+ requests directed at another branch will not be accepted.
104
+
105
+ The [Jekyll wiki]({{ site.repository }}/wiki) on GitHub
106
+ can be freely updated without a pull request as all
107
+ GitHub users have access.
108
+
109
+ Gotchas
110
+ -------
111
+
112
+ * If you want to bump the gem version, please put that in a separate commit.
113
+ This way, the maintainers can control when the gem gets released.
114
+ * Try to keep your patch(es) based from the latest commit on mojombo/jekyll.
115
+ The easier it is to apply your work, the less work the maintainers have to do,
116
+ which is always a good thing.
117
+ * Please don't tag your GitHub issue with \[fix\], \[feature\], etc. The maintainers
118
+ actively read the issues and will label it once they come across it.
119
+
120
+ <div class="note">
121
+ <h5>Let us know what could be better!</h5>
122
+ <p>
123
+ Both using and hacking on Jekyll should be fun, simple, and easy, so if for
124
+ some reason you find it’s a pain, please <a
125
+ href="{{ site.repository }}/issues/new">create an issue</a> on
126
+ GitHub describing your experience so we can make it better.
127
+ </p>
128
+ </div>