jekyll-docs 3.6.0 → 3.6.1

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 (253) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jekyll.rb +195 -0
  3. data/lib/jekyll/cleaner.rb +110 -0
  4. data/lib/jekyll/collection.rb +230 -0
  5. data/lib/jekyll/command.rb +78 -0
  6. data/lib/jekyll/commands/build.rb +102 -0
  7. data/lib/jekyll/commands/clean.rb +43 -0
  8. data/lib/jekyll/commands/doctor.rb +153 -0
  9. data/lib/jekyll/commands/help.rb +34 -0
  10. data/lib/jekyll/commands/new.rb +156 -0
  11. data/lib/jekyll/commands/new_theme.rb +40 -0
  12. data/lib/jekyll/commands/serve.rb +245 -0
  13. data/lib/jekyll/commands/serve/servlet.rb +62 -0
  14. data/lib/jekyll/configuration.rb +410 -0
  15. data/lib/jekyll/converter.rb +54 -0
  16. data/lib/jekyll/converters/identity.rb +23 -0
  17. data/lib/jekyll/converters/markdown.rb +104 -0
  18. data/lib/jekyll/converters/markdown/kramdown_parser.rb +123 -0
  19. data/lib/jekyll/converters/markdown/rdiscount_parser.rb +35 -0
  20. data/lib/jekyll/converters/markdown/redcarpet_parser.rb +108 -0
  21. data/lib/jekyll/converters/smartypants.rb +36 -0
  22. data/lib/jekyll/convertible.rb +251 -0
  23. data/lib/jekyll/deprecator.rb +52 -0
  24. data/lib/jekyll/document.rb +507 -0
  25. data/lib/jekyll/drops/collection_drop.rb +22 -0
  26. data/lib/jekyll/drops/document_drop.rb +69 -0
  27. data/lib/jekyll/drops/drop.rb +214 -0
  28. data/lib/jekyll/drops/excerpt_drop.rb +15 -0
  29. data/lib/jekyll/drops/jekyll_drop.rb +33 -0
  30. data/lib/jekyll/drops/site_drop.rb +47 -0
  31. data/lib/jekyll/drops/static_file_drop.rb +13 -0
  32. data/lib/jekyll/drops/unified_payload_drop.rb +25 -0
  33. data/lib/jekyll/drops/url_drop.rb +88 -0
  34. data/lib/jekyll/entry_filter.rb +123 -0
  35. data/lib/jekyll/errors.rb +20 -0
  36. data/lib/jekyll/excerpt.rb +126 -0
  37. data/lib/jekyll/external.rb +74 -0
  38. data/lib/jekyll/filters.rb +430 -0
  39. data/lib/jekyll/filters/grouping_filters.rb +65 -0
  40. data/lib/jekyll/filters/url_filters.rb +60 -0
  41. data/lib/jekyll/frontmatter_defaults.rb +197 -0
  42. data/lib/jekyll/generator.rb +5 -0
  43. data/lib/jekyll/hooks.rb +104 -0
  44. data/lib/jekyll/layout.rb +62 -0
  45. data/lib/jekyll/liquid_extensions.rb +24 -0
  46. data/lib/jekyll/liquid_renderer.rb +49 -0
  47. data/lib/jekyll/liquid_renderer/file.rb +56 -0
  48. data/lib/jekyll/liquid_renderer/table.rb +96 -0
  49. data/lib/jekyll/log_adapter.rb +147 -0
  50. data/lib/jekyll/mime.types +825 -0
  51. data/lib/jekyll/page.rb +187 -0
  52. data/lib/jekyll/plugin.rb +98 -0
  53. data/lib/jekyll/plugin_manager.rb +113 -0
  54. data/lib/jekyll/publisher.rb +23 -0
  55. data/lib/jekyll/reader.rb +134 -0
  56. data/lib/jekyll/readers/collection_reader.rb +22 -0
  57. data/lib/jekyll/readers/data_reader.rb +77 -0
  58. data/lib/jekyll/readers/layout_reader.rb +71 -0
  59. data/lib/jekyll/readers/page_reader.rb +25 -0
  60. data/lib/jekyll/readers/post_reader.rb +72 -0
  61. data/lib/jekyll/readers/static_file_reader.rb +25 -0
  62. data/lib/jekyll/readers/theme_assets_reader.rb +49 -0
  63. data/lib/jekyll/regenerator.rb +201 -0
  64. data/lib/jekyll/related_posts.rb +52 -0
  65. data/lib/jekyll/renderer.rb +269 -0
  66. data/lib/jekyll/site.rb +471 -0
  67. data/lib/jekyll/static_file.rb +162 -0
  68. data/lib/jekyll/stevenson.rb +61 -0
  69. data/lib/jekyll/tags/highlight.rb +141 -0
  70. data/lib/jekyll/tags/include.rb +215 -0
  71. data/lib/jekyll/tags/link.rb +37 -0
  72. data/lib/jekyll/tags/post_url.rb +103 -0
  73. data/lib/jekyll/theme.rb +68 -0
  74. data/lib/jekyll/theme_builder.rb +119 -0
  75. data/lib/jekyll/url.rb +161 -0
  76. data/lib/jekyll/utils.rb +337 -0
  77. data/lib/jekyll/utils/ansi.rb +59 -0
  78. data/lib/jekyll/utils/exec.rb +27 -0
  79. data/lib/jekyll/utils/platforms.rb +82 -0
  80. data/lib/jekyll/utils/rouge.rb +21 -0
  81. data/lib/jekyll/utils/win_tz.rb +75 -0
  82. data/lib/jekyll/version.rb +5 -0
  83. data/lib/site_template/404.html +24 -0
  84. data/lib/site_template/_config.yml +43 -0
  85. data/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb +25 -0
  86. data/lib/site_template/about.md +18 -0
  87. data/lib/site_template/index.md +6 -0
  88. data/lib/theme_template/CODE_OF_CONDUCT.md.erb +74 -0
  89. data/lib/theme_template/Gemfile +4 -0
  90. data/lib/theme_template/LICENSE.txt.erb +21 -0
  91. data/lib/theme_template/README.md.erb +52 -0
  92. data/lib/theme_template/_layouts/default.html +1 -0
  93. data/lib/theme_template/_layouts/page.html +5 -0
  94. data/lib/theme_template/_layouts/post.html +5 -0
  95. data/lib/theme_template/example/_config.yml.erb +1 -0
  96. data/lib/theme_template/example/_post.md +12 -0
  97. data/lib/theme_template/example/index.html +14 -0
  98. data/lib/theme_template/example/style.scss +7 -0
  99. data/lib/theme_template/gitignore.erb +5 -0
  100. data/lib/theme_template/theme.gemspec.erb +19 -0
  101. metadata +103 -156
  102. data/lib/jekyll-docs.rb +0 -31
  103. data/site/404.html +0 -153
  104. data/site/CNAME +0 -1
  105. data/site/community/index.html +0 -299
  106. data/site/conduct/index.html +0 -10
  107. data/site/css/screen.css +0 -1
  108. data/site/docs/assets/index.html +0 -724
  109. data/site/docs/code_of_conduct/index.html +0 -730
  110. data/site/docs/collections/index.html +0 -1097
  111. data/site/docs/conduct/index.html +0 -744
  112. data/site/docs/configuration/index.html +0 -1403
  113. data/site/docs/continuous-integration/buddyworks/index.html +0 -726
  114. data/site/docs/continuous-integration/circleci/index.html +0 -757
  115. data/site/docs/continuous-integration/index.html +0 -681
  116. data/site/docs/continuous-integration/travis-ci/index.html +0 -891
  117. data/site/docs/contributing/index.html +0 -863
  118. data/site/docs/datafiles/index.html +0 -780
  119. data/site/docs/deployment-methods/index.html +0 -875
  120. data/site/docs/drafts/index.html +0 -636
  121. data/site/docs/extras/index.html +0 -689
  122. data/site/docs/frontmatter/index.html +0 -807
  123. data/site/docs/github-pages/index.html +0 -819
  124. data/site/docs/history/index.html +0 -3955
  125. data/site/docs/home/index.html +0 -644
  126. data/site/docs/includes/index.html +0 -800
  127. data/site/docs/index.html +0 -10
  128. data/site/docs/installation/index.html +0 -732
  129. data/site/docs/maintaining/affinity-team-captain/index.html +0 -706
  130. data/site/docs/maintaining/avoiding-burnout/index.html +0 -709
  131. data/site/docs/maintaining/becoming-a-maintainer/index.html +0 -717
  132. data/site/docs/maintaining/index.html +0 -713
  133. data/site/docs/maintaining/merging-a-pull-request/index.html +0 -747
  134. data/site/docs/maintaining/reviewing-a-pull-request/index.html +0 -725
  135. data/site/docs/maintaining/special-labels/index.html +0 -705
  136. data/site/docs/maintaining/triaging-an-issue/index.html +0 -735
  137. data/site/docs/migrations/index.html +0 -647
  138. data/site/docs/pages/index.html +0 -695
  139. data/site/docs/pagination/index.html +0 -870
  140. data/site/docs/permalinks/index.html +0 -1027
  141. data/site/docs/plugins/index.html +0 -1800
  142. data/site/docs/posts/index.html +0 -858
  143. data/site/docs/quickstart/index.html +0 -650
  144. data/site/docs/resources/index.html +0 -769
  145. data/site/docs/sites/index.html +0 -702
  146. data/site/docs/static-files/index.html +0 -720
  147. data/site/docs/structure/index.html +0 -822
  148. data/site/docs/templates/index.html +0 -1208
  149. data/site/docs/themes/index.html +0 -935
  150. data/site/docs/troubleshooting/index.html +0 -893
  151. data/site/docs/upgrading/0-to-2/index.html +0 -826
  152. data/site/docs/upgrading/2-to-3/index.html +0 -824
  153. data/site/docs/upgrading/index.html +0 -693
  154. data/site/docs/usage/index.html +0 -705
  155. data/site/docs/variables/index.html +0 -1048
  156. data/site/docs/windows/index.html +0 -799
  157. data/site/favicon.ico +0 -0
  158. data/site/feed.xml +0 -372
  159. data/site/fonts/FontAwesome.eot +0 -0
  160. data/site/fonts/FontAwesome.svg +0 -12
  161. data/site/fonts/FontAwesome.ttf +0 -0
  162. data/site/fonts/FontAwesome.woff +0 -0
  163. data/site/github.html +0 -10
  164. data/site/help/index.html +0 -244
  165. data/site/icomoon-selection.json +0 -96
  166. data/site/img/article-footer.png +0 -0
  167. data/site/img/footer-arrow.png +0 -0
  168. data/site/img/footer-logo.png +0 -0
  169. data/site/img/jekyll-sticker.jpg +0 -0
  170. data/site/img/jekylllayoutconcept.png +0 -0
  171. data/site/img/logo-2x.png +0 -0
  172. data/site/img/logo-rss.png +0 -0
  173. data/site/img/octojekyll.png +0 -0
  174. data/site/index.html +0 -267
  175. data/site/issues.html +0 -10
  176. data/site/js/html5shiv.min.js +0 -4
  177. data/site/js/respond.min.js +0 -5
  178. data/site/latest_version.txt +0 -1
  179. data/site/news/2013/05/05/jekyll-1-0-0-released/index.html +0 -570
  180. data/site/news/2013/05/08/jekyll-1-0-1-released/index.html +0 -570
  181. data/site/news/2013/05/12/jekyll-1-0-2-released/index.html +0 -571
  182. data/site/news/2013/06/07/jekyll-1-0-3-released/index.html +0 -568
  183. data/site/news/2013/07/14/jekyll-1-1-0-released/index.html +0 -570
  184. data/site/news/2013/07/24/jekyll-1-1-1-released/index.html +0 -569
  185. data/site/news/2013/07/25/jekyll-1-0-4-released/index.html +0 -565
  186. data/site/news/2013/07/25/jekyll-1-1-2-released/index.html +0 -565
  187. data/site/news/2013/09/06/jekyll-1-2-0-released/index.html +0 -572
  188. data/site/news/2013/09/14/jekyll-1-2-1-released/index.html +0 -566
  189. data/site/news/2013/10/28/jekyll-1-3-0-rc1-released/index.html +0 -564
  190. data/site/news/2013/11/04/jekyll-1-3-0-released/index.html +0 -599
  191. data/site/news/2013/11/26/jekyll-1-3-1-released/index.html +0 -568
  192. data/site/news/2013/12/07/jekyll-1-4-0-released/index.html +0 -583
  193. data/site/news/2013/12/09/jekyll-1-4-1-released/index.html +0 -565
  194. data/site/news/2013/12/16/jekyll-1-4-2-released/index.html +0 -564
  195. data/site/news/2014/01/13/jekyll-1-4-3-released/index.html +0 -573
  196. data/site/news/2014/03/24/jekyll-1-5-0-released/index.html +0 -564
  197. data/site/news/2014/03/27/jekyll-1-5-1-released/index.html +0 -569
  198. data/site/news/2014/05/06/jekyll-turns-2-0-0/index.html +0 -585
  199. data/site/news/2014/05/08/jekyll-2-0-3-released/index.html +0 -565
  200. data/site/news/2014/06/04/jekyll-stickers-1-dollar-stickermule/index.html +0 -567
  201. data/site/news/2014/06/28/jekyll-turns-21-i-mean-2-1-0/index.html +0 -582
  202. data/site/news/2014/07/01/jekyll-2-1-1-released/index.html +0 -579
  203. data/site/news/2014/07/29/jekyll-2-2-0-released/index.html +0 -568
  204. data/site/news/2014/08/10/jekyll-2-3-0-released/index.html +0 -588
  205. data/site/news/2014/09/09/jekyll-2-4-0-released/index.html +0 -574
  206. data/site/news/2014/11/05/jekylls-midlife-crisis-jekyll-turns-2-5-0/index.html +0 -597
  207. data/site/news/2014/11/09/jekyll-2-5-1-released/index.html +0 -575
  208. data/site/news/2014/11/12/jekyll-2-5-2-released/index.html +0 -565
  209. data/site/news/2014/12/17/alfredxing-welcome-to-jekyll-core/index.html +0 -572
  210. data/site/news/2014/12/22/jekyll-2-5-3-released/index.html +0 -567
  211. data/site/news/2015/01/20/jekyll-meet-and-greet/index.html +0 -568
  212. data/site/news/2015/01/24/jekyll-3-0-0-beta1-released/index.html +0 -588
  213. data/site/news/2015/02/26/introducing-jekyll-talk/index.html +0 -563
  214. data/site/news/2015/10/26/jekyll-3-0-released/index.html +0 -592
  215. data/site/news/2015/11/17/jekyll-3-0-1-released/index.html +0 -576
  216. data/site/news/2016/01/20/jekyll-3-0-2-released/index.html +0 -566
  217. data/site/news/2016/01/24/jekyll-3-1-0-released/index.html +0 -599
  218. data/site/news/2016/01/28/jekyll-3-1-1-released/index.html +0 -583
  219. data/site/news/2016/02/08/jekyll-3-0-3-released/index.html +0 -578
  220. data/site/news/2016/02/19/jekyll-3-1-2-released/index.html +0 -569
  221. data/site/news/2016/03/10/making-it-easier-to-contribute-to-jekyll/index.html +0 -565
  222. data/site/news/2016/04/19/jekyll-3-0-4-released/index.html +0 -571
  223. data/site/news/2016/04/19/jekyll-3-1-3-released/index.html +0 -566
  224. data/site/news/2016/04/26/jekyll-3-0-5-released/index.html +0 -572
  225. data/site/news/2016/05/18/jekyll-3-1-4-released/index.html +0 -576
  226. data/site/news/2016/05/18/jekyll-3-1-5-released/index.html +0 -564
  227. data/site/news/2016/05/19/jekyll-3-1-6-released/index.html +0 -566
  228. data/site/news/2016/06/03/update-on-jekyll-s-google-summer-of-code-projects/index.html +0 -567
  229. data/site/news/2016/07/26/jekyll-3-2-0-released/index.html +0 -676
  230. data/site/news/2016/08/02/jekyll-3-2-1-released/index.html +0 -571
  231. data/site/news/2016/08/24/jekyll-admin-initial-release/index.html +0 -566
  232. data/site/news/2016/10/06/jekyll-3-3-is-here/index.html +0 -645
  233. data/site/news/2016/11/14/jekyll-3-3-1-released/index.html +0 -569
  234. data/site/news/2017/01/18/jekyll-3-4-0-released/index.html +0 -592
  235. data/site/news/2017/03/02/jekyll-3-4-1-released/index.html +0 -649
  236. data/site/news/2017/03/09/jekyll-3-4-2-released/index.html +0 -598
  237. data/site/news/2017/03/21/jekyll-3-4-3-released/index.html +0 -594
  238. data/site/news/2017/06/15/jekyll-3-5-0-released/index.html +0 -589
  239. data/site/news/2017/07/17/jekyll-3-5-1-released/index.html +0 -569
  240. data/site/news/2017/08/12/jekyll-3-5-2-released/index.html +0 -573
  241. data/site/news/2017/09/21/jekyll-3-6-0-released/index.html +0 -565
  242. data/site/news/index.html +0 -3609
  243. data/site/news/releases/index.html +0 -3344
  244. data/site/philosophy.html +0 -46
  245. data/site/readme.md +0 -23
  246. data/site/robots.txt +0 -1
  247. data/site/sitemap.xml +0 -485
  248. data/site/tutorials/convert-site-to-jekyll/index.html +0 -793
  249. data/site/tutorials/custom-404-page/index.html +0 -358
  250. data/site/tutorials/home/index.html +0 -323
  251. data/site/tutorials/index.html +0 -10
  252. data/site/tutorials/navigation/index.html +0 -872
  253. data/site/tutorials/orderofinterpretation/index.html +0 -441
