jekyll-docs 3.6.0 → 3.6.1

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