monad 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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>