@@ -1,649 +0,0 @@
1
- <!DOCTYPE HTML>
2
- <html lang="en-US">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width,initial-scale=1">
7
- <meta name="generator" content="Jekyll v3.6.0">
8
- <link type="application/atom+xml" rel="alternate" href="https://jekyllrb.com/feed.xml" title="Jekyll • Simple, blog-aware, static sites">
9
- <link rel="alternate" type="application/atom+xml" title="Recent commits to Jekyll’s master branch" href="https://github.com/jekyll/jekyll/commits/master.atom">
10
- <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic,900">
11
- <link rel="stylesheet" href="/css/screen.css">
12
- <link rel="icon" type="image/x-icon" href="/favicon.ico">
13
- <!-- Begin Jekyll SEO tag v2.3.0 -->
14
- <title>Jekyll 3.4.1, or “Unintended Consequences” | Jekyll • Simple, blog-aware, static sites</title>
15
- <meta property="og:title" content="Jekyll 3.4.1, or “Unintended Consequences”">
16
- <meta name="author" content="parkr">
17
- <meta property="og:locale" content="en_US">
18
- <meta name="description" content="Conformity is a confounding thing.">
19
- <meta property="og:description" content="Conformity is a confounding thing.">
20
- <link rel="canonical" href="https://jekyllrb.com/news/2017/03/02/jekyll-3-4-1-released/">
21
- <meta property="og:url" content="https://jekyllrb.com/news/2017/03/02/jekyll-3-4-1-released/">
22
- <meta property="og:site_name" content="Jekyll • Simple, blog-aware, static sites">
23
- <meta property="og:type" content="article">
24
- <meta property="article:published_time" content="2017-03-02T11:20:26-08:00">
25
- <meta name="twitter:card" content="summary">
26
- <meta name="twitter:site" content="@jekyllrb">
27
- <meta name="twitter:creator" content="@parkr">
28
- <meta name="google-site-verification" content="onQcXpAvtHBrUI5LlroHNE_FP0b2qvFyPq7VZw36iEY">
29
- <script type="application/ld+json">
30
- {"name":null,"description":"Conformity is a confounding thing.","url":"https://jekyllrb.com/news/2017/03/02/jekyll-3-4-1-released/","headline":"Jekyll 3.4.1, or “Unintended Consequences”","dateModified":"2017-03-02T11:20:26-08:00","datePublished":"2017-03-02T11:20:26-08:00","sameAs":null,"@type":"BlogPosting","author":{"@type":"Person","name":"parkr"},"image":null,"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://jekyllrb.com/img/logo-2x.png"},"name":"parkr"},"mainEntityOfPage":{"@type":"WebPage","@id":"https://jekyllrb.com/news/2017/03/02/jekyll-3-4-1-released/"},"@context":"http://schema.org"}</script>
31
- <!-- End Jekyll SEO tag -->
32
-
33
- <!--[if lt IE 9]>
34
- <script src="/js/html5shiv.min.js"></script>
35
- <script src="/js/respond.min.js"></script>
36
- <![endif]-->
37
- </head>
38
-
39
-
40
- <body class="wrap">
41
- <header>
42
- <nav class="mobile-nav show-on-mobiles">
43
- <ul>
44
- <li class="">
45
- <a href="/">Home</a>
46
- </li>
47
- <li class="">
48
- <a href="/docs/home/">Docs</a>
49
- </li>
50
- <li class="current">
51
- <a href="/news/">News</a>
52
- </li>
53
- <li class="">
54
- <a href="/community/">Community</a>
55
- </li>
56
- <li class="">
57
- <a href="/help/">Help</a>
58
- </li>
59
- <li>
60
- <a href="https://github.com/jekyll/jekyll">GitHub</a>
61
- </li>
62
- </ul>
63
-
64
- </nav>
65
- <div class="grid">
66
- <div class="unit one-third center-on-mobiles">
67
- <h1>
68
- <a href="/">
69
- <span class="sr-only">Jekyll</span>
70
- <img src="/img/logo-2x.png" width="249" height="115" alt="Jekyll Logo">
71
- </a>
72
- </h1>
73
- </div>
74
- <nav class="main-nav unit two-thirds hide-on-mobiles">
75
- <ul>
76
- <li class="">
77
- <a href="/">Home</a>
78
- </li>
79
- <li class="">
80
- <a href="/docs/home/">Docs</a>
81
- </li>
82
- <li class="current">
83
- <a href="/news/">News</a>
84
- </li>
85
- <li class="">
86
- <a href="/community/">Community</a>
87
- </li>
88
- <li class="">
89
- <a href="/help/">Help</a>
90
- </li>
91
- <li>
92
- <a href="https://github.com/jekyll/jekyll">GitHub</a>
93
- </li>
94
- </ul>
95
-
96
- </nav>
97
- </div>
98
- </header>
99
-
100
-
101
- <section class="news">
102
- <div class="grid">
103
-
104
- <div class="docs-nav-mobile unit whole show-on-mobiles">
105
- <select onchange="if (this.value) window.location.href=this.value">
106
- <option value="">Navigate the blog…</option>
107
- <option value="/news/">Home</option>
108
- <optgroup label="v1.x">
109
-
110
- <option value="/news/2017/09/21/jekyll-3-6-0-released/">Jekyll turns 3.6!</option>
111
-
112
- <option value="/news/2017/08/12/jekyll-3-5-2-released/">Jekyll 3.5.2 Released</option>
113
-
114
- <option value="/news/2017/07/17/jekyll-3-5-1-released/">Jekyll 3.5.1 Released</option>
115
-
116
- <option value="/news/2017/06/15/jekyll-3-5-0-released/">Jekyll turns 3.5, oh my!</option>
117
-
118
- <option value="/news/2017/03/21/jekyll-3-4-3-released/">Jekyll 3.4.3 Released</option>
119
-
120
- <option value="/news/2017/03/09/jekyll-3-4-2-released/">Jekyll 3.4.2 Released</option>
121
-
122
- <option value="/news/2017/03/02/jekyll-3-4-1-released/">Jekyll 3.4.1, or "Unintended Consequences"</option>
123
-
124
- <option value="/news/2017/01/18/jekyll-3-4-0-released/">Jekyll turns 3.4.0</option>
125
-
126
- <option value="/news/2016/11/14/jekyll-3-3-1-released/">Jekyll 3.3.1 Released</option>
127
-
128
- <option value="/news/2016/10/06/jekyll-3-3-is-here/">Jekyll 3.3 is here with better theme support, new URL filters, and tons more</option>
129
-
130
- <option value="/news/2016/08/24/jekyll-admin-initial-release/">Jekyll Admin Initial Release</option>
131
-
132
- <option value="/news/2016/08/02/jekyll-3-2-1-released/">Jekyll 3.2.1 Released with Fix for Windows</option>
133
-
134
- <option value="/news/2016/07/26/jekyll-3-2-0-released/">Jekyll turns 3.2</option>
135
-
136
- <option value="/news/2016/06/03/update-on-jekyll-s-google-summer-of-code-projects/">Jekyll's Google Summer of Code Project: The CMS You Always Wanted</option>
137
-
138
- <option value="/news/2016/05/19/jekyll-3-1-6-released/">Jekyll 3.1.6 Released</option>
139
-
140
- <option value="/news/2016/05/18/jekyll-3-1-5-released/">Jekyll 3.1.5 Released</option>
141
-
142
- <option value="/news/2016/05/18/jekyll-3-1-4-released/">Jekyll 3.1.4 "Stability Sam" Released</option>
143
-
144
- <option value="/news/2016/04/26/jekyll-3-0-5-released/">Jekyll 3.0.5 Released</option>
145
-
146
- <option value="/news/2016/04/19/jekyll-3-1-3-released/">Jekyll 3.1.3 Released</option>
147
-
148
- <option value="/news/2016/04/19/jekyll-3-0-4-released/">Jekyll 3.0.4 Released</option>
149
-
150
- <option value="/news/2016/03/10/making-it-easier-to-contribute-to-jekyll/">Making it easier to contribute to Jekyll</option>
151
-
152
- <option value="/news/2016/02/19/jekyll-3-1-2-released/">Jekyll 3.1.2 Released!</option>
153
-
154
- <option value="/news/2016/02/08/jekyll-3-0-3-released/">Jekyll 3.0.3 Released</option>
155
-
156
- <option value="/news/2016/01/28/jekyll-3-1-1-released/">Jekyll 3.1.1 Released</option>
157
-
158
- <option value="/news/2016/01/24/jekyll-3-1-0-released/">Jekyll 3.1.0 Released</option>
159
-
160
- <option value="/news/2016/01/20/jekyll-3-0-2-released/">Jekyll 3.0.2 Released</option>
161
-
162
- <option value="/news/2015/11/17/jekyll-3-0-1-released/">Jekyll 3.0.1 Released</option>
163
-
164
- <option value="/news/2015/10/26/jekyll-3-0-released/">Jekyll 3.0 Released</option>
165
-
166
- <option value="/news/2015/02/26/introducing-jekyll-talk/">Join the Discussion at Jekyll Talk</option>
167
-
168
- <option value="/news/2015/01/24/jekyll-3-0-0-beta1-released/">Jekyll 3.0.0.beta1 Released</option>
169
-
170
- <option value="/news/2015/01/20/jekyll-meet-and-greet/">Jekyll Meet &amp; Greet at GitHub HQ</option>
171
-
172
- <option value="/news/2014/12/22/jekyll-2-5-3-released/">Jekyll Release for the Holidays! v2.5.3 Out</option>
173
-
174
- <option value="/news/2014/12/17/alfredxing-welcome-to-jekyll-core/">Alfred Xing has joined the Jekyll core team</option>
175
-
176
- <option value="/news/2014/11/12/jekyll-2-5-2-released/">Jekyll 2.5.2 Released</option>
177
-
178
- <option value="/news/2014/11/09/jekyll-2-5-1-released/">Jekyll 2.5.1 Released</option>
179
-
180
- <option value="/news/2014/11/05/jekylls-midlife-crisis-jekyll-turns-2-5-0/">Jekyll's Mid-Life Crisis (Or, Jekyll turns 2.5.0)</option>
181
-
182
- <option value="/news/2014/09/09/jekyll-2-4-0-released/">A Wild Jekyll 2.4.0 Appeared!</option>
183
-
184
- <option value="/news/2014/08/10/jekyll-2-3-0-released/">Jekyll 2.3.0 Released</option>
185
-
186
- <option value="/news/2014/07/29/jekyll-2-2-0-released/">Jekyll 2.2.0 Released</option>
187
-
188
- <option value="/news/2014/07/01/jekyll-2-1-1-released/">Jekyll 2.1.1 Released</option>
189
-
190
- <option value="/news/2014/06/28/jekyll-turns-21-i-mean-2-1-0/">Jekyll Turns 21! Err... I mean 2.1.0.</option>
191
-
192
- <option value="/news/2014/06/04/jekyll-stickers-1-dollar-stickermule/">Pick Up your $1 Jekyll Sticker</option>
193
-
194
- <option value="/news/2014/05/08/jekyll-2-0-3-released/">Jekyll 2.0.3 Released</option>
195
-
196
- <option value="/news/2014/05/06/jekyll-turns-2-0-0/">Jekyll turns 2.0.0</option>
197
-
198
- <option value="/news/2014/03/27/jekyll-1-5-1-released/">Jekyll 1.5.1 Released</option>
199
-
200
- <option value="/news/2014/03/24/jekyll-1-5-0-released/">Jekyll 1.5.0 Released</option>
201
-
202
- <option value="/news/2014/01/13/jekyll-1-4-3-released/">Jekyll 1.4.3 Released</option>
203
-
204
- <option value="/news/2013/12/16/jekyll-1-4-2-released/">Jekyll 1.4.2 Released</option>
205
-
206
- <option value="/news/2013/12/09/jekyll-1-4-1-released/">Jekyll 1.4.1 Released</option>
207
-
208
- <option value="/news/2013/12/07/jekyll-1-4-0-released/">Jekyll 1.4.0 Released</option>
209
-
210
- <option value="/news/2013/11/26/jekyll-1-3-1-released/">Jekyll 1.3.1 Released</option>
211
-
212
- <option value="/news/2013/11/04/jekyll-1-3-0-released/">Jekyll 1.3.0 Released</option>
213
-
214
- <option value="/news/2013/10/28/jekyll-1-3-0-rc1-released/">Jekyll 1.3.0.rc1 Released</option>
215
-
216
- <option value="/news/2013/09/14/jekyll-1-2-1-released/">Jekyll 1.2.1 Released</option>
217
-
218
- <option value="/news/2013/09/06/jekyll-1-2-0-released/">Jekyll 1.2.0 Released</option>
219
-
220
- <option value="/news/2013/07/25/jekyll-1-1-2-released/">Jekyll 1.1.2 Released</option>
221
-
222
- <option value="/news/2013/07/25/jekyll-1-0-4-released/">Jekyll 1.0.4 Released</option>
223
-
224
- <option value="/news/2013/07/24/jekyll-1-1-1-released/">Jekyll 1.1.1 Released</option>
225
-
226
- <option value="/news/2013/07/14/jekyll-1-1-0-released/">Jekyll 1.1.0 Released</option>
227
-
228
- <option value="/news/2013/06/07/jekyll-1-0-3-released/">Jekyll 1.0.3 Released</option>
229
-
230
- <option value="/news/2013/05/12/jekyll-1-0-2-released/">Jekyll 1.0.2 Released</option>
231
-
232
- <option value="/news/2013/05/08/jekyll-1-0-1-released/">Jekyll 1.0.1 Released</option>
233
-
234
- <option value="/news/2013/05/05/jekyll-1-0-0-released/">Jekyll 1.0.0 Released</option>
235
-
236
- </optgroup>
237
- </select>
238
- </div>
239
-
240
-
241
- <div class="unit four-fifths">
242
- <article>
243
- <h2>
244
- Jekyll 3.4.1, or "Unintended Consequences"
245
- <a href="/news/2017/03/02/jekyll-3-4-1-released/" class="permalink" title="Permalink">∞</a>
246
- </h2>
247
- <span class="post-category">
248
- <span class="label">
249
- release
250
- </span>
251
- </span>
252
- <div class="post-meta">
253
- <span class="post-date">
254
- 02 Mar 2017
255
- </span>
256
- <a href="https://github.com/parkr" class="post-author">
257
- <img class="avatar avatar-small" src="https://avatars3.githubusercontent.com/parkr?v=3&amp;s=24" alt="parkr" srcset="https://avatars3.githubusercontent.com/parkr?v=3&amp;s=24 1x, https://avatars3.githubusercontent.com/parkr?v=3&amp;s=48 2x, https://avatars3.githubusercontent.com/parkr?v=3&amp;s=72 3x, https://avatars3.githubusercontent.com/parkr?v=3&amp;s=96 4x" width="24" height="24" data-proofer-ignore="true">
258
- parkr
259
- </a>
260
- </div>
261
- <div class="post-content">
262
- <p>Conformity is a confounding thing.</p>
263
-
264
- <p>We write tests to ensure that a piece of functionality that works today
265
- will work tomorrow, as further modifications are made to the codebase. This
266
- is a principle of modern software development: every change must have a
267
- test to guard against regressions to the functionality implemented by that
268
- change.</p>
269
-
270
- <p>And yet, occasionally, our very best efforts to test functionality will be
271
- thwarted. This is because of how our code produces unintended
272
- functionality, which naturally goes untested.</p>
273
-
274
- <p>In our documentation, we tell users to name their posts with the following
275
- format:</p>
276
-
277
- <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>YYYY-MM-DD-title.extension
278
- </code></pre></div></div>
279
-
280
- <p>That format specifies exactly four numbers for the year, e.g. 2017, two
281
- letters for the month, e.g. 03, and two letters for the day, e.g. 02. To
282
- match this, we had the following regular expression:</p>
283
-
284
- <div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="sr">%r!^(?:.+/)*(</span><span class="se">\d</span><span class="sr">+-</span><span class="se">\d</span><span class="sr">+-</span><span class="se">\d</span><span class="sr">+)-(.*)(</span><span class="se">\.</span><span class="sr">[^.]+)$!</span>
285
- </code></pre></div></div>
286
-
287
- <p>You might already see the punchline. While our documentation specifies the
288
- exact number of numbers that is required for each section of the date, our
289
- regular expression does not enforce this precision. What happens if a user
290
- doesn’t conform to our documentation?</p>
291
-
292
- <p>We recently <a href="https://github.com/jekyll/jekyll/issues/5603">received a bug report</a>
293
- that detailed how the following file was considered a post:</p>
294
-
295
- <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>84093135-42842323-42000001-b890-136270f7e5f1.md
296
- </code></pre></div></div>
297
-
298
- <p>Of course! It matches the above regular expression, but doesn’t satisfy
299
- other requirements about those numbers being a valid date (unless you’re
300
- living in a world that has 43 million months, and 42 million (and one)
301
- days). So, we <a href="https://github.com/jekyll/jekyll/pull/5609">modified the regular expression to match our
302
- documentation</a>:</p>
303
-
304
- <div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="sr">%r!^(?:.+/)*(</span><span class="se">\d</span><span class="sr">{4}-</span><span class="se">\d</span><span class="sr">{2}-</span><span class="se">\d</span><span class="sr">{2})-(.*)(</span><span class="se">\.</span><span class="sr">[^.]+)$!</span>
305
- </code></pre></div></div>
306
-
307
- <p>Our tests all passed and we were properly excluding this crazy date with 43
308
- million months and days. This change shipped in Jekyll v3.4.0 and all was
309
- well.</p>
310
-
311
- <p>Well, not so much.</p>
312
-
313
- <p>A very common way to specify the month of February is <code class="highlighter-rouge">2</code>. This is true for
314
- all single-digit months and days of the month. Notice anything about our
315
- first regular expression versus our second? The second regular expression
316
- imposes a <strong>minimum</strong>, as well as maximum, number of digits. This change
317
- made Jekyll ignore dates with single-digit days and months.</p>
318
-
319
- <p>The first eight years of Jekyll’s existence had allowed single-digit days
320
- and months due to an imprecise regular expression. For some people, their
321
- entire blog was missing, and there were no errors that told them why.</p>
322
-
323
- <p>After receiving a few bug reports, it became clear what had happened.
324
- Unintended functionality of the last eight years had been broken. Thus,
325
- v3.4.0 was broken for a non-negligible number of sites. With a test site
326
- in-hand from <a href="https://github.com/andrewbanchich" class="user-mention">@andrewbanchich</a>, I tracked it down to this regular expression
327
- and <a href="https://github.com/jekyll/jekyll/pull/5920">reintroduced</a> a proper
328
- minimum number of digits for each segment:</p>
329
-
330
- <div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="sr">%r!^(?:.+/)*(</span><span class="se">\d</span><span class="sr">{2,4}-</span><span class="se">\d</span><span class="sr">{1,2}-</span><span class="se">\d</span><span class="sr">{1,2})-(.*)(</span><span class="se">\.</span><span class="sr">[^.]+)$!</span>
331
- </code></pre></div></div>
332
-
333
- <p>And, I wrote a test.</p>
334
-
335
- <p>This change was quickly backported to v3.4.0 and here we are: releasing
336
- v3.4.1. It will fix the problem for all users who were using single-digit
337
- months and days.</p>
338
-
339
- <p>With this, I encourage all of you to look at your code for <em>unintended</em>
340
- functionality and make a judgement call: if it’s allowed, <em>should it be</em>?
341
- If it should be allowed, make it <em>intended</em> functionality and test it! I
342
- know I’ll be looking at my code with much greater scrutiny going forward,
343
- looking for unintended consequences.</p>
344
-
345
- <p>Many thanks to our Jekyll affinity team captains who helped out, including
346
- <a href="https://github.com/pathawks" class="user-mention">@pathawks</a>, <a href="https://github.com/pnn" class="user-mention">@pnn</a>, and <a href="https://github.com/DirtyF" class="user-mention">@DirtyF</a>. Thanks, too, to <a href="https://github.com/ashmaroli" class="user-mention">@ashmaroli</a> for reviewing my
347
- change with an eye for consistency and precision. This was certainly a team
348
- effort.</p>
349
-
350
- <p>We hope Jekyll v3.4.1 brings your variable-digit dates back to their
351
- previous glory. We certainly won’t let that unintended functionality be
352
- unintended any longer.</p>
353
-
354
- <p>As always, Happy Jekylling!</p>
355
-
356
- </div>
357
- </article>
358
-
359
- </div>
360
-
361
- <div class="unit one-fifth hide-on-mobiles">
362
- <aside>
363
- <ul>
364
- <li class="">
365
- <a href="/news/">All News</a>
366
- </li>
367
- <li class="">
368
- <a href="/news/releases/">Jekyll Releases</a>
369
- </li>
370
- </ul>
371
- <h4>Recent Releases</h4>
372
- <ul>
373
-
374
- <li class="">
375
- <a href="/news/2017/09/21/jekyll-3-6-0-released/">Version 3.6.0</a>
376
- </li>
377
-
378
- <li class="">
379
- <a href="/news/2017/08/12/jekyll-3-5-2-released/">Version 3.5.2</a>
380
- </li>
381
-
382
- <li class="">
383
- <a href="/news/2017/07/17/jekyll-3-5-1-released/">Version 3.5.1</a>
384
- </li>
385
-
386
- <li class="">
387
- <a href="/news/2017/06/15/jekyll-3-5-0-released/">Version 3.5.0</a>
388
- </li>
389
-
390
- <li class="">
391
- <a href="/news/2017/03/21/jekyll-3-4-3-released/">Version 3.4.3</a>
392
- </li>
393
-
394
- <li>
395
- <a href="/docs/history/">History »</a>
396
- </li>
397
- </ul>
398
- <h4>Other News</h4>
399
- <ul>
400
-
401
-
402
-
403
-
404
-
405
-
406
-
407
-
408
-
409
-
410
-
411
-
412
-
413
-
414
-
415
-
416
-
417
-
418
-
419
-
420
-
421
-
422
- <li class="">
423
- <a href="/news/2016/08/24/jekyll-admin-initial-release/">Jekyll Admin Initial Release</a>
424
- </li>
425
-
426
-
427
-
428
-
429
-
430
-
431
-
432
- <li class="">
433
- <a href="/news/2016/06/03/update-on-jekyll-s-google-summer-of-code-projects/">Jekyll's Google Summer of Code Project: The CMS You Always Wanted</a>
434
- </li>
435
-
436
-
437
-
438
-
439
-
440
-
441
-
442
-
443
-
444
-
445
-
446
-
447
-
448
-
449
-
450
- <li class="">
451
- <a href="/news/2016/03/10/making-it-easier-to-contribute-to-jekyll/">Making it easier to contribute to Jekyll</a>
452
- </li>
453
-
454
-
455
-
456
-
457
-
458
-
459
-
460
-
461
-
462
-
463
-
464
-
465
-
466
-
467
-
468
-
469
-
470
- <li class="">
471
- <a href="/news/2015/02/26/introducing-jekyll-talk/">Join the Discussion at Jekyll Talk</a>
472
- </li>
473
-
474
-
475
-
476
-
477
-
478
- <li class="">
479
- <a href="/news/2015/01/20/jekyll-meet-and-greet/">Jekyll Meet &amp; Greet at GitHub HQ</a>
480
- </li>
481
-
482
-
483
-
484
-
485
-
486
- <li class="">
487
- <a href="/news/2014/12/17/alfredxing-welcome-to-jekyll-core/">Alfred Xing has joined the Jekyll core team</a>
488
- </li>
489
-
490
-
491
-
492
-
493
-
494
-
495
-
496
-
497
-
498
-
499
-
500
-
501
-
502
-
503
-
504
-
505
-
506
-
507
-
508
- <li class="">
509
- <a href="/news/2014/06/04/jekyll-stickers-1-dollar-stickermule/">Pick Up your $1 Jekyll Sticker</a>
510
- </li>
511
-
512
-
513
-
514
-
515
-
516
-
517
-
518
-
519
-
520
-
521
-
522
-
523
-
524
-
525
-
526
-
527
-
528
-
529
-
530
-
531
-
532
-
533
-
534
-
535
-
536
-
537
-
538
-
539
-
540
-
541
-
542
-
543
-
544
-
545
-
546
-
547
-
548
-
549
-
550
-
551
-
552
-
553
-
554
-
555
- </ul>
556
- </aside>
557
- </div>
558
-
559
-
560
- <div class="clear"></div>
561
-
562
- </div>
563
- </section>
564
-
565
-
566
- <footer>
567
- <div class="grid">
568
- <div class="unit one-third center-on-mobiles">
569
- <p>The contents of this website are <br>© 2017 under the terms of the <a href="https://github.com/jekyll/jekyll/blob/master/LICENSE">MIT License</a>.</p>
570
- </div>
571
- <div class="unit two-thirds align-right center-on-mobiles">
572
- <p>
573
- Proudly hosted by
574
- <a href="https://github.com">
575
- <img src="/img/footer-logo.png" width="100" height="30" alt="GitHub • Social coding">
576
- </a>
577
- </p>
578
- </div>
579
- </div>
580
- </footer>
581
-
582
- <script>
583
- var anchorForId = function (id) {
584
- var anchor = document.createElement("a");
585
- anchor.className = "header-link";
586
- anchor.href = "#" + id;
587
- anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>";
588
- anchor.title = "Permalink";
589
- return anchor;
590
- };
591
-
592
- var linkifyAnchors = function (level, containingElement) {
593
- var headers = containingElement.getElementsByTagName("h" + level);
594
- for (var h = 0; h < headers.length; h++) {
595
- var header = headers[h];
596
-
597
- if (typeof header.id !== "undefined" && header.id !== "") {
598
- header.appendChild(anchorForId(header.id));
599
- }
600
- }
601
- };
602
-
603
- document.onreadystatechange = function () {
604
- if (this.readyState === "complete") {
605
- var contentBlock = document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0];
606
- if (!contentBlock) {
607
- return;
608
- }
609
- for (var level = 1; level <= 6; level++) {
610
- linkifyAnchors(level, contentBlock);
611
- }
612
- }
613
- };
614
- </script>
615
-
616
-
617
- <!-- Gauges (http://get.gaug.es/) -->
618
- <script>
619
- var _gauges = _gauges || [];
620
- (function() {
621
- var t = document.createElement('script');
622
- t.type = 'text/javascript';
623
- t.async = true;
624
- t.id = 'gauges-tracker';
625
- t.setAttribute('data-site-id', '503c5af6613f5d0f19000027');
626
- t.src = '//secure.gaug.es/track.js';
627
- var s = document.getElementsByTagName('script')[0];
628
- s.parentNode.insertBefore(t, s);
629
- })();
630
- </script>
631
-
632
-
633
-
634
- <!-- Google Analytics (https://www.google.com/analytics) -->
635
- <script>
636
- !function(j,e,k,y,l,L){j.GoogleAnalyticsObject=y,j[y]||(j[y]=function(){
637
- (j[y].q=j[y].q||[]).push(arguments)}),j[y].l=+new Date,l=e.createElement(k),
638
- L=e.getElementsByTagName(k)[0],l.src='//www.google-analytics.com/analytics.js',
639
- L.parentNode.insertBefore(l,L)}(window,document,'script','ga');
640
-
641
- ga('create', 'UA-50755011-1', 'jekyllrb.com');
642
- ga('send', 'pageview');
643
-
644
- </script>
645
-
646
-
647
-
648
- </body>
649
- </html>