From 894d2a0415a64b3a40840b5adbe11523b5eff097 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Fri, 4 Nov 2016 00:50:54 +0530 Subject: [PATCH 001/207] test double slash when input = '/' --- test/test_filters.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/test_filters.rb b/test/test_filters.rb index 9a0f87d4..380f1d23 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -368,6 +368,24 @@ class TestFilters < JekyllUnitTest assert_equal "http://example.com/base", filter.absolute_url(page_url) end + should "not append a forward slash if input is '/'" do + page_url = "/" + filter = make_filter_mock({ + "url" => "http://example.com", + "baseurl" => "/base" + }) + refute_equal "http://example.com/base//", filter.absolute_url(page_url) + end + + should "not append a forward slash if input is '/' and nil 'baseurl'" do + page_url = "/" + filter = make_filter_mock({ + "url" => "http://example.com", + "baseurl" => nil + }) + refute_equal "http://example.com//", filter.absolute_url(page_url) + end + should "normalize international URLs" do page_url = "" filter = make_filter_mock({ From 9192e66b7b9cdbeff43598c55d4a34f67a83f888 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Fri, 4 Nov 2016 01:17:54 +0530 Subject: [PATCH 002/207] assert instead of refuting --- test/test_filters.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_filters.rb b/test/test_filters.rb index 380f1d23..66091c28 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -374,7 +374,7 @@ class TestFilters < JekyllUnitTest "url" => "http://example.com", "baseurl" => "/base" }) - refute_equal "http://example.com/base//", filter.absolute_url(page_url) + assert_equal "http://example.com/base/", filter.absolute_url(page_url) end should "not append a forward slash if input is '/' and nil 'baseurl'" do @@ -383,7 +383,7 @@ class TestFilters < JekyllUnitTest "url" => "http://example.com", "baseurl" => nil }) - refute_equal "http://example.com//", filter.absolute_url(page_url) + assert_equal "http://example.com/", filter.absolute_url(page_url) end should "normalize international URLs" do From da762eaa42f0410dcd6c254c4f020d0f63532330 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Thu, 3 Nov 2016 15:48:37 -0700 Subject: [PATCH 003/207] Revert "Add permalinks to docs in '/maintaining/'" --- docs/_docs/maintaining/affinity-team-captain.md | 1 - docs/_docs/maintaining/avoiding-burnout.md | 1 - docs/_docs/maintaining/becoming-a-maintainer.md | 1 - docs/_docs/maintaining/merging-a-pull-request.md | 1 - docs/_docs/maintaining/reviewing-a-pull-request.md | 1 - docs/_docs/maintaining/special-labels.md | 1 - docs/_docs/maintaining/triaging-an-issue.md | 1 - 7 files changed, 7 deletions(-) diff --git a/docs/_docs/maintaining/affinity-team-captain.md b/docs/_docs/maintaining/affinity-team-captain.md index 0554fdc6..02247d2d 100644 --- a/docs/_docs/maintaining/affinity-team-captain.md +++ b/docs/_docs/maintaining/affinity-team-captain.md @@ -1,7 +1,6 @@ --- title: Affinity Team Captains layout: docs -permalink: /docs/maintaining/affinity-team-captain/ --- **This guide is for affinity team captains.** These special people are **team maintainers** of one of our [affinity teams][] and help triage and evaluate the issues and contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/avoiding-burnout.md b/docs/_docs/maintaining/avoiding-burnout.md index 72e46e1a..a418cefd 100644 --- a/docs/_docs/maintaining/avoiding-burnout.md +++ b/docs/_docs/maintaining/avoiding-burnout.md @@ -1,7 +1,6 @@ --- title: "Avoiding Burnout" layout: docs -permalink: /docs/maintaining/avoiding-burnout/ --- **This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/becoming-a-maintainer.md b/docs/_docs/maintaining/becoming-a-maintainer.md index 61b19e2c..c4a262b9 100644 --- a/docs/_docs/maintaining/becoming-a-maintainer.md +++ b/docs/_docs/maintaining/becoming-a-maintainer.md @@ -1,7 +1,6 @@ --- title: "Becoming a Maintainer" layout: docs -permalink: /docs/maintaining/becoming-a-maintainer/ --- **This guide is for contributors.** These special people have contributed to one or more of Jekyll's repositories, but do not yet have write access to any. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/merging-a-pull-request.md b/docs/_docs/maintaining/merging-a-pull-request.md index e5c5eacf..7265c6f8 100644 --- a/docs/_docs/maintaining/merging-a-pull-request.md +++ b/docs/_docs/maintaining/merging-a-pull-request.md @@ -1,7 +1,6 @@ --- title: "Merging a Pull Request" layout: docs -permalink: /docs/maintaining/merging-a-pull-request/ --- **This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/reviewing-a-pull-request.md b/docs/_docs/maintaining/reviewing-a-pull-request.md index 3185a19e..1ecaeea9 100644 --- a/docs/_docs/maintaining/reviewing-a-pull-request.md +++ b/docs/_docs/maintaining/reviewing-a-pull-request.md @@ -1,7 +1,6 @@ --- title: "Reviewing a Pull Request" layout: docs -permalink: /docs/maintaining/reviewing-a-pull-request/ --- **This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/special-labels.md b/docs/_docs/maintaining/special-labels.md index 7a32a1fa..ff8a623f 100644 --- a/docs/_docs/maintaining/special-labels.md +++ b/docs/_docs/maintaining/special-labels.md @@ -1,7 +1,6 @@ --- title: "Special Labels" layout: docs -permalink: /docs/maintaining/special-labels/ --- **This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/triaging-an-issue.md b/docs/_docs/maintaining/triaging-an-issue.md index 6c97f967..4802b61b 100644 --- a/docs/_docs/maintaining/triaging-an-issue.md +++ b/docs/_docs/maintaining/triaging-an-issue.md @@ -1,7 +1,6 @@ --- title: "Triaging an Issue" layout: docs -permalink: /docs/maintaining/triaging-an-issue/ --- **This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. From 8d1e0433061b1ebae06d5755dc05edf7ecdbe3da Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Thu, 3 Nov 2016 15:49:21 -0700 Subject: [PATCH 004/207] Set docs permalink in config --- docs/_config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_config.yml b/docs/_config.yml index 6f57710a..32ae74bb 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -12,6 +12,7 @@ timezone: America/Los_Angeles collections: docs: + permalink: /:collection/:path/ output: true posts: permalink: /news/:year/:month/:day/:title/ From 47e400549a7af16c953f2f158c68ec5b1f012d3a Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Wed, 9 Nov 2016 22:42:14 +0100 Subject: [PATCH 005/207] [docs] info about the help command usage --- docs/_docs/quickstart.md | 2 ++ docs/_docs/usage.md | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index 969b5384..2d341cc0 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -25,4 +25,6 @@ advantage of all the awesome configuration options Jekyll makes available. If you're running into problems, ensure you have all the [requirements installed][Installation]. +When in doubt, use the help command to remind you of all available options and usage, it also works with the new, build and serve subcommands, e.g. jekyll help new or jekyll help build. + [Installation]: /docs/installation/ diff --git a/docs/_docs/usage.md b/docs/_docs/usage.md index 3d2413d4..9f91d437 100644 --- a/docs/_docs/usage.md +++ b/docs/_docs/usage.md @@ -97,5 +97,12 @@ $ jekyll build --source _source --destination _deploy For more about the possible configuration options, see the [configuration](../configuration/) page. +
+
Call for help
+

+ The help command is always here to remind you of all available options and usage, and also works with the build, serve and new subcommands, e.g jekyll help new or jekyll help build. +

+
+ If you're interested in browsing these docs on-the-go, install the `jekyll-docs` gem and run `jekyll docs` in your terminal. From 820b704e3f9f2a05541d90988ef36bf2ecd29466 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Thu, 10 Nov 2016 00:00:26 +0100 Subject: [PATCH 006/207] appease script/proof --disable-external --- docs/_docs/continuous-integration.md | 2 +- docs/_docs/contributing.md | 6 +++--- docs/_docs/github-pages.md | 6 +++--- docs/_docs/maintaining/avoiding-burnout.md | 2 +- docs/_docs/maintaining/becoming-a-maintainer.md | 6 +++--- docs/_docs/maintaining/merging-a-pull-request.md | 2 +- docs/_docs/maintaining/reviewing-a-pull-request.md | 2 +- docs/_docs/maintaining/special-labels.md | 2 +- docs/_docs/plugins.md | 1 - 9 files changed, 14 insertions(+), 15 deletions(-) diff --git a/docs/_docs/continuous-integration.md b/docs/_docs/continuous-integration.md index 4b5b2d4e..54b3466c 100644 --- a/docs/_docs/continuous-integration.md +++ b/docs/_docs/continuous-integration.md @@ -229,5 +229,5 @@ an entry in the `.gitignore` file to avoid it from being checked in again. This entire guide is open-source. Go ahead and [edit it][3] if you have a fix or [ask for help][4] if you run into trouble and need some help. -[3]: https://github.com/jekyll/jekyll/edit/master/site/_docs/continuous-integration.md +[3]: https://github.com/jekyll/jekyll/edit/master/docs/_docs/continuous-integration.md [4]: https://jekyllrb.com/help/ diff --git a/docs/_docs/contributing.md b/docs/_docs/contributing.md index a317631c..c5a37722 100644 --- a/docs/_docs/contributing.md +++ b/docs/_docs/contributing.md @@ -67,13 +67,13 @@ We want the Jekyll documentation to be the best it can be. We've open-sourced ou ### How to submit changes -You can find the documentation for jekyllrb.com in the [site](https://github.com/jekyll/jekyll/tree/master/site) directory. See the section above, [submitting a pull request](#submitting-a-pull-request) for information on how to propose a change. +You can find the documentation for jekyllrb.com in the [docs](https://github.com/jekyll/jekyll/tree/master/docs) directory. See the section above, [submitting a pull request](#submitting-a-pull-request) for information on how to propose a change. One gotcha, all pull requests should be directed at the `master` branch (the default branch). ### Adding plugins -If you want to add your plugin to the [list of plugins](https://jekyllrb.com/docs/plugins/#available-plugins), please submit a pull request modifying the [plugins page source file](https://github.com/jekyll/jekyll/blob/master/site/_docs/plugins.md) by adding a link to your plugin under the proper subheading depending upon its type. +If you want to add your plugin to the [list of plugins](https://jekyllrb.com/docs/plugins/#available-plugins), please submit a pull request modifying the [plugins page source file](https://github.com/jekyll/jekyll/blob/master/docs/_docs/plugins.md) by adding a link to your plugin under the proper subheading depending upon its type. ## Code Contributions @@ -85,7 +85,7 @@ Any time you propose a code change, you should also include updates to the docum #### Documentation -If your contribution changes any Jekyll behavior, make sure to update the documentation. Documentation lives in the `site/_docs` folder (spoiler alert: it's a Jekyll site!). If the docs are missing information, please feel free to add it in. Great docs make a great project. Include changes to the documentation within your pull request, and once merged, `jekyllrb.com` will be updated. +If your contribution changes any Jekyll behavior, make sure to update the documentation. Documentation lives in the `docs/_docs` folder (spoiler alert: it's a Jekyll site!). If the docs are missing information, please feel free to add it in. Great docs make a great project. Include changes to the documentation within your pull request, and once merged, `jekyllrb.com` will be updated. #### Tests diff --git a/docs/_docs/github-pages.md b/docs/_docs/github-pages.md index 6a449d68..7a90b8bb 100644 --- a/docs/_docs/github-pages.md +++ b/docs/_docs/github-pages.md @@ -122,9 +122,9 @@ custom domain is specified—see below). The Jekyll project repository itself is a perfect example of this branch structure—the [master branch]({{ site.repository }}) contains the -actual software project for Jekyll, however the Jekyll website (that you’re -looking at right now) is contained in the [gh-pages -branch]({{ site.repository }}/tree/gh-pages) of the same repository. +actual software project for Jekyll, and the Jekyll website that you’re +looking at right now is contained in the [docs +folder]({{ site.repository }}/tree/master/docs) of the same repository.
Source Files Must be in the Root Directory
diff --git a/docs/_docs/maintaining/avoiding-burnout.md b/docs/_docs/maintaining/avoiding-burnout.md index a418cefd..1d1d93b1 100644 --- a/docs/_docs/maintaining/avoiding-burnout.md +++ b/docs/_docs/maintaining/avoiding-burnout.md @@ -28,4 +28,4 @@ Jekyll gets a lot of feature requests, non-reproducible bug reports, usage quest Thanks to https://gist.github.com/ryanflorence/124070e7c4b3839d4573 which influenced this document. -Thanks to [Homebrew's "Avoiding Burnout" document](https://github.com/Homebrew/brew/blob/master/share/doc/homebrew/Maintainers-Avoiding-Burnout.md) for providing a perfect base for this document. +Thanks to [Homebrew's "Avoiding Burnout" document](https://github.com/Homebrew/brew/blob/master/docs/Maintainers-Avoiding-Burnout.md) for providing a perfect base for this document. diff --git a/docs/_docs/maintaining/becoming-a-maintainer.md b/docs/_docs/maintaining/becoming-a-maintainer.md index c4a262b9..e4a1840c 100644 --- a/docs/_docs/maintaining/becoming-a-maintainer.md +++ b/docs/_docs/maintaining/becoming-a-maintainer.md @@ -14,7 +14,7 @@ You want to maintain Jekyll? Use it often. Do weird things with it. Do normal th ## 2. Help Triage Issues -Watch the repository you're interested in. Join [an Affinity Team](https://teams.jekyllrb.com) and receive mentions regarding a particular interest area of the project. When you receive a notification for an issue that has not been triaged by a maintainer, dive in. Can you reproduce the issue? Can you determine the fix? [More tips on Triaging an Issue in our maintainer guide](triaging-an-issue.md). Every maintainer loves an issue that is resolved before they get to it. :smiley: +Watch the repository you're interested in. Join [an Affinity Team](https://teams.jekyllrb.com) and receive mentions regarding a particular interest area of the project. When you receive a notification for an issue that has not been triaged by a maintainer, dive in. Can you reproduce the issue? Can you determine the fix? [More tips on Triaging an Issue in our maintainer guide](../triaging-an-issue). Every maintainer loves an issue that is resolved before they get to it. :smiley: ## 3. Write Documentation @@ -26,7 +26,7 @@ As a maintainer, you will be reviewing pull requests which update code. You shou ## 5. Review Pull Requests -Start by reviewing one pull request a week. Leave detailed comments and [follow our guide for reviewing pull requests](reviewing-a-pull-request.md). +Start by reviewing one pull request a week. Leave detailed comments and [follow our guide for reviewing pull requests](../reviewing-a-pull-request). ## 6. Ask! @@ -36,4 +36,4 @@ We would love to expand the team and look forward to many more community members # Helping Out Elsewhere -In addition to maintainers of our core and plugin code, the Jekyll team is comprised of moderators for our forums. These helpful community members take a look at the topics posted to https://talk.jekyllrb.com and ensure they are properly categorized and are acceptable under our Code of Conduct. If you would like to be a moderator, email one of the maintainers with links to where you have answered questions and a request to be added as a moderator. More help is always welcome. +In addition to maintainers of our core and plugin code, the Jekyll team is comprised of moderators for our forums. These helpful community members take a look at the topics posted to [https://talk.jekyllrb.com](https://talk.jekyllrb.com) and ensure they are properly categorized and are acceptable under our Code of Conduct. If you would like to be a moderator, email one of the maintainers with links to where you have answered questions and a request to be added as a moderator. More help is always welcome. diff --git a/docs/_docs/maintaining/merging-a-pull-request.md b/docs/_docs/maintaining/merging-a-pull-request.md index 7265c6f8..80ad6f7c 100644 --- a/docs/_docs/maintaining/merging-a-pull-request.md +++ b/docs/_docs/maintaining/merging-a-pull-request.md @@ -10,7 +10,7 @@ layout: docs All pull requests should be subject to code review. Code review is a [foundational value](https://blog.fullstory.com/what-we-learned-from-google-code-reviews-arent-just-for-catching-bugs-b125a13aa292) of good engineering teams. Besides providing validation of correctness, it promotes a sense of community and gives other maintainers understanding of all parts of the code base. In short, code review is crucial to a healthy open source project. -**Read our guide for [Reviewing a pull request](reviewing-a-pull-request.md) before merging.** Notably, the change must have tests if for code, and at least two maintainers must give it an OK. +**Read our guide for [Reviewing a pull request](../reviewing-a-pull-request) before merging.** Notably, the change must have tests if for code, and at least two maintainers must give it an OK. ## Merging diff --git a/docs/_docs/maintaining/reviewing-a-pull-request.md b/docs/_docs/maintaining/reviewing-a-pull-request.md index 1ecaeea9..ebdd7a3c 100644 --- a/docs/_docs/maintaining/reviewing-a-pull-request.md +++ b/docs/_docs/maintaining/reviewing-a-pull-request.md @@ -8,7 +8,7 @@ layout: docs ## Respond Kindly -Above all else, please review a pull request kindly. Our community can only be strong if we make it a welcoming and inclusive environment. To further promote this, the Jekyll community is governed by a [Code of Conduct](../CONDUCT.markdown) by which all community members must abide. +Above all else, please review a pull request kindly. Our community can only be strong if we make it a welcoming and inclusive environment. To further promote this, the Jekyll community is governed by a [Code of Conduct](/docs/conduct) by which all community members must abide. Use emoji liberally :heart: :tada: :sparkles: :confetti_ball: and feel free to be emotive!! Contributions keep this project moving forward and we're always happy to receive them, even if the pull request isn't ultimately merged. diff --git a/docs/_docs/maintaining/special-labels.md b/docs/_docs/maintaining/special-labels.md index ff8a623f..eea366e9 100644 --- a/docs/_docs/maintaining/special-labels.md +++ b/docs/_docs/maintaining/special-labels.md @@ -18,4 +18,4 @@ These labels are used to indicate that the Git state of a pull request must chan ## `stale` -This label is automatically added and removed by @jekyllbot based on activity on an issue or pull request. The rules for this label are laid out in [Triaging an Issue: Staleness and automatic closure](triaging-an-issue.md#staleness-and-automatic-closure). +This label is automatically added and removed by @jekyllbot based on activity on an issue or pull request. The rules for this label are laid out in [Triaging an Issue: Staleness and automatic closure](../triaging-an-issue/#staleness-and-automatic-closure). diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index 6e5bbf23..e546396f 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -771,7 +771,6 @@ LESS.js files during generation. - [Markdown References by Olov Lassus](https://github.com/olov/jekyll-references): Keep all your markdown reference-style link definitions in one \_references.md file. - [Stylus Converter](https://gist.github.com/988201): Convert .styl to .css. - [ReStructuredText Converter](https://github.com/xdissent/jekyll-rst): Converts ReST documents to HTML with Pygments syntax highlighting. -- [Jekyll-pandoc-plugin](https://github.com/dsanson/jekyll-pandoc-plugin): Use pandoc for rendering markdown. - [Jekyll-pandoc-multiple-formats](https://github.com/fauno/jekyll-pandoc-multiple-formats) by [edsl](https://github.com/edsl): Use pandoc to generate your site in multiple formats. Supports pandoc’s markdown extensions. - [Transform Layouts](https://gist.github.com/1472645): Allows HAML layouts (you need a HAML Converter plugin for this to work). - [Org-mode Converter](https://gist.github.com/abhiyerra/7377603): Org-mode converter for Jekyll. From ed9520cd3b4a39d45ec972b3dc4b612ef8b3500b Mon Sep 17 00:00:00 2001 From: Roger Ogden Date: Fri, 2 Dec 2016 16:58:31 -0700 Subject: [PATCH 007/207] Fixes #5498 Updated data_reader.rb comments to more accurately reflect read() and read_data_to() functionality. --- lib/jekyll/readers/data_reader.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/jekyll/readers/data_reader.rb b/lib/jekyll/readers/data_reader.rb index 0afbad61..da11f1da 100644 --- a/lib/jekyll/readers/data_reader.rb +++ b/lib/jekyll/readers/data_reader.rb @@ -7,20 +7,20 @@ module Jekyll @entry_filter = EntryFilter.new(site) end - # Read all the files in //_drafts and create a new Draft - # object with each one. + # Read all the files in and adds them to @content # # dir - The String relative path of the directory to read. # - # Returns nothing. + # Returns @content, a Hash of the .yaml, .yml, + # .json, and .csv files in the base directory def read(dir) base = site.in_source_dir(dir) read_data_to(base, @content) @content end - # Read and parse all yaml files under and add them to the - # variable. + # Read and parse all .yaml, .yml, .json, and .csv + # files under and add them to the variable. # # dir - The string absolute path of the directory to read. # data - The variable to which data will be added. From 7b73abcdd9a5f784198408e1ce4c3121b9394115 Mon Sep 17 00:00:00 2001 From: Roger Ogden Date: Fri, 2 Dec 2016 17:18:30 -0700 Subject: [PATCH 008/207] Deleted trailing whitespace on line 22 --- lib/jekyll/readers/data_reader.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/readers/data_reader.rb b/lib/jekyll/readers/data_reader.rb index da11f1da..6744ae05 100644 --- a/lib/jekyll/readers/data_reader.rb +++ b/lib/jekyll/readers/data_reader.rb @@ -19,7 +19,7 @@ module Jekyll @content end - # Read and parse all .yaml, .yml, .json, and .csv + # Read and parse all .yaml, .yml, .json, and .csv # files under and add them to the variable. # # dir - The string absolute path of the directory to read. From 6e2449b482ae22b039b441959a275dcf29cbd755 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 7 Dec 2016 10:13:14 -0800 Subject: [PATCH 009/207] Write Jekyll::Utils::Exec.run for running shell commands. --- features/support/helpers.rb | 16 +++++----------- lib/jekyll/commands/new.rb | 7 +++---- lib/jekyll/utils.rb | 3 ++- lib/jekyll/utils/exec.rb | 25 +++++++++++++++++++++++++ test/helper.rb | 8 ++++---- test/test_new_command.rb | 18 +++++++++--------- 6 files changed, 48 insertions(+), 29 deletions(-) create mode 100644 lib/jekyll/utils/exec.rb diff --git a/features/support/helpers.rb b/features/support/helpers.rb index 1340808a..50afa3a8 100644 --- a/features/support/helpers.rb +++ b/features/support/helpers.rb @@ -1,6 +1,5 @@ require "fileutils" require "jekyll" -require "open3" require "time" require "safe_yaml/load" @@ -106,21 +105,16 @@ end # rubocop:disable Metrics/AbcSize def run_in_shell(*args) - i, o, e, p = Open3.popen3(*args) - out = o.read.strip - err = e.read.strip + p, output = Jekyll::Utils::Exec.run(*args) - [i, o, e].each(&:close) - - File.write(Paths.status_file, p.value.exitstatus) + File.write(Paths.status_file, p.exitstatus) File.open(Paths.output_file, "wb") do |f| f.puts "$ " << args.join(" ") - f.puts out - f.puts err - f.puts "EXIT STATUS: #{p.value.exitstatus}" + f.puts output + f.puts "EXIT STATUS: #{p.exitstatus}" end - p.value + p end # rubocop:enable Metrics/AbcSize diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index 8319bd7e..7edb5574 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -133,10 +133,9 @@ RUBY Jekyll::External.require_with_graceful_fail "bundler" Jekyll.logger.info "Running bundle install in #{path.cyan}..." Dir.chdir(path) do - if ENV["CI"] - system("bundle", "install", "--quiet") - else - system("bundle", "install") + _, output = Jekyll::Utils::Exec.run("bundle", "install", "--quiet") + output.to_s.each_line do |line| + Jekyll.logger.info(line) end end end diff --git a/lib/jekyll/utils.rb b/lib/jekyll/utils.rb index f870ea85..31d15e85 100644 --- a/lib/jekyll/utils.rb +++ b/lib/jekyll/utils.rb @@ -2,8 +2,9 @@ module Jekyll module Utils extend self - autoload :Platforms, "jekyll/utils/platforms" autoload :Ansi, "jekyll/utils/ansi" + autoload :Exec, "jekyll/utils/exec" + autoload :Platforms, "jekyll/utils/platforms" # Constants for use in #slugify SLUGIFY_MODES = %w(raw default pretty ascii).freeze diff --git a/lib/jekyll/utils/exec.rb b/lib/jekyll/utils/exec.rb new file mode 100644 index 00000000..e37685b2 --- /dev/null +++ b/lib/jekyll/utils/exec.rb @@ -0,0 +1,25 @@ +require 'open3' + +module Jekyll + module Utils + module Exec + extend self + + # Runs a program in a sub-shell. + # + # *args - a list of strings containing the program name and arguments + # + # Returns a Process::Status and a String of output in an array in + # that order. + def run(*args) + stdin, stdout, stderr, process = Open3.popen3(*args) + out = stdout.read.strip + err = stderr.read.strip + + [stdin, stdout, stderr].each(&:close) + [process.value, out + err] + end + + end + end +end diff --git a/test/helper.rb b/test/helper.rb index 0c6935a0..b919f2a3 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -159,11 +159,11 @@ class JekyllUnitTest < Minitest::Test end def capture_output - stderr = StringIO.new - Jekyll.logger = Logger.new stderr + buffer = StringIO.new + Jekyll.logger = Logger.new(buffer) yield - stderr.rewind - return stderr.string.to_s + buffer.rewind + buffer.string.to_s end alias_method :capture_stdout, :capture_output alias_method :capture_stderr, :capture_output diff --git a/test/test_new_command.rb b/test/test_new_command.rb index 982de1da..78e6ac6f 100644 --- a/test/test_new_command.rb +++ b/test/test_new_command.rb @@ -25,14 +25,14 @@ class TestNewCommand < JekyllUnitTest should "create a new directory" do refute_exist @full_path - Jekyll::Commands::New.process(@args) + capture_output { Jekyll::Commands::New.process(@args) } assert_exist @full_path end should "create a Gemfile" do gemfile = File.join(@full_path, "Gemfile") refute_exist @full_path - capture_stdout { Jekyll::Commands::New.process(@args) } + capture_output { Jekyll::Commands::New.process(@args) } assert_exist gemfile assert_match(%r!gem "jekyll", "#{Jekyll::VERSION}"!, File.read(gemfile)) assert_match(%r!gem "github-pages"!, File.read(gemfile)) @@ -54,7 +54,7 @@ class TestNewCommand < JekyllUnitTest end static_template_files << "/Gemfile" - capture_stdout { Jekyll::Commands::New.process(@args) } + capture_output { Jekyll::Commands::New.process(@args) } new_site_files = dir_contents(@full_path).reject do |f| File.extname(f) == ".markdown" @@ -76,7 +76,7 @@ class TestNewCommand < JekyllUnitTest f.gsub! "0000-00-00", stubbed_date end - capture_stdout { Jekyll::Commands::New.process(@args) } + capture_output { Jekyll::Commands::New.process(@args) } new_site_files = dir_contents(@full_path).select do |f| erb_template_files.include? f @@ -87,7 +87,7 @@ class TestNewCommand < JekyllUnitTest should "create blank project" do blank_contents = %w(/_drafts /_layouts /_posts /index.html) - capture_stdout { Jekyll::Commands::New.process(@args, "--blank") } + capture_output { Jekyll::Commands::New.process(@args, "--blank") } output = Jekyll.logger.messages.last bundle_message = "Running bundle install in #{@full_path.cyan}..." assert_same_elements blank_contents, dir_contents(@full_path) @@ -95,13 +95,13 @@ class TestNewCommand < JekyllUnitTest end should "force created folder" do - capture_stdout { Jekyll::Commands::New.process(@args) } - output = capture_stdout { Jekyll::Commands::New.process(@args, "--force") } + capture_output { Jekyll::Commands::New.process(@args) } + output = capture_output { Jekyll::Commands::New.process(@args, "--force") } assert_match(%r!New jekyll site installed in!, output) end should "skip bundle install when opted to" do - capture_stdout { Jekyll::Commands::New.process(@args, "--skip-bundle") } + capture_output { Jekyll::Commands::New.process(@args, "--skip-bundle") } output = Jekyll.logger.messages.last bundle_message = "Bundle install skipped." assert_includes output, bundle_message @@ -120,7 +120,7 @@ class TestNewCommand < JekyllUnitTest should "create a new directory" do refute_exist @site_name_with_spaces - capture_stdout { Jekyll::Commands::New.process(@multiple_args) } + capture_output { Jekyll::Commands::New.process(@multiple_args) } assert_exist @site_name_with_spaces end end From 18c2b0827ec7022687376c129eb9c95abaf841ac Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 7 Dec 2016 17:53:45 -0800 Subject: [PATCH 010/207] Appease rubocop. --- features/support/helpers.rb | 2 -- lib/jekyll/utils/exec.rb | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/features/support/helpers.rb b/features/support/helpers.rb index 50afa3a8..87cf717c 100644 --- a/features/support/helpers.rb +++ b/features/support/helpers.rb @@ -102,8 +102,6 @@ def run_jekyll(args) end # - -# rubocop:disable Metrics/AbcSize def run_in_shell(*args) p, output = Jekyll::Utils::Exec.run(*args) diff --git a/lib/jekyll/utils/exec.rb b/lib/jekyll/utils/exec.rb index e37685b2..33403dbc 100644 --- a/lib/jekyll/utils/exec.rb +++ b/lib/jekyll/utils/exec.rb @@ -1,4 +1,4 @@ -require 'open3' +require "open3" module Jekyll module Utils From 3c139a09f10af478d3dac83b4301fa325a1537b5 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 7 Dec 2016 18:00:47 -0800 Subject: [PATCH 011/207] Care about things. --- lib/jekyll/commands/new.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index 7edb5574..1e62a8c6 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -121,22 +121,23 @@ RUBY # unless the user opts to generate a blank blog or skip 'bundle install'. def after_install(path, options = {}) - Jekyll.logger.info "New jekyll site installed in #{path.cyan}." - Jekyll.logger.info "Bundle install skipped." if options["skip-bundle"] - unless options["blank"] || options["skip-bundle"] bundle_install path end + + Jekyll.logger.info "New jekyll site installed in #{path.cyan}." + Jekyll.logger.info "Bundle install skipped." if options["skip-bundle"] end def bundle_install(path) Jekyll::External.require_with_graceful_fail "bundler" Jekyll.logger.info "Running bundle install in #{path.cyan}..." Dir.chdir(path) do - _, output = Jekyll::Utils::Exec.run("bundle", "install", "--quiet") + process, output = Jekyll::Utils::Exec.run("bundle", "install") output.to_s.each_line do |line| - Jekyll.logger.info(line) + Jekyll.logger.info("Bundler:".green, line.strip) unless line.to_s.empty? end + raise SystemExit unless process.success? end end end From b6120edeaec4fb03575b09d59f50ece578017893 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 15 Jan 2016 16:52:34 -0800 Subject: [PATCH 012/207] Try out Liquid v4.0.0.rc1 --- jekyll.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 734df2e4..6b55dcf4 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |s| s.rdoc_options = ['--charset=UTF-8'] s.extra_rdoc_files = %w[README.markdown LICENSE] - s.add_runtime_dependency('liquid', '~> 3.0') + s.add_runtime_dependency('liquid', '4.0.0.rc1') s.add_runtime_dependency('kramdown', '~> 1.3') s.add_runtime_dependency('mercenary', '~> 0.3.3') s.add_runtime_dependency('safe_yaml', '~> 1.0') From d24ea03acf3298c8a19d8357a3c7e85dda632aad Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 23 Mar 2016 12:29:49 -0700 Subject: [PATCH 013/207] Update highlight block test to conform with v4 API. --- test/test_tags.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_tags.rb b/test/test_tags.rb index fd6dcb97..43bffad1 100644 --- a/test/test_tags.rb +++ b/test/test_tags.rb @@ -46,8 +46,8 @@ CONTENT Jekyll::Tags::HighlightBlock.parse( "highlight", options_string, - ["test", "{% endhighlight %}", "\n"], - {} + Liquid::Tokenizer.new("test{% endhighlight %}\n"), + Liquid::ParseContext.new ) end From db8356b0655bd183a0ebdd1e3222959daca02b87 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 30 Aug 2016 11:51:13 -0700 Subject: [PATCH 014/207] Liquid 4.0 rc2 --- jekyll.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 6b55dcf4..4db71a14 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |s| s.rdoc_options = ['--charset=UTF-8'] s.extra_rdoc_files = %w[README.markdown LICENSE] - s.add_runtime_dependency('liquid', '4.0.0.rc1') + s.add_runtime_dependency('liquid', '4.0.0.rc2') s.add_runtime_dependency('kramdown', '~> 1.3') s.add_runtime_dependency('mercenary', '~> 0.3.3') s.add_runtime_dependency('safe_yaml', '~> 1.0') From 191f5e5fd8135be5134254713556e9214481570d Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 13 Sep 2016 15:25:52 -0700 Subject: [PATCH 015/207] Update to Liquid 4.0.0.rc3 --- jekyll.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 4db71a14..8198ee10 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |s| s.rdoc_options = ['--charset=UTF-8'] s.extra_rdoc_files = %w[README.markdown LICENSE] - s.add_runtime_dependency('liquid', '4.0.0.rc2') + s.add_runtime_dependency('liquid', '4.0.0.rc3') s.add_runtime_dependency('kramdown', '~> 1.3') s.add_runtime_dependency('mercenary', '~> 0.3.3') s.add_runtime_dependency('safe_yaml', '~> 1.0') From dbea1ca80b3c78b9c4d01c78ff11659632f90c9c Mon Sep 17 00:00:00 2001 From: Florian Thomas Date: Sat, 17 Sep 2016 00:37:49 +0200 Subject: [PATCH 016/207] parse expressions before passing it to Liquid::Condition --- lib/jekyll/filters.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 43e01df1..f537e847 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -402,9 +402,11 @@ module Jekyll operator = parser.consume?(:comparison) condition = if operator - Liquid::Condition.new(left_expr, operator, parser.expression) + Liquid::Condition.new(Liquid::Expression.parse(left_expr), + operator, + Liquid::Expression.parse(parser.expression)) else - Liquid::Condition.new(left_expr) + Liquid::Condition.new(Liquid::Expression.parse(left_expr)) end parser.consume(:end_of_string) From dde0441b3af8c09b488076827ec5798ab050134e Mon Sep 17 00:00:00 2001 From: Florian Thomas Date: Thu, 22 Sep 2016 22:14:14 +0300 Subject: [PATCH 017/207] find keys also in assigned collections --- lib/jekyll/drops/site_drop.rb | 4 ++++ test/test_site_drop.rb | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 test/test_site_drop.rb diff --git a/lib/jekyll/drops/site_drop.rb b/lib/jekyll/drops/site_drop.rb index 66366810..97b41806 100644 --- a/lib/jekyll/drops/site_drop.rb +++ b/lib/jekyll/drops/site_drop.rb @@ -19,6 +19,10 @@ module Jekyll end end + def key?(key) + (@obj.collections.key?(key) && key != "posts") || super + end + def posts @site_posts ||= @obj.posts.docs.sort { |a, b| b <=> a } end diff --git a/test/test_site_drop.rb b/test/test_site_drop.rb new file mode 100644 index 00000000..6175bbb8 --- /dev/null +++ b/test/test_site_drop.rb @@ -0,0 +1,21 @@ +require "helper" + +class TestSiteDrop < JekyllUnitTest + context "a site drop" do + setup do + @site = fixture_site({ + "collections" => ["thanksgiving"] + }) + @site.process + @drop = @site.to_liquid.site + end + + should "respond to `key?`" do + assert @drop.respond_to?(:key?) + end + + should "find a key if it's in the collection of the drop" do + assert @drop.key?("thanksgiving") + end + end +end From 793405c00c5f2f23454a88f0c4057029a8d154f4 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Thu, 15 Dec 2016 12:58:08 -0800 Subject: [PATCH 018/207] Liquid v4 has been released. --- jekyll.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 8198ee10..f4b73b54 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |s| s.rdoc_options = ['--charset=UTF-8'] s.extra_rdoc_files = %w[README.markdown LICENSE] - s.add_runtime_dependency('liquid', '4.0.0.rc3') + s.add_runtime_dependency('liquid', '~> 4.0') s.add_runtime_dependency('kramdown', '~> 1.3') s.add_runtime_dependency('mercenary', '~> 0.3.3') s.add_runtime_dependency('safe_yaml', '~> 1.0') From 7862f731b67becfdba9fa7eb049edcc0838b03ff Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 16 Dec 2016 15:38:19 -0800 Subject: [PATCH 019/207] grouping filters: use Liquid::ParseContext to create variable. --- lib/jekyll/filters/grouping_filters.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/filters/grouping_filters.rb b/lib/jekyll/filters/grouping_filters.rb index a16901d9..f2c03466 100644 --- a/lib/jekyll/filters/grouping_filters.rb +++ b/lib/jekyll/filters/grouping_filters.rb @@ -40,7 +40,7 @@ module Jekyll private def parse_expression(str) - Liquid::Variable.new(str, {}) + Liquid::Variable.new(str, Liquid::ParseContext.new) end private From c42eb7fc3a9030b23f90db77437cd41f2b4c7701 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 22 Dec 2016 14:39:08 -0600 Subject: [PATCH 020/207] Take advantage of Liquid::Utils.to_date --- lib/jekyll/filters.rb | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index f537e847..ca47e06a 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -345,16 +345,9 @@ module Jekyll private def time(input) - case input - when Time - input.clone - when Date - input.to_time - when String - Time.parse(input) rescue Time.at(input.to_i) - when Numeric - Time.at(input) - else + begin + Liquid::Utils.to_date(input).to_time + rescue NoMethodError raise Errors::InvalidDateError, "Invalid Date: '#{input.inspect}' is not a valid datetime." end.localtime From 607ab66707744c3ec09fe1a03d89bd30337ebf57 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 22 Dec 2016 15:13:27 -0600 Subject: [PATCH 021/207] Use Liquid's own `to_integer` --- lib/jekyll/filters.rb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index ca47e06a..1d21b99e 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -280,10 +280,11 @@ module Jekyll end end - def pop(array, input = 1) + def pop(array, num = 1) return array unless array.is_a?(Array) + num = Liquid::Utils.to_integer(num) new_ary = array.dup - new_ary.pop(input.to_i || 1) + new_ary.pop(num) new_ary end @@ -294,10 +295,11 @@ module Jekyll new_ary end - def shift(array, input = 1) + def shift(array, num = 1) return array unless array.is_a?(Array) + num = Liquid::Utils.to_integer(num) new_ary = array.dup - new_ary.shift(input.to_i || 1) + new_ary.shift(num) new_ary end @@ -310,11 +312,11 @@ module Jekyll def sample(input, num = 1) return input unless input.respond_to?(:sample) - n = num.to_i rescue 1 - if n == 1 + num = Liquid::Utils.to_integer(num) + if num == 1 input.sample else - input.sample(n) + input.sample(num) end end From 2eb84699362e0f34f28f2dd5bd48cacbe0e1a26e Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 22 Dec 2016 15:48:03 -0600 Subject: [PATCH 022/207] Never throw on `sample` --- lib/jekyll/filters.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 1d21b99e..06a09345 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -312,7 +312,7 @@ module Jekyll def sample(input, num = 1) return input unless input.respond_to?(:sample) - num = Liquid::Utils.to_integer(num) + num = Liquid::Utils.to_integer(num) rescue 1 if num == 1 input.sample else From f7edcceb70281fca0ef2a9a95a5b64ffa7d620db Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 22 Dec 2016 16:15:09 -0600 Subject: [PATCH 023/207] Check return value of `to_date` --- lib/jekyll/filters.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 06a09345..5ca2e10a 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -347,12 +347,12 @@ module Jekyll private def time(input) - begin - Liquid::Utils.to_date(input).to_time - rescue NoMethodError + date = Liquid::Utils.to_date(input) + unless date.respond_to?(:strftime) raise Errors::InvalidDateError, "Invalid Date: '#{input.inspect}' is not a valid datetime." - end.localtime + end + date.to_time.localtime end private From 72a56d9eb747edff8b79b7fe4f109a15c9b2e937 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 22 Dec 2016 19:18:43 -0600 Subject: [PATCH 024/207] Check for `to_time` --- lib/jekyll/filters.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 5ca2e10a..b7103668 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -348,7 +348,7 @@ module Jekyll private def time(input) date = Liquid::Utils.to_date(input) - unless date.respond_to?(:strftime) + unless date.respond_to?(:to_time) raise Errors::InvalidDateError, "Invalid Date: '#{input.inspect}' is not a valid datetime." end From 704910b297a833cb2e03c433d800d4eaf7e29c7a Mon Sep 17 00:00:00 2001 From: Nursen Date: Fri, 23 Dec 2016 14:08:54 -0800 Subject: [PATCH 025/207] Update windows.md Added an update to installation instructions, as a cert authority change in Ruby causes problems with the prior recommended version of Ruby. --- docs/_docs/windows.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/_docs/windows.md b/docs/_docs/windows.md index ab536382..0426a4de 100644 --- a/docs/_docs/windows.md +++ b/docs/_docs/windows.md @@ -20,6 +20,9 @@ For a more conventional way of installing Jekyll you can follow this [complete g [windows-installjekyll3]: https://labs.sverrirs.com/jekyll/ +\[Update 12/23/2016\]: Updates in the infrastructure of Ruby may cause SLL errors when attemptying to use gem install on a version of ruby older than 2.6. (The ruby package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update ruby using the directions [here.][ssl-certificate-update] +[ssl-certificate-update]: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages + ## Encoding If you use UTF-8 encoding, make sure that no `BOM` header From 467f0a13714e68153161366d4c5fcd27c868fd85 Mon Sep 17 00:00:00 2001 From: Nursen Date: Sat, 24 Dec 2016 01:22:55 -0800 Subject: [PATCH 026/207] Update windows.md revising terminology to avoid ambiguity and moving in relation to alternative install instructions. --- docs/_docs/windows.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_docs/windows.md b/docs/_docs/windows.md index 0426a4de..7d6db10c 100644 --- a/docs/_docs/windows.md +++ b/docs/_docs/windows.md @@ -16,13 +16,13 @@ A quick way to install Jekyll is to follow the [installation instructions by Dav 2. Install Ruby via Chocolatey: `choco install ruby -y` 3. Reopen a command prompt and install Jekyll: `gem install jekyll` +Updates in the infrastructure of Ruby may cause SLL errors when attempting to use `gem install` on a version of the RubyGems package older than 2.6. (The RubyGems package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update the RubyGems package using the directions [here.][ssl-certificate-update] +[ssl-certificate-update]: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages + For a more conventional way of installing Jekyll you can follow this [complete guide to install Jekyll 3 on Windows by Sverrir Sigmundarson][windows-installjekyll3]. [windows-installjekyll3]: https://labs.sverrirs.com/jekyll/ -\[Update 12/23/2016\]: Updates in the infrastructure of Ruby may cause SLL errors when attemptying to use gem install on a version of ruby older than 2.6. (The ruby package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update ruby using the directions [here.][ssl-certificate-update] -[ssl-certificate-update]: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages - ## Encoding If you use UTF-8 encoding, make sure that no `BOM` header From 80d3c7a20495b59dc1cd598065ba337ce6b274d9 Mon Sep 17 00:00:00 2001 From: Nursen Date: Sat, 24 Dec 2016 01:25:03 -0800 Subject: [PATCH 027/207] Update windows.md fixing typo --- docs/_docs/windows.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/windows.md b/docs/_docs/windows.md index 7d6db10c..514730eb 100644 --- a/docs/_docs/windows.md +++ b/docs/_docs/windows.md @@ -16,7 +16,7 @@ A quick way to install Jekyll is to follow the [installation instructions by Dav 2. Install Ruby via Chocolatey: `choco install ruby -y` 3. Reopen a command prompt and install Jekyll: `gem install jekyll` -Updates in the infrastructure of Ruby may cause SLL errors when attempting to use `gem install` on a version of the RubyGems package older than 2.6. (The RubyGems package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update the RubyGems package using the directions [here.][ssl-certificate-update] +Updates in the infrastructure of Ruby may cause SSL errors when attempting to use `gem install` on a version of the RubyGems package older than 2.6. (The RubyGems package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update the RubyGems package using the directions [here.][ssl-certificate-update] [ssl-certificate-update]: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages For a more conventional way of installing Jekyll you can follow this [complete guide to install Jekyll 3 on Windows by Sverrir Sigmundarson][windows-installjekyll3]. From d442c4fe137a217f838ce3fde7aabce398b2c245 Mon Sep 17 00:00:00 2001 From: Nursen Date: Sat, 24 Dec 2016 02:16:20 -0800 Subject: [PATCH 028/207] Update windows.md --- docs/_docs/windows.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/windows.md b/docs/_docs/windows.md index 514730eb..8d7bb8bc 100644 --- a/docs/_docs/windows.md +++ b/docs/_docs/windows.md @@ -16,7 +16,7 @@ A quick way to install Jekyll is to follow the [installation instructions by Dav 2. Install Ruby via Chocolatey: `choco install ruby -y` 3. Reopen a command prompt and install Jekyll: `gem install jekyll` -Updates in the infrastructure of Ruby may cause SSL errors when attempting to use `gem install` on a version of the RubyGems package older than 2.6. (The RubyGems package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update the RubyGems package using the directions [here.][ssl-certificate-update] +Updates in the infrastructure of Ruby may cause SSL errors when attempting to use `gem install` with versions of the RubyGems package older than 2.6. (The RubyGems package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update the RubyGems package using the directions [here.][ssl-certificate-update] [ssl-certificate-update]: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages For a more conventional way of installing Jekyll you can follow this [complete guide to install Jekyll 3 on Windows by Sverrir Sigmundarson][windows-installjekyll3]. From 317eae55802e637663bc880b72961a2aff68cd3e Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Sun, 25 Dec 2016 20:31:32 -0800 Subject: [PATCH 029/207] Improve quickstart docs See https://github.com/jekyll/jekyll/pull/5630 for more details on the update. @jekyll/documentation @DirtyF --- docs/_docs/quickstart.md | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index 969b5384..c2d0e79d 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -4,25 +4,37 @@ title: Quick-start guide permalink: /docs/quickstart/ --- -For the impatient, here's how to get a boilerplate Jekyll site up and running. +If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGems](https://rubygems.org/pages/download) installed (see Jekyll's [requirements](/docs/installation/#requirements/)), you can create a new Jekyll site by doing the following: ```sh +# Install Jekyll and Bundler gems through RubyGems ~ $ gem install jekyll bundler + +# Create a new Jekyll site at ./myblog ~ $ jekyll new myblog + +# Change into your new directory ~ $ cd myblog + +# Build the site on the preview server ~/myblog $ bundle exec jekyll serve -# => Now browse to http://localhost:4000 + +# Now browse to http://localhost:4000 ``` -The `jekyll new` command now automatically initiates `bundle install` and installs the dependencies required. To skip this, pass `--skip-bundle` option like so `jekyll new myblog --skip-bundle`. +`gem install jekyll bundler` installs the [jekyll](https://rubygems.org/gems/jekyll/) and [bundler](https://rubygems.org/gems/bundler) gems through [RubyGems](https://rubygems.org/). You need only to install the gems one time — not every time you create a new Jekyll project. Here are some additional details: -If you wish to install jekyll into an existing directory, you can do so by running `jekyll new .` from within the directory instead of creating a new one. If the existing directory isn't empty, you'll also have to pass the `--force` option like so `jekyll new . --force`. +* `bundler` is a gem that manages other Ruby gems. It makes sure your gems and gem versions are compatible, and that you have all necessary dependencies each gem requires. +* The `Gemfile` and `Gemfile.lock` files inform Bundler about the gem requirements in your theme. If your theme doesn't have these Gemfiles, you can omit `bundle exec` and just run `jekyll serve`. -That's nothing, though. The real magic happens when you start creating blog -posts, using the front matter to control templates and layouts, and taking -advantage of all the awesome configuration options Jekyll makes available. +* When you run `bundle exec jekyll serve`, Bundler uses the gems and versions as specified in `Gemfile.lock` to ensure your Jekyll site builds with no compatibility or dependency conflicts. -If you're running into problems, ensure you have all the [requirements -installed][Installation]. +`jekyll new ` installs a new Jekyll site at the path specified (relative to current directory). In this case, Jekyll will be installed in a directory called `myblog`. Here are some additional details: -[Installation]: /docs/installation/ +* To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. +* `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) +* By default, Jekyll installs a gem-based theme called [Minima](https://github.com/jekyll/minima). With gem-based themes, some of the theme directories and files are stored in the gem, hidden from view in your Jekyll project. To better understand themes, see [Themes](../themes). + +## Next steps + +Building the default theme is just the first step. The real magic happens when you start creating blog posts, using the front matter to control templates and layouts, and taking advantage of all the awesome configuration options Jekyll makes available. From 11b4ae05e51d9d47693aeb1020dcb92d07575a03 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Sun, 25 Dec 2016 20:33:09 -0800 Subject: [PATCH 030/207] Improve theme docs See https://github.com/jekyll/jekyll/pull/5630 for more details on the update. @jekyll/documentation @DirtyF --- docs/_docs/themes.md | 616 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 543 insertions(+), 73 deletions(-) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index c7d6d574..31fdd457 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -1,110 +1,580 @@ --- layout: docs -title: Themes -permalink: /docs/themes/ +title: Templates +permalink: /docs/templates/ --- -Jekyll has an extensive theme system, which allows you to leverage community-maintained templates and styles to customize your site's presentation. Jekyll themes package layouts, includes, and stylesheets in a way that can be overridden by your site's content. +Jekyll uses the [Liquid](https://shopify.github.io/liquid/) templating language to +process templates. All of the standard Liquid [tags](https://shopify.github.io/liquid/tags/) and +[filters](https://shopify.github.io/liquid/filters/) are +supported. Jekyll even adds a few handy filters and tags of its own to make +common tasks easier. -## Installing a theme +## Filters -1. To install a theme, first, add the theme to your site's `Gemfile`: +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionFilter and Output
+

Relative URL

+

Prepend the baseurl value to the input. Useful if your site is hosted at a subpath rather than the root of the domain.

+
+

+ {% raw %}{{ "/assets/style.css" | relative_url }}{% endraw %} +

+

+ /my-baseurl/assets/style.css +

+
+

Absolute URL

+

Prepend the url and baseurl value to the input.

+
+

+ {% raw %}{{ "/assets/style.css" | absolute_url }}{% endraw %} +

+

+ http://example.com/my-baseurl/assets/style.css +

+
+

Date to XML Schema

+

Convert a Date into XML Schema (ISO 8601) format.

+
+

+ {% raw %}{{ site.time | date_to_xmlschema }}{% endraw %} +

+

+ 2008-11-07T13:07:54-08:00 +

+
+

Date to RFC-822 Format

+

Convert a Date into the RFC-822 format used for RSS feeds.

+
+

+ {% raw %}{{ site.time | date_to_rfc822 }}{% endraw %} +

+

+ Mon, 07 Nov 2008 13:07:54 -0800 +

+
+

Date to String

+

Convert a date to short format.

+
+

+ {% raw %}{{ site.time | date_to_string }}{% endraw %} +

+

+ 07 Nov 2008 +

+
+

Date to Long String

+

Format a date to long format.

+
+

+ {% raw %}{{ site.time | date_to_long_string }}{% endraw %} +

+

+ 07 November 2008 +

+
+

Where

+

Select all the objects in an array where the key has the given value.

+
+

+ {% raw %}{{ site.members | where:"graduation_year","2014" }}{% endraw %} +

+
+

Where Expression

+

Select all the objects in an array where the expression is true. Jekyll v3.2.0 & later.

+
+

+ {% raw %}{{ site.members | where_exp:"item", +"item.graduation_year == 2014" }}{% endraw %} + {% raw %}{{ site.members | where_exp:"item", +"item.graduation_year < 2014" }}{% endraw %} + {% raw %}{{ site.members | where_exp:"item", +"item.projects contains 'foo'" }}{% endraw %} +

+
+

Group By

+

Group an array's items by a given property.

+
+

+ {% raw %}{{ site.members | group_by:"graduation_year" }}{% endraw %} +

+

+ [{"name"=>"2013", "items"=>[...]}, +{"name"=>"2014", "items"=>[...]}] +

+
+

Group By Expression

+

Group an array's items using a Liquid expression.

+
+

+ {% raw %}{{ site.members | group_by_exp:"item", +"item.graduation_year | truncate: 3, \"\"" }}{% endraw %} +

+

+ [{"name"=>"201...", "items"=>[...]}, +{"name"=>"200...", "items"=>[...]}] +

+
+

XML Escape

+

Escape some text for use in XML.

+
+

+ {% raw %}{{ page.content | xml_escape }}{% endraw %} +

+
+

CGI Escape

+

+ CGI escape a string for use in a URL. Replaces any special characters + with appropriate %XX replacements. +

+
+

+ {% raw %}{{ "foo,bar;baz?" | cgi_escape }}{% endraw %} +

+

+ foo%2Cbar%3Bbaz%3F +

+
+

URI Escape

+

+ URI escape a string. +

+
+

+ {% raw %}{{ "foo, bar \baz?" | uri_escape }}{% endraw %} +

+

+ foo,%20bar%20%5Cbaz? +

+
+

Number of Words

+

Count the number of words in some text.

+
+

+ {% raw %}{{ page.content | number_of_words }}{% endraw %} +

+

+ 1337 +

+
+

Array to Sentence

+

Convert an array into a sentence. Useful for listing tags. Optional argument for connector.

+
+

+ {% raw %}{{ page.tags | array_to_sentence_string }}{% endraw %} +

+

+ foo, bar, and baz +

+

+ {% raw %}{{ page.tags | array_to_sentence_string: 'or' }}{% endraw %} +

+

+ foo, bar, or baz +

+
+

Markdownify

+

Convert a Markdown-formatted string into HTML.

+
+

+ {% raw %}{{ page.excerpt | markdownify }}{% endraw %} +

+
+

Smartify

+

Convert "quotes" into “smart quotes.”

+
+

+ {% raw %}{{ page.title | smartify }}{% endraw %} +

+
+

Converting Sass/SCSS

+

Convert a Sass- or SCSS-formatted string into CSS.

+
+

+ {% raw %}{{ some_scss | scssify }}{% endraw %} + {% raw %}{{ some_sass | sassify }}{% endraw %} +

+
+

Slugify

+

Convert a string into a lowercase URL "slug". See below for options.

+
+

+ {% raw %}{{ "The _config.yml file" | slugify }}{% endraw %} +

+

+ the-config-yml-file +

+

+ {% raw %}{{ "The _config.yml file" | slugify: 'pretty' }}{% endraw %} +

+

+ the-_config.yml-file +

+
+

Data To JSON

+

Convert Hash or Array to JSON.

+
+

+ {% raw %}{{ site.data.projects | jsonify }}{% endraw %} +

+
+

Normalize Whitespace

+

Replace any occurrence of whitespace with a single space.

+
+

+ {% raw %}{{ "a \n b" | normalize_whitespace }}{% endraw %} +

+
+

Sort

+

Sort an array. Optional arguments for hashes: 1. property name 2. nils order (first or last).

+
+

+ {% raw %}{{ page.tags | sort }}{% endraw %} +

+

+ {% raw %}{{ site.posts | sort: 'author' }}{% endraw %} +

+

+ {% raw %}{{ site.pages | sort: 'title', 'last' }}{% endraw %} +

+
+

Sample

+

Pick a random value from an array. Optional: pick multiple values.

+
+

+ {% raw %}{{ site.pages | sample }}{% endraw %} +

+

+ {% raw %}{{ site.pages | sample:2 }}{% endraw %} +

+
+

To Integer

+

Convert a string or boolean to integer.

+
+

+ {% raw %}{{ some_var | to_integer }}{% endraw %} +

+
+

Array Filters

+

Push, pop, shift, and unshift elements from an Array.

+

These are NON-DESTRUCTIVE, i.e. they do not mutate the array, but rather make a copy and mutate that.

+
+

+ {% raw %}{{ page.tags | push: 'Spokane' }}{% endraw %} +

+

+ ['Seattle', 'Tacoma', 'Spokane'] +

+

+ {% raw %}{{ page.tags | pop }}{% endraw %} +

+

+ ['Seattle'] +

+

+ {% raw %}{{ page.tags | shift }}{% endraw %} +

+

+ ['Tacoma'] +

+

+ {% raw %}{{ page.tags | unshift: "Olympia" }}{% endraw %} +

+

+ ['Olympia', 'Seattle', 'Tacoma'] +

+
+

Inspect

+

Convert an object into its String representation for debugging.

+
+

+ {% raw %}{{ some_var | inspect }}{% endraw %} +

+
+
- gem 'my-awesome-jekyll-theme' +### Options for the `slugify` filter -2. Save the changes to your `Gemfile` -3. Run the command `bundle install` to install the theme -4. Finally, activate the theme by adding the following to your site's `_config.yml`: +The `slugify` filter accepts an option, each specifying what to filter. +The default is `default`. They are as follows (with what they filter): - theme: my-awesome-jekyll-theme +- `none`: no characters +- `raw`: spaces +- `default`: spaces and non-alphanumeric characters +- `pretty`: spaces and non-alphanumeric characters except for `._~!$&'()+,;=@` -You can have multiple themes listed in your site's Gemfile, but only one theme can be selected in your site's `_config.yml`. -{: .note .info } +## Tags -## Overriding theme defaults +### Includes -Jekyll themes set default layouts, includes, and stylesheets, that can be overridden by your site's content. For example, if your selected theme has a `page` layout, you can override the theme's layout by creating your own `page` layout in the `_layouts` folder (e.g., `_layouts/page.html`). +If you have small page fragments that you want to include in multiple places on your site, you can use the `include` tag: -Jekyll will look first to your site's content, before looking to the theme's defaults, for any requested file in the following folders: - -* `/assets` -* `/_layouts` -* `/_includes` -* `/_sass` - -Refer to your selected theme's documentation and source repository for more information on what files you can override. -{: .note .info} - -To locate theme's files on your computer, run `bundle show` followed by -the name of the theme's gem, e.g. `bundle show minima` for default Jekyll's -theme. Then copy the files you want to override, from the returned path to your root folder. - -## Creating a theme - -Jekyll themes are distributed as Ruby gems. Don't worry, Jekyll will help you scaffold a new theme with the `new-theme` command. Just run `jekyll new-theme` with the theme name as an argument: - -```sh -jekyll new-theme my-awesome-theme - create /path/to/my-awesome-theme/_layouts - create /path/to/my-awesome-theme/_includes - create /path/to/my-awesome-theme/_sass - create /path/to/my-awesome-theme/_layouts/page.html - create /path/to/my-awesome-theme/_layouts/post.html - create /path/to/my-awesome-theme/_layouts/default.html - create /path/to/my-awesome-theme/Gemfile - create /path/to/my-awesome-theme/my-awesome-theme.gemspec - create /path/to/my-awesome-theme/README.md - create /path/to/my-awesome-theme/LICENSE.txt - initialize /path/to/my-awesome-theme/.git - create /path/to/my-awesome-theme/.gitignore -Your new Jekyll theme, my-awesome-theme, is ready for you in /path/to/my-awesome-theme! -For help getting started, read /path/to/my-awesome-theme/README.md. +```liquid +{% raw %}{% include footer.html %}{% endraw %} ``` -Add your template files in the corresponding folders, complete the `.gemspec` and the README files according to your needs. +Jekyll expects all include files to be placed in an `_includes` directory at the root of your source directory. In the above example, this will embed the contents of `_includes/footer.html` into the calling file. -### Layouts and includes +For more advanced information on using includes, see [Includes](../includes). -Theme layouts and includes work just like they work in any Jekyll site. Place layouts in your theme's `/_layouts` folder, and place includes in your themes `/_includes` folder. +### Code snippet highlighting -For example, if your theme has a `/_layouts/page.html` file, and a page has `layout: page` in its YAML front matter, Jekyll will first look to the site's `_layouts` folder for a the `page` layout, and if none exists, will use your theme's `page` layout. +Jekyll has built in support for syntax highlighting of over 60 languages +thanks to [Rouge](http://rouge.jneen.net). Rouge is the default highlighter +in Jekyll 3 and above. To use it in Jekyll 2, set `highlighter` to `rouge` +and ensure the `rouge` gem is installed properly. -### Assets +Alternatively, you can use [Pygments](http://pygments.org) to highlight +your code snippets. To use Pygments, you must have Python installed on your +system, have the `pygments.rb` gem installed and set `highlighter` to +`pygments` in your site's configuration file. Pygments supports [over 100 +languages](http://pygments.org/languages/) -Any file in `/assets` will be copied over to the user's site upon build unless they have a file with the same relative path. You may ship any kind of asset here: SCSS, an image, a webfont, etc. These files behave just like pages and static files in Jekyll: if the file has [YAML front matter]({{ site.baseurl }}/docs/frontmatter/) at the top, then it will be rendered. If it does not have YAML front matter, it will simply be copied over into the resulting site. This allows theme creators to ship a default `/assets/styles.scss` file which their layouts can depend on as `/assets/styles.css`. +To render a code block with syntax highlighting, surround your code as follows: -All files in `/assets` will be output into the compiled site in the `/assets` folder just as you'd expect from using Jekyll on your sites. +```liquid +{% raw %} +{% highlight ruby %} +def foo + puts 'foo' +end +{% endhighlight %} +{% endraw %} +``` -### Stylesheets +The argument to the `highlight` tag (`ruby` in the example above) is the +language identifier. To find the appropriate identifier to use for the language +you want to highlight, look for the “short name” on the [Rouge +wiki](https://github.com/jayferd/rouge/wiki/List-of-supported-languages-and-lexers) +or the [Pygments' Lexers page](http://pygments.org/docs/lexers/). -Your theme's stylesheets should be placed in your theme's `/_sass` folder, again, just as you would when authoring a Jekyll site. Your theme's styles can be included in the user's stylesheet using the `@import` directive. +#### Line numbers -### Documenting your theme +There is a second argument to `highlight` called `linenos` that is optional. +Including the `linenos` argument will force the highlighted code to include line +numbers. For instance, the following code block would include line numbers next +to each line: -Your theme should include a `/README.md` file, which explains how site authors can install and use your theme. What layouts are included? What includes? Do they need to add anything special to their site's configuration file? +```liquid +{% raw %} +{% highlight ruby linenos %} +def foo + puts 'foo' +end +{% endhighlight %} +{% endraw %} +``` -### Adding a screenshot +#### Stylesheets for syntax highlighting -Themes are visual. Show users what your theme looks like by including a screenshot as `/screenshot.png` within your theme's repository where it can be retrieved programatically. You can also include this screenshot within your theme's documentation. +In order for the highlighting to show up, you’ll need to include a highlighting +stylesheet. For an example stylesheet you can look at +[syntax.css](https://github.com/mojombo/tpw/tree/master/css/syntax.css). These +are the same styles as used by GitHub and you are free to use them for your own +site. If you use `linenos`, you might want to include an additional CSS class +definition for the `.lineno` class in `syntax.css` to distinguish the line +numbers from the highlighted code. -### Previewing your theme +### Gist -To preview your theme as you're authoring it, it may be helpful to add dummy content in, for example, `/index.html` and `/page.html` files. This will allow you to use the `jekyll build` and `jekyll serve` commands to preview your theme, just as you'd preview a Jekyll site. +Use the `gist` tag to easily embed a GitHub Gist onto your site. This works +with public or secret gists: -If you do preview your theme locally, be sure to add `/_site` to your theme's `.gitignore` file to prevent the compiled site from also being included when you distribute your theme. -{: .info .note} +```liquid +{% raw %} +{% gist parkr/931c1c8d465a04042403 %} +{% endraw %} +``` -### Publishing your theme +You may also optionally specify the filename in the gist to display: -Themes are published via [RubyGems.org](https://rubygems.org). You'll need a RubyGems account, which you can [create for free](https://rubygems.org/sign_up). +```liquid +{% raw %} +{% gist parkr/931c1c8d465a04042403 jekyll-private-gist.markdown %} +{% endraw %} +``` -1. First, package your theme, by running the following command, replacing `my-awesome-jekyll-theme` with the name of your theme: +To use the `gist` tag, you'll need to add the +[jekyll-gist](https://github.com/jekyll/jekyll-gist) gem to your project. - gem build my-awesome-jekyll-theme.gemspec +## Links -2. Next, push your packaged theme up to the RubyGems service, by running the following command, again replacing `my-awesome-jekyll-theme` with the name of your theme: +### Linking to pages {#link} - gem push my-awesome-jekyll-theme-*.gem +To link to a post, a page, collection item, or file, the `link` tag will generate the correct permalink URL for the path you specify. For example, if you use the `link` tag to link to `mypage.html`, even if you change your permalink style to include the file extension or omit it, the URL formed by the `link` tag will always be valid. -3. To release a new version of your theme, simply update the version number in the gemspec file, ( `my-awesome-jekyll-theme.gemspec` in this example ), and then repeat Steps 1 & 2 above. -We recommend that you follow [Semantic Versioning](http://semver.org/) while bumping your theme-version. +You must include the file's original extension when using the `link` tag. Here are some examples: + +```liquid +{% raw %} +{{ site.baseurl }}{% link _collection/name-of-document.md %} +{{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %} +{{ site.baseurl }}{% link news/index.html %} +{{ site.baseurl }}{% link /assets/files/doc.pdf %} +{% endraw %} +``` + +You can also use the `link` tag to create a link in Markdown as follows: + +```liquid +{% raw %} +[Link to a document]({{ site.baseurl }}{% link _collection/name-of-document.md %}) +[Link to a post]({{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %}) +[Link to a page]({{ site.baseurl }}{% link news/index.html %}) +[Link to a file]({{ site.baseurl }}{% link /assets/files/doc.pdf %}) +{% endraw %} +``` + +Including `{% raw %}{{site.baseurl}}{% endraw %}` is optional — it depends on whether you want the link to be absolute or root-relative. + +The path to the post, page, or collection is defined as the path relative to the root directory (where your config file is) to the file, not the path from your existing page to the other page. + +For example, suppose you're creating a link `page_a.md` (stored in `pages/folder1/folder2`) to `page_b.md` (stored in `pages/folder1`). Your path in the link would not be `../page_b.html`. Instead, it would be `/pages/folder1/page_b.md`. + +If you're unsure of the path, add `{% raw %}{{page.path}}{% endraw %}` to the page and it will display the path. + +One major benefit of using the `link` tag is link validation. If the link doesn't exist, Jekyll won't build your site. This is a good thing, as it will alert you to a broken link so you can fix it (rather than allowing you to build and deploy a site with broken links). + +Note you cannot add filters to `link` tags. For example, you cannot append a string using Liquid filters, such as `{% raw %}{% link mypage.html | append: "#section1" %} {% endraw %}`. To link to sections on a page, you will need to use regular HTML or Markdown linking techniques. + +### Linking to posts + +If you want like to include a link to a post on your site, the `post_url` tag will generate the correct permalink URL for the post you specify. + +```liquid +{% raw %} +{{ site.baseurl }}{% post_url 2010-07-21-name-of-post %} +{% endraw %} +``` + +If you organize your posts in subdirectories, you need to include subdirectory path to the post: + +```liquid +{% raw %} +{{ site.baseurl }}{% post_url /subdir/2010-07-21-name-of-post %} +{% endraw %} +``` + +There is no need to include the file extension when using the `post_url` tag. + +You can also use this tag to create a link to a post in Markdown as follows: + +```liquid +{% raw %} +[Name of Link]({{ site.baseurl }}{% post_url 2010-07-21-name-of-post %}) +{% endraw %} +``` From f5eb869e58dba5e25fbcab52584a8f45b08b7b4d Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Sun, 25 Dec 2016 20:34:20 -0800 Subject: [PATCH 031/207] Improve collections docs See https://github.com/jekyll/jekyll/pull/5630 for more details on the update. @jekyll/documentation @DirtyF --- docs/_docs/collections.md | 128 +++++++++++++++++++++++++++++++------- 1 file changed, 106 insertions(+), 22 deletions(-) diff --git a/docs/_docs/collections.md b/docs/_docs/collections.md index 22a86e60..06f8fd75 100644 --- a/docs/_docs/collections.md +++ b/docs/_docs/collections.md @@ -7,12 +7,18 @@ permalink: /docs/collections/ Not everything is a post or a page. Maybe you want to document the various methods in your open source project, members of a team, or talks at a conference. Collections allow you to define a new type of document that behave -like Pages or Posts do normally, but also have their own unique properties and +like Pages or Posts do normally but which also have their own unique properties and namespace. ## Using Collections -### Step 1: Tell Jekyll to read in your collection +To start using collections, follow these 3 steps: + +* [Step 1: Tell Jekyll to read in your collection](#step1) +* [Step 2: Add your content](#step2) +* [Step 3: Optionally render your collection's documents into independent files](#step3) + +### Step 1: Tell Jekyll to read in your collection {#step1} Add the following to your site's `_config.yml` file, replacing `my_collection` with the name of your collection: @@ -41,11 +47,11 @@ defaults: layout: page ``` -### Step 2: Add your content +### Step 2: Add your content {#step2} -Create a corresponding folder (e.g. `/_my_collection`) and add +Create a corresponding folder (for example, `/_my_collection`) and add documents. YAML Front Matter is read in as data if it exists, and everything -after it is stuck in the Document's `content` attribute. If no YAML Front +after it is available in the document's `content` attribute. If no YAML Front Matter is provided, Jekyll will not generate the file in your collection.
@@ -56,7 +62,7 @@ your _config.yml file, with the addition of the preceding _
-### Step 3: Optionally render your collection's documents into independent files +### Step 3: Optionally render your collection's documents into independent files {#step3} If you'd like Jekyll to create a public-facing, rendered version of each document in your collection, set the `output` key to `true` in your collection @@ -73,19 +79,6 @@ For example, if you have `_my_collection/some_subdir/some_doc.md`, it will be rendered using Liquid and the Markdown converter of your choice and written out to `/my_collection/some_subdir/some_doc.html`. -As for posts with [Permalinks](../permalinks/), the document -URL can be customized by setting `permalink` metadata for the collection: - -```yaml -collections: - my_collection: - output: true - permalink: /awesome/:path/ -``` - -For example, if you have `_my_collection/some_subdir/some_doc.md`, it will be -written out to `/awesome/some_subdir/some_doc/index.html`. -
Don't forget to add YAML for processing

@@ -95,6 +88,21 @@ written out to `/awesome/some_subdir/some_doc/index.html`.

+## Configuring permalinks for collections {#permalinks} + +You can customize the [Permalinks](../permalinks/) for your collection's documents by setting `permalink` property in the collection's configuration as follows: + +```yaml +collections: + my_collection: + output: true + permalink: /awesome/:path/:title.output_ext +``` + +In this example, the collection documents will the have the URL of `awesome` followed by the path to the document and its file extension. + +Collections have the following template variables available for permalinks: +
@@ -149,14 +157,90 @@ written out to `/awesome/some_subdir/some_doc/index.html`.
+## Permalink examples for collections + +Depending on how you declare the permalinks in your configuration file, the permalinks and paths get written differently in the `_site` folder. A few examples will help clarify the options. + +Let's say your collection is called `apidocs` with `doc1.md` in your collection. `doc1.md` is grouped inside a folder called `mydocs`. Your project's source directory for the collection looks this: + +``` +├── \_apidocs +│   └── mydocs +│   └── doc1.md +``` + +Based on this scenario, here are a few permalink options. + +**Permalink configuration 1**: [Nothing configured]
+**Output**: + +``` +├── apidocs +│   └── mydocs +│   └── doc1.html +``` + +**Permalink configuration 2**: `/:collection/:path/:title:output_ext`
+**Output**: + +``` +├── apidocs +│   └── mydocs +│   └── doc1.html +``` + +**Permalink configuration 3**: No collection permalinks configured, but `pretty` configured for pages/posts.
+**Output**: + +``` +├── apidocs +│   └── mydocs +│   └── doc1 +│   └── index.html +``` + +**Permalink configuration 4**: `/awesome/:path/:title.html`
+**Output**: + +``` +├── awesome +│   └── mydocs +│   └── doc1.html +``` + +**Permalink configuration 5**: `/awesome/:path/:title/`
+**Output**: + +``` +├── awesome +│   └── mydocs +│   └── doc1 +│   └── index.html +``` + +**Permalink configuration 6**: `/awesome/:title.html`
+**Output**: + +``` +├── awesome +│   └── doc1.html +``` + +**Permalink configuration 7**: `:title.html` +**Output**: + +``` +├── doc1.html +``` + ## Liquid Attributes ### Collections -Each collection is accessible via the `site` Liquid variable. For example, if +Each collection is accessible through the `site` variable. For example, if you want to access the `albums` collection found in `_albums`, you'd use `site.albums`. Each collection is itself an array of documents -(e.g. `site.albums` is an array of documents, much like `site.pages` and +(for example, `site.albums` is an array of documents, much like `site.pages` and `site.posts`). See below for how to access attributes of those documents. The collections are also available under `site.collections`, with the metadata @@ -335,7 +419,7 @@ file, each document has the following attributes: Attributes from the YAML front matter can be accessed as data anywhere in the site. Using the above example for configuring a collection as `site.albums`, -one might have front matter in an individual file structured as follows (which +you might have front matter in an individual file structured as follows (which must use a supported markup format, and cannot be saved with a `.yaml` extension): From 91cd32ca493e26bb2c32959ac239a22790153860 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Sun, 25 Dec 2016 20:35:31 -0800 Subject: [PATCH 032/207] Improve pages docs See https://github.com/jekyll/jekyll/pull/5630 for more details on the update. @jekyll/documentation @DirtyF --- docs/_docs/pages.md | 59 +++++++++++++-------------------------------- 1 file changed, 17 insertions(+), 42 deletions(-) diff --git a/docs/_docs/pages.md b/docs/_docs/pages.md index 15e8f830..258fd6a2 100644 --- a/docs/_docs/pages.md +++ b/docs/_docs/pages.md @@ -4,9 +4,7 @@ title: Creating pages permalink: /docs/pages/ --- -In addition to [writing posts](../posts/), another thing you may want to do -with your Jekyll site is create static pages. By taking advantage of the way -Jekyll copies files and directories, this is easy to do. +In addition to [writing posts](../posts/), you might also want to add static pages (content that isn't date-based) to your Jekyll site. By taking advantage of the way Jekyll copies files and directories, this is easy to do. ## Homepage @@ -28,16 +26,14 @@ homepage of your Jekyll-generated site. ## Where additional pages live Where you put HTML or [Markdown](https://daringfireball.net/projects/markdown/) -files for pages depends on how you want the pages to work. -There are two main ways of creating pages: +files for pages depends on how you want the pages to work. There are two main ways of creating pages: - Place named HTML or [Markdown](https://daringfireball.net/projects/markdown/) files for each page in your site's root folder. -- Create a folder in the site's root for each page, and place an index.html -or index.md file in each page folder. +- Place pages inside folders and subfolders named whatever you want. Both methods work fine (and can be used in conjunction with each other), -with the only real difference being the resulting URLs. +with the only real difference being the resulting URLs. By default, pages retain the same folder structure in `_site` as they do in the source directory. ### Named HTML files @@ -59,42 +55,21 @@ and associated URLs might look like: └── contact.html # => http://example.com/contact.html ``` -### Named folders containing index HTML files +If you have a lot of pages, you can organize those pages into subfolders. The same subfolders that are used to group your pages in our project's source will exist in the `_site` folder when your site builds. -There is nothing wrong with the above method. However, some people like to keep -their URLs free from things like filename extensions. To achieve clean URLs for -pages using Jekyll, you simply need to create a folder for each top-level page -you want, and then place an `index.html` file in each page’s folder. This way -the page URL ends up being the folder name, and the web server will serve up -the respective `index.html` file. Here's an example of what this structure -might look like: +## Flattening pages from subfolders into the root directory -```sh -. -├── _config.yml -├── _includes/ -├── _layouts/ -├── _posts/ -├── _site/ -├── about/ -| └── index.html # => http://example.com/about/ -├── contact/ -| └── index.html # => http://example.com/contact/ -|── other/ -| └── index.md # => http://example.com/other/ -└── index.html # => http://example.com/ +If you have pages organized into subfolders in your source folder and want to flatten them in the root folder on build, you must add the [permalink]({% link _docs/permalinks.md %}) property directly in your page's front matter like this: + +``` +--- +title: My page +permalink: mypageurl.html +--- ``` -This approach may not suit everyone, but for people who like clean URLs it’s -simple and it works. In the end, the decision is yours! +### Named folders containing index HTML files -
-
ProTip™: Use permalink Front Matter Variable
-

- Clean URLs can also be achieved using the permalink front - matter variable. In the example above, using the first method, you can - get URL http://example.com/other for the file - other.md by setting this at the top of the file: - permalink: /other -

-
+If you don't want file extensions (`.html`) to appear in your page URLs (file extensions are the default), you can choose a [permalink style](../permalinks/#builtinpermalinkstyles) that has a trailing slash instead of a file extension. + +Note if you want to view your site offline *without the Jekyll preview server*, your browser will need the file extension to display the page, and all assets will need to be relative links that function without the server baseurl. From 93cd0cdb503694670db5f9c7e25e54ca7a3b0722 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Sun, 25 Dec 2016 20:36:25 -0800 Subject: [PATCH 033/207] Improve permalinks docs See https://github.com/jekyll/jekyll/pull/5630 for more details on the update. @jekyll/documentation @DirtyF --- docs/_docs/permalinks.md | 190 +++++++++++++++++++++++++-------------- 1 file changed, 122 insertions(+), 68 deletions(-) diff --git a/docs/_docs/permalinks.md b/docs/_docs/permalinks.md index 31eeb30b..d41d6162 100644 --- a/docs/_docs/permalinks.md +++ b/docs/_docs/permalinks.md @@ -4,27 +4,62 @@ title: Permalinks permalink: /docs/permalinks/ --- -Jekyll supports a flexible way to build your site’s URLs. You can specify the -permalinks for your site through the [Configuration](../configuration/) or in -the [YAML Front Matter](../frontmatter/) for each post. You’re free to choose -one of the built-in styles to create your links or craft your own. The default -style is `date`. +Jekyll supports a flexible way to build the permalinks for your pages, posts, and collections. A permalink is the URL for the page, post, or collection (excluding the domain name or directory folder). -Permalinks are constructed by creating a template URL where dynamic elements -are represented by colon-prefixed keywords. For example, the default `date` -permalink is defined according to the format `/:categories/:year/:month/:day/:title.html`. +You construct permalinks by creating a template URL where dynamic elements are represented by colon-prefixed keywords. The default template permalink is `/:categories/:year/:month/:day/:title.html`. Each of the colon-prefixed keywords is a template variable. +You’re free to construct your own permalink style using the available template variables or choose one of the built-in permalink styles (such as `date`) that automatically use a template-variable pattern. + +## Where to configure permalinks + +You can configure your site's permalinks through the [Configuration]({% link _docs/configuration.md %}) file or in the [Front Matter]({% link _docs/frontmatter.md %}) for each post, page, or collection. + +Setting permalink styles in your configuration file applies the setting globally in your project. You configure permalinks in your `_config.yml` file like this: + +```yaml +permalink: /:categories/:year/:month/:day/:title.html +``` + +If you don't specify any permalink setting, Jekyll uses the above pattern as the default. + +The permalink can also be set using a built-in permalink style: + +```yaml +permalink: date +``` + +`date` is the same as `:categories/:year/:month/:day/:title.html`, the default. See [Built-in Permalink Styles](#builtinpermalinkstyles) below for more options. + +Setting the permalink in your post, page, or collection's front matter overrides any global settings. Here's an example: + +```yaml +--- +title: My page title +permalink: /mypageurl/ +--- +``` + +Even if your configuration file specifies the `date` style, the URL for this page would be `http://somedomain.com/mypageurl/`. + +{% comment %}this note needs clarification
-
Specifying permalinks through the YAML Front Matter
-

- Built-in permalink styles are not recognized in YAML Front Matter. So - permalink: pretty will not work, but the equivalent - /:categories/:year/:month/:day/:title/ - using template variables will. -

+
Specifying permalinks through the YAML Front Matter
+

Built-in permalink styles are not recognized in YAML Front Matter. As a result, permalink: pretty will not work, but the equivalent /:categories/:year/:month/:day/:title/ using template variables will.

+{% endcomment %} -## Template variables +When you use permalinks that omit the `.html` file extension (called "clean URLs") Jekyll builds the file as index.html placed inside a folder with the page's name. For example: + +``` +├── mypageurl +│   └── index.html +``` + +Servers automatically load the index.html file inside of any folder, so users can simply navigate to `http://somedomain.com/mypageurl` to get to `mypageurl/index.html`. + +## Template variables for permalinks {#template-variables} + +The following table lists the template variables available for permalinks. You can use these variables in the `permalink` property in your config file.
@@ -40,7 +75,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

year

@@ -48,7 +83,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

month

@@ -56,7 +91,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

i_month

@@ -64,7 +99,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

day

@@ -72,7 +107,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

i_day

@@ -80,7 +115,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

short_year

@@ -89,7 +124,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti @@ -99,7 +134,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti @@ -109,7 +144,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti @@ -130,8 +165,8 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti @@ -142,7 +177,7 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti
-

Year from the Post’s filename

+

Year from the post's filename

-

Month from the Post’s filename

+

Month from the post's filename

-

Month from the Post’s filename without leading zeros.

+

Month from the post's filename without leading zeros.

-

Day from the Post’s filename

+

Day from the post's filename

-

Day from the Post’s filename without leading zeros.

+

Day from the post's filename without leading zeros.

-

Year from the Post’s filename without the century.

+

Year from the post's filename without the century.

- Hour of the day, 24-hour clock, zero-padded from the post’s date front matter. (00..23) + Hour of the day, 24-hour clock, zero-padded from the post's date front matter. (00..23)

- Minute of the hour from the post’s date front matter. (00..59) + Minute of the hour from the post's date front matter. (00..59)

- Second of the minute from the post’s date front matter. (00..59) + Second of the minute from the post's date front matter. (00..59)

- Slugified title from the document’s filename ( any character - except numbers and letters is replaced as hyphen ). May be + Slugified title from the document’s filename (any character + except numbers and letters is replaced as hyphen). May be overridden via the document’s slug YAML front matter.

- The specified categories for this Post. If a post has multiple + The specified categories for this post. If a post has multiple categories, Jekyll will create a hierarchy (e.g. /category1/category2). Also Jekyll automatically parses out double slashes in the URLs, so if no categories are present, it will ignore this. @@ -153,10 +188,11 @@ permalink is defined according to the format `/:categories/:year/:month/:day/:ti

-## Built-in permalink styles +Note that all template variables relating to time or categories are available to posts only. -While you can specify a custom permalink style using [template variables](#template-variables), -Jekyll also provides the following built-in styles for convenience. +## Built-in permalink styles {#builtinpermalinkstyles} + +Although you can specify a custom permalink pattern using [template variables](#template-variables), Jekyll also provides the following built-in styles for convenience.
@@ -203,26 +239,11 @@ Jekyll also provides the following built-in styles for convenience.
-## Pages and collections +Rather than typing `permalink: /:categories/:year/:month/:day/:title/`, you can just type `permalink: date`. -The `permalink` configuration setting specifies the permalink style used for -posts. Pages and collections each have their own default permalink style; the -default style for pages is `/:path/:basename` and the default for collections is -`/:collection/:path`. +## Permalink style examples with posts {#permalink-style-examples} -These styles are modified to match the suffix style specified in the post -permalink setting. For example, a permalink style of `pretty`, which contains a -trailing slash, will update page permalinks to also contain a trailing slash: -`/:path/:basename/`. A permalink style of `date`, which contains a trailing -file extension, will update page permalinks to also contain a file extension: -`/:path/:basename:output_ext`. The same is true for any custom permalink style. - -The permalink for an individual page or collection document can always be -overridden in the [YAML Front Matter](../frontmatter/) for the page or document. -Additionally, permalinks for a given collection can be customized [in the -collections configuration](../collections/). - -## Permalink style examples +Here are a few examples to clarify how permalink styles get applied with posts. Given a post named: `/2009-04-29-slap-chop.md` @@ -280,24 +301,58 @@ Given a post named: `/2009-04-29-slap-chop.md`
-## Extensionless permalinks +## Permalink settings for pages and collections {#pages-and-collections} -Jekyll supports permalinks that contain neither a trailing slash nor a file -extension, but this requires additional support from the web server to properly -serve. When using extensionless permalinks, output files written to disk will -still have the proper file extension (typically `.html`), so the web server -must be able to map requests without file extensions to these files. +The permalink setting in your configuration file specifies the permalink style used for posts, pages, and collections. However, because pages and collections don't have time or categories, these aspects of the permalink style are ignored with pages and collections. -Both [GitHub Pages](../github-pages/) and the Jekyll's built-in WEBrick server -handle these requests properly without any additional work. +For example: + +* A permalink style of `/:categories/:year/:month/:day/:title.html` for posts becomes `/:title.html` for pages and collections. +* A permalink style of `pretty` (or `/:categories/:year/:month/:day/:title/`), which omits the file extension and contains a trailing slash, will update page and collection permalinks to also omit the file extension and contain a trailing slash: `/:title/`. +* A permalink style of `date`, which contains a trailing file extension, will update page permalinks to also contain a trailing file extension: `/:title.html`. But no time or category information will be included. + +## Permalinks and default paths + +The path to the post or page in the built site differs for posts, pages, and collections: + +### Posts + +No matter how many subfolders you organize your posts into inside the `_posts` folder, all posts are pulled out of those subfolders and flattened into the `_site`'s root directory upon build. + +If you use a permalink style that omits the `.html` file extension, each post is rendered as an `index.html` file inside a folder with the post's name (for example, `categoryname/2016/12/01/mypostname/index.html`). + +### Pages + +Unlike posts, pages are *not* removed from their subfolder directories when you build your site. Pages remain in the same folder structure in which you organized your pages in the source directory, except that the structure is now mirrored in `_site`. (The only exception is if your page has a `permalink` declared its front matter — in that case, the structure honors the permalink setting instead of the source folder structure.) + +As with posts, if you use a permalink style that omits the `.html` file extension, each page is rendered as an `index.html` file inserted inside a folder with the page's name (for example, `mypage/index.html`). + +### Collections + +By default, collections follow a similar structure in the `_site` folder as pages, except that the path is prefaced by the collection name. For example: `collectionname/mypage.html`. For permalink settings that omit the file extension, the path would be `collection_name/mypage/index.html`. + +Collections have their own way of setting permalinks. Additionally, collections have unique template variables available available (such as `path` and `output_ext`). See the [Configuring permalinks for collections]( ../collections#permalinks ) in Collections for more information. + +## Flattening pages in \_site on build + +If you want to flatten your pages (pull them out of subfolders) in the `_site` directory when your site builds (similar to posts), add the permalink property of each page's front matter: + +``` +--- +title: My page +permalink: mypageurl.html +--- +``` + +## Extensionless permalinks with no trailing slashes {#extensionless-permalinks} + +Jekyll supports permalinks that contain neither a trailing slash nor a file extension, but this requires additional support from the web server to properly serve. When using extensionless permalinks, output files written to disk will still have the proper file extension (typically `.html`), so the web server must be able to map requests without file extensions to these files. + +Both [GitHub Pages](../github-pages/) and the Jekyll's built-in WEBrick server handle these requests properly without any additional work. ### Apache -The Apache web server has very extensive support for content negotiation and can -handle extensionless URLs by setting the [multiviews][] option in your -`httpd.conf` or `.htaccess` file: - -[multiviews]: https://httpd.apache.org/docs/current/content-negotiation.html#multiviews +The Apache web server has extensive support for content negotiation and can handle extensionless URLs by setting the [multiviews](https://httpd.apache.org/docs/current/content-negotiation.html#multiviews) option in your `httpd.conf` or `.htaccess` file: {% highlight apache %} Options +MultiViews @@ -305,13 +360,12 @@ Options +MultiViews ### Nginx -The [try_files][] directive allows you to specify a list of files to search for -to process a request. The following configuration will instruct nginx to search -for a file with an `.html` extension if an exact match for the requested URI is -not found. - -[try_files]: http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files +The [try_files](http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files) directive allows you to specify a list of files to search for to process a request. The following configuration will instruct nginx to search for a file with an `.html` extension if an exact match for the requested URI is not found. {% highlight nginx %} try_files $uri $uri.html $uri/ =404; {% endhighlight %} + +## Linking without regard to permalink styles + +You can create links in your topics to other posts, pages, or collection items in a way that is valid no matter what permalink configuration you choose. By using the `link` tag, if you change your permalinks, your links won't break. See [Linking to pages](../templates#link) for more details. From 9e1c61381894d320729d5a651021b91f9a2d34a3 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Sun, 25 Dec 2016 20:37:24 -0800 Subject: [PATCH 034/207] Improve template docs See https://github.com/jekyll/jekyll/pull/5630 for more details on the update. @jekyll/documentation @DirtyF --- docs/_docs/templates.md | 173 +++++++++++++++++----------------------- 1 file changed, 71 insertions(+), 102 deletions(-) diff --git a/docs/_docs/templates.md b/docs/_docs/templates.md index 79b5fdae..31fdd457 100644 --- a/docs/_docs/templates.md +++ b/docs/_docs/templates.md @@ -421,56 +421,15 @@ The default is `default`. They are as follows (with what they filter): ### Includes -If you have small page fragments that you wish to include in multiple places on -your site, you can use the `include` tag. +If you have small page fragments that you want to include in multiple places on your site, you can use the `include` tag: ```liquid {% raw %}{% include footer.html %}{% endraw %} ``` -Jekyll expects all include files to be placed in an `_includes` directory at the -root of your source directory. This will embed the contents of -`/_includes/footer.html` into the calling file. +Jekyll expects all include files to be placed in an `_includes` directory at the root of your source directory. In the above example, this will embed the contents of `_includes/footer.html` into the calling file. -
-
ProTip™: Use variables as file name
-

- - The name of the file you wish to embed can be literal (as in the example above), - or you can use a variable, using liquid-like variable syntax as in - {% raw %}{% include {{my_variable}} %}{% endraw %}. - -

-
- -You can also pass parameters to an include. Omit the quotation marks to send a variable's value. Liquid curly brackets should not be used here: - -```liquid -{% raw %}{% include footer.html param="value" variable-param=page.variable %}{% endraw %} -``` - -These parameters are available via Liquid in the include: - -```liquid -{% raw %}{{ include.param }}{% endraw %} -``` - -#### Including files relative to another file - -You can also choose to include file fragments relative to the current file: - -```liquid -{% raw %}{% include_relative somedir/footer.html %}{% endraw %} -``` - -You won't need to place your included content within the `_includes` directory. Instead, -the inclusion is specifically relative to the file where the tag is being used. For example, -if `_posts/2014-09-03-my-file.markdown` uses the `include_relative` tag, the included file -must be within the `_posts` directory, or one of its subdirectories. You cannot include -files in other locations. - -All the other capabilities of the `include` tag are available to the `include_relative` tag, -such as using variables. +For more advanced information on using includes, see [Includes](../includes). ### Code snippet highlighting @@ -530,64 +489,6 @@ site. If you use `linenos`, you might want to include an additional CSS class definition for the `.lineno` class in `syntax.css` to distinguish the line numbers from the highlighted code. -### Link - -If you want to include a link to a collection's document, a post, a page -or a file the `link` tag will generate the correct permalink URL for the path -you specify. - -You must include the file extension when using the `link` tag. - -```liquid -{% raw %} -{{ site.baseurl }}{% link _collection/name-of-document.md %} -{{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %} -{{ site.baseurl }}{% link news/index.html %} -{{ site.baseurl }}{% link /assets/files/doc.pdf %} -{% endraw %} -``` - -You can also use this tag to create a link in Markdown as follows: - -```liquid -{% raw %} -[Link to a document]({{ site.baseurl }}{% link _collection/name-of-document.md %}) -[Link to a post]({{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %}) -[Link to a page]({{ site.baseurl }}{% link news/index.html %}) -[Link to a file]({{ site.baseurl }}{% link /assets/files/doc.pdf %}) -{% endraw %} -``` - -### Post URL - -If you would like to include a link to a post on your site, the `post_url` tag -will generate the correct permalink URL for the post you specify. - -```liquid -{% raw %} -{{ site.baseurl }}{% post_url 2010-07-21-name-of-post %} -{% endraw %} -``` - -If you organize your posts in subdirectories, you need to include subdirectory -path to the post: - -```liquid -{% raw %} -{{ site.baseurl }}{% post_url /subdir/2010-07-21-name-of-post %} -{% endraw %} -``` - -There is no need to include the file extension when using the `post_url` tag. - -You can also use this tag to create a link to a post in Markdown as follows: - -```liquid -{% raw %} -[Name of Link]({{ site.baseurl }}{% post_url 2010-07-21-name-of-post %}) -{% endraw %} -``` - ### Gist Use the `gist` tag to easily embed a GitHub Gist onto your site. This works @@ -609,3 +510,71 @@ You may also optionally specify the filename in the gist to display: To use the `gist` tag, you'll need to add the [jekyll-gist](https://github.com/jekyll/jekyll-gist) gem to your project. + +## Links + +### Linking to pages {#link} + +To link to a post, a page, collection item, or file, the `link` tag will generate the correct permalink URL for the path you specify. For example, if you use the `link` tag to link to `mypage.html`, even if you change your permalink style to include the file extension or omit it, the URL formed by the `link` tag will always be valid. + +You must include the file's original extension when using the `link` tag. Here are some examples: + +```liquid +{% raw %} +{{ site.baseurl }}{% link _collection/name-of-document.md %} +{{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %} +{{ site.baseurl }}{% link news/index.html %} +{{ site.baseurl }}{% link /assets/files/doc.pdf %} +{% endraw %} +``` + +You can also use the `link` tag to create a link in Markdown as follows: + +```liquid +{% raw %} +[Link to a document]({{ site.baseurl }}{% link _collection/name-of-document.md %}) +[Link to a post]({{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %}) +[Link to a page]({{ site.baseurl }}{% link news/index.html %}) +[Link to a file]({{ site.baseurl }}{% link /assets/files/doc.pdf %}) +{% endraw %} +``` + +Including `{% raw %}{{site.baseurl}}{% endraw %}` is optional — it depends on whether you want the link to be absolute or root-relative. + +The path to the post, page, or collection is defined as the path relative to the root directory (where your config file is) to the file, not the path from your existing page to the other page. + +For example, suppose you're creating a link `page_a.md` (stored in `pages/folder1/folder2`) to `page_b.md` (stored in `pages/folder1`). Your path in the link would not be `../page_b.html`. Instead, it would be `/pages/folder1/page_b.md`. + +If you're unsure of the path, add `{% raw %}{{page.path}}{% endraw %}` to the page and it will display the path. + +One major benefit of using the `link` tag is link validation. If the link doesn't exist, Jekyll won't build your site. This is a good thing, as it will alert you to a broken link so you can fix it (rather than allowing you to build and deploy a site with broken links). + +Note you cannot add filters to `link` tags. For example, you cannot append a string using Liquid filters, such as `{% raw %}{% link mypage.html | append: "#section1" %} {% endraw %}`. To link to sections on a page, you will need to use regular HTML or Markdown linking techniques. + +### Linking to posts + +If you want like to include a link to a post on your site, the `post_url` tag will generate the correct permalink URL for the post you specify. + +```liquid +{% raw %} +{{ site.baseurl }}{% post_url 2010-07-21-name-of-post %} +{% endraw %} +``` + +If you organize your posts in subdirectories, you need to include subdirectory path to the post: + +```liquid +{% raw %} +{{ site.baseurl }}{% post_url /subdir/2010-07-21-name-of-post %} +{% endraw %} +``` + +There is no need to include the file extension when using the `post_url` tag. + +You can also use this tag to create a link to a post in Markdown as follows: + +```liquid +{% raw %} +[Name of Link]({{ site.baseurl }}{% post_url 2010-07-21-name-of-post %}) +{% endraw %} +``` From 2d0df85b93f767a12059a5fb0402d36e6e3c0b81 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Sun, 25 Dec 2016 20:42:16 -0800 Subject: [PATCH 035/207] Add includes link to doc nav I created more advanced details about includes and created a new page for it instead of putting all the info on the templates page. See https://github.com/jekyll/jekyll/pull/5630 for more details on the update. @jekyll/documentation @DirtyF --- docs/_data/docs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_data/docs.yml b/docs/_data/docs.yml index 4ff28ba2..cb24042e 100644 --- a/docs/_data/docs.yml +++ b/docs/_data/docs.yml @@ -19,6 +19,7 @@ - datafiles - assets - migrations + - includes - title: Customization docs: From 503420a9b45e36cbf718ddc0069dba0f64858fee Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Sun, 25 Dec 2016 20:44:35 -0800 Subject: [PATCH 036/207] Added new includes.md topic to docs Added new includes.md topic. See https://github.com/jekyll/jekyll/pull/5630 for more details on the update. @jekyll/documentation @DirtyF --- docs/_docs/includes.md | 175 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 docs/_docs/includes.md diff --git a/docs/_docs/includes.md b/docs/_docs/includes.md new file mode 100644 index 00000000..dceece77 --- /dev/null +++ b/docs/_docs/includes.md @@ -0,0 +1,175 @@ +--- +layout: docs +title: Includes +permalink: /docs/includes/ +--- + +The `include` tag allows you to include the content from another file stored in the `_includes` folder: + +```liquid +{% raw %}{% include footer.html %}{% endraw %} +``` + +Jekyll will look for the referenced file (in this case, `footer.html`) in the `_includes` directory at the root of your source directory and insert its contents. + +### Including files relative to another file + +You can choose to include file fragments relative to the current file by using the `include_relative` tag: + +```liquid +{% raw %}{% include_relative somedir/footer.html %}{% endraw %} +``` + +You won't need to place your included content within the `_includes` directory. Instead, +the inclusion is specifically relative to the file where the tag is being used. For example, +if `_posts/2014-09-03-my-file.markdown` uses the `include_relative` tag, the included file +must be within the `_posts` directory or one of its subdirectories. + +Note that you cannot use the `../` syntax to specify an include location that refers to a higher-level directory. + +All the other capabilities of the `include` tag are available to the `include_relative` tag, +such as variables. + +### Using variables names for the include file + +The name of the file you want to embed can be specified as a variable instead of an actual file name. For example, suppose you defined a variable in your page's frontmatter like this: + +```yaml +--- +title: My page +my_variable: footer_company_a.html +--- +``` + +You could then reference that variable in your include: + +```liquid +{% raw %}{% include {{page.my_variable}} %}{% endraw %} +``` + +In this example, the include would insert the file `footer_company_a.html` from the `_includes/footer_company_a.html` directory. + +### Passing parameters to includes + +You can also pass parameters to an include. For example, suppose you have a file called `note.html` in your `_includes` folder that contains this formatting: + +```liquid +{% raw %}{% endraw %} +``` + +The {% raw %}`{{include.content}}`{% endraw %} is a parameter gets populated when you call the include and specify a value for that parameter, like this: + +```liquid +{% raw %}{% include note.html content="This is my sample note." %} {% endraw %} +``` + +The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{include.content}}`{% endraw %} parameter. + +Passing parameters to includes is especially helpful when you want to hide away complex formatting from your Markdown content. + +For example, suppose you have a special image syntax with complex formatting, and you don't want your authors to remember the complex formatting. As a result, you decide to simplify the formatting by using an include with parameters. Here's an example of the special image syntax you want to populate with an include: + +```html +
Jekyll logo
+This is the Jekyll logo
+``` + +You could templatize this content in your include and make each value available as a parameter, like this: + +```liquid +{% raw %}
{{include.caption}} +
{% endraw %} +``` + +This include contains 5 parameters: + +* `url` +* `max-width` +* `file` +* `alt` +* `caption` + +You could also use `if` tags to safeguard scenarios where either the parameter is optional or where the author doesn't include the parameter: + +```liquid +{% raw %}
{% if {{include.url}} %} +{% endif %}{% if {{include.url}} %}{% endif %} +{% if {{include.caption}} %}
{{include.caption}} +
{% endif %}
{% endraw %} +``` + +In this example, `{% raw %}if {{include.url}}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). + +Here's an example that passes all the parameters to this include (the include file is named `image.html`): + +```liquid +{% raw %}{% include image.html url="http://jekyllrb.com" +max-width="200px" file="logo.png" alt="Jekyll logo" +caption="This is the Jekyll logo." %} {% endraw %} +``` + +The result is the original HTML code shown earlier. + +You can create includes that act as templates for a variety of uses — inserting audio or video clips, alerts, special formatting, and more. + +However, note that you should avoid using too many includes, as this will slow down the build time of your site. For example, don't use includes every time you insert an image. (The above technique shows a use case for special images.) + +### Passing parameter variables to includes + +Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{site.product_name}}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) + +The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{site.product_name}} is now available."`{% endraw %} + +If you want to include this variable in your parameter that you pass to an include, you need to store the entire parameter as a variable before passing it to the include. You can use `capture` tags to create the variable: + +```liquid +{% raw %}{% capture download_note %}The latest version of +{{site.product_name}} is now available.{% endcapture %}{% endraw %} +``` + +Then pass this captured variable into the parameter for the include. Omit the quotation marks around the parameter content because it's no longer a string (it's a variable): + +```liquid +{% raw %}{% include note.html content=download_note %}{% endraw %} +``` + +### Passing references to YAML files as parameter values + +Instead of passing string variables to the include, you can pass a reference to a YAML data file stored in the `_data` folder. + +Here's an example. In the `_data` folder, suppose you have a YAML file called `profiles.yml`. Its content looks like this: + +```yaml +- name: John Doe + login_age: old + image: johndoe.jpg + +- name: Jane Doe + login_age: new + image: janedoe.jpg +``` + +In the `_includes` folder, assume you have a file called `spotlight.html` with this code: + +```liquid +{% raw %}{% for person in {{include.participants}} %} +{% if person.login_age == "new" %} +{{person.name}} +{% endif %} +{% endfor %}{% endraw %} +``` + +Now when you insert the `spotlight.html` include file, you can submit the YAML file as a parameter: + +``` +{% raw %}{% include spotlight.html participants=site.data.profiles %}{% endraw %} +``` + +In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{include.participants}}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. From a6d357050a33b95eb448c962d7a6a6279c9e3de6 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Sun, 25 Dec 2016 23:03:22 -0800 Subject: [PATCH 037/207] Updated to correct content I previously had pasted in the wrong page here. Now it's fixed. --- docs/_docs/themes.md | 676 +++++++++---------------------------------- 1 file changed, 136 insertions(+), 540 deletions(-) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index 31fdd457..ddcc3653 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -1,580 +1,176 @@ --- layout: docs -title: Templates -permalink: /docs/templates/ +title: Themes +permalink: /docs/themes/ --- -Jekyll uses the [Liquid](https://shopify.github.io/liquid/) templating language to -process templates. All of the standard Liquid [tags](https://shopify.github.io/liquid/tags/) and -[filters](https://shopify.github.io/liquid/filters/) are -supported. Jekyll even adds a few handy filters and tags of its own to make -common tasks easier. +Jekyll has an extensive theme system that allows you to leverage community-maintained templates and styles to customize your site's presentation. Jekyll themes package up layouts, includes, and stylesheets in a way that can be overridden by your site's content. -## Filters +## Understanding gem-based themes -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DescriptionFilter and Output
-

Relative URL

-

Prepend the baseurl value to the input. Useful if your site is hosted at a subpath rather than the root of the domain.

-
-

- {% raw %}{{ "/assets/style.css" | relative_url }}{% endraw %} -

-

- /my-baseurl/assets/style.css -

-
-

Absolute URL

-

Prepend the url and baseurl value to the input.

-
-

- {% raw %}{{ "/assets/style.css" | absolute_url }}{% endraw %} -

-

- http://example.com/my-baseurl/assets/style.css -

-
-

Date to XML Schema

-

Convert a Date into XML Schema (ISO 8601) format.

-
-

- {% raw %}{{ site.time | date_to_xmlschema }}{% endraw %} -

-

- 2008-11-07T13:07:54-08:00 -

-
-

Date to RFC-822 Format

-

Convert a Date into the RFC-822 format used for RSS feeds.

-
-

- {% raw %}{{ site.time | date_to_rfc822 }}{% endraw %} -

-

- Mon, 07 Nov 2008 13:07:54 -0800 -

-
-

Date to String

-

Convert a date to short format.

-
-

- {% raw %}{{ site.time | date_to_string }}{% endraw %} -

-

- 07 Nov 2008 -

-
-

Date to Long String

-

Format a date to long format.

-
-

- {% raw %}{{ site.time | date_to_long_string }}{% endraw %} -

-

- 07 November 2008 -

-
-

Where

-

Select all the objects in an array where the key has the given value.

-
-

- {% raw %}{{ site.members | where:"graduation_year","2014" }}{% endraw %} -

-
-

Where Expression

-

Select all the objects in an array where the expression is true. Jekyll v3.2.0 & later.

-
-

- {% raw %}{{ site.members | where_exp:"item", -"item.graduation_year == 2014" }}{% endraw %} - {% raw %}{{ site.members | where_exp:"item", -"item.graduation_year < 2014" }}{% endraw %} - {% raw %}{{ site.members | where_exp:"item", -"item.projects contains 'foo'" }}{% endraw %} -

-
-

Group By

-

Group an array's items by a given property.

-
-

- {% raw %}{{ site.members | group_by:"graduation_year" }}{% endraw %} -

-

- [{"name"=>"2013", "items"=>[...]}, -{"name"=>"2014", "items"=>[...]}] -

-
-

Group By Expression

-

Group an array's items using a Liquid expression.

-
-

- {% raw %}{{ site.members | group_by_exp:"item", -"item.graduation_year | truncate: 3, \"\"" }}{% endraw %} -

-

- [{"name"=>"201...", "items"=>[...]}, -{"name"=>"200...", "items"=>[...]}] -

-
-

XML Escape

-

Escape some text for use in XML.

-
-

- {% raw %}{{ page.content | xml_escape }}{% endraw %} -

-
-

CGI Escape

-

- CGI escape a string for use in a URL. Replaces any special characters - with appropriate %XX replacements. -

-
-

- {% raw %}{{ "foo,bar;baz?" | cgi_escape }}{% endraw %} -

-

- foo%2Cbar%3Bbaz%3F -

-
-

URI Escape

-

- URI escape a string. -

-
-

- {% raw %}{{ "foo, bar \baz?" | uri_escape }}{% endraw %} -

-

- foo,%20bar%20%5Cbaz? -

-
-

Number of Words

-

Count the number of words in some text.

-
-

- {% raw %}{{ page.content | number_of_words }}{% endraw %} -

-

- 1337 -

-
-

Array to Sentence

-

Convert an array into a sentence. Useful for listing tags. Optional argument for connector.

-
-

- {% raw %}{{ page.tags | array_to_sentence_string }}{% endraw %} -

-

- foo, bar, and baz -

-

- {% raw %}{{ page.tags | array_to_sentence_string: 'or' }}{% endraw %} -

-

- foo, bar, or baz -

-
-

Markdownify

-

Convert a Markdown-formatted string into HTML.

-
-

- {% raw %}{{ page.excerpt | markdownify }}{% endraw %} -

-
-

Smartify

-

Convert "quotes" into “smart quotes.”

-
-

- {% raw %}{{ page.title | smartify }}{% endraw %} -

-
-

Converting Sass/SCSS

-

Convert a Sass- or SCSS-formatted string into CSS.

-
-

- {% raw %}{{ some_scss | scssify }}{% endraw %} - {% raw %}{{ some_sass | sassify }}{% endraw %} -

-
-

Slugify

-

Convert a string into a lowercase URL "slug". See below for options.

-
-

- {% raw %}{{ "The _config.yml file" | slugify }}{% endraw %} -

-

- the-config-yml-file -

-

- {% raw %}{{ "The _config.yml file" | slugify: 'pretty' }}{% endraw %} -

-

- the-_config.yml-file -

-
-

Data To JSON

-

Convert Hash or Array to JSON.

-
-

- {% raw %}{{ site.data.projects | jsonify }}{% endraw %} -

-
-

Normalize Whitespace

-

Replace any occurrence of whitespace with a single space.

-
-

- {% raw %}{{ "a \n b" | normalize_whitespace }}{% endraw %} -

-
-

Sort

-

Sort an array. Optional arguments for hashes: 1. property name 2. nils order (first or last).

-
-

- {% raw %}{{ page.tags | sort }}{% endraw %} -

-

- {% raw %}{{ site.posts | sort: 'author' }}{% endraw %} -

-

- {% raw %}{{ site.pages | sort: 'title', 'last' }}{% endraw %} -

-
-

Sample

-

Pick a random value from an array. Optional: pick multiple values.

-
-

- {% raw %}{{ site.pages | sample }}{% endraw %} -

-

- {% raw %}{{ site.pages | sample:2 }}{% endraw %} -

-
-

To Integer

-

Convert a string or boolean to integer.

-
-

- {% raw %}{{ some_var | to_integer }}{% endraw %} -

-
-

Array Filters

-

Push, pop, shift, and unshift elements from an Array.

-

These are NON-DESTRUCTIVE, i.e. they do not mutate the array, but rather make a copy and mutate that.

-
-

- {% raw %}{{ page.tags | push: 'Spokane' }}{% endraw %} -

-

- ['Seattle', 'Tacoma', 'Spokane'] -

-

- {% raw %}{{ page.tags | pop }}{% endraw %} -

-

- ['Seattle'] -

-

- {% raw %}{{ page.tags | shift }}{% endraw %} -

-

- ['Tacoma'] -

-

- {% raw %}{{ page.tags | unshift: "Olympia" }}{% endraw %} -

-

- ['Olympia', 'Seattle', 'Tacoma'] -

-
-

Inspect

-

Convert an object into its String representation for debugging.

-
-

- {% raw %}{{ some_var | inspect }}{% endraw %} -

-
-
+When you [create a new Jekyll site](/docs/quickstart) (by running the `jekyll new ` command), Jekyll installs a gem-based theme called [Minima](https://github.com/jekyll/minima). -### Options for the `slugify` filter +With gem-based themes, some of the theme directories and files are stored in the gem, hidden from view in your Jekyll project. As a result, the files and directories shown for your site are only part of all the theme's files. In the case of Minima, you see only the following: -The `slugify` filter accepts an option, each specifying what to filter. -The default is `default`. They are as follows (with what they filter): - -- `none`: no characters -- `raw`: spaces -- `default`: spaces and non-alphanumeric characters -- `pretty`: spaces and non-alphanumeric characters except for `._~!$&'()+,;=@` - -## Tags - -### Includes - -If you have small page fragments that you want to include in multiple places on your site, you can use the `include` tag: - -```liquid -{% raw %}{% include footer.html %}{% endraw %} +``` +├── Gemfile +├── Gemfile.lock +├── _config.yml +├── _posts +│   └── 2016-12-04-welcome-to-jekyll.markdown +├── about.md +└── index.md ``` -Jekyll expects all include files to be placed in an `_includes` directory at the root of your source directory. In the above example, this will embed the contents of `_includes/footer.html` into the calling file. +The `Gemfile` and `Gemfile.lock` files are used by Bundler to keep track of the required gems and gem versions you need to build your Jekyll site. -For more advanced information on using includes, see [Includes](../includes). +Gem-based themes make it easy for theme developers to make updates available to anyone who has the theme gem. When there's an update, theme developers push the update to RubyGems. -### Code snippet highlighting +If you have the theme gem, you can (if you desire) run `bundle update` to update all gems in your project. Or you can run `bundle update `, replacing `` with the theme name, such as `minima`, to just update the theme gem. Any new files or updates the theme developer has made (such as to stylesheets or includes) will be pulled into your project automatically. -Jekyll has built in support for syntax highlighting of over 60 languages -thanks to [Rouge](http://rouge.jneen.net). Rouge is the default highlighter -in Jekyll 3 and above. To use it in Jekyll 2, set `highlighter` to `rouge` -and ensure the `rouge` gem is installed properly. +The goal of gem-based themes is to allow you to get all the benefits of a robust, continually updated theme without having all the theme's files getting in your way and over-complicating what might be your primary focus: creating content. -Alternatively, you can use [Pygments](http://pygments.org) to highlight -your code snippets. To use Pygments, you must have Python installed on your -system, have the `pygments.rb` gem installed and set `highlighter` to -`pygments` in your site's configuration file. Pygments supports [over 100 -languages](http://pygments.org/languages/) +## Overriding theme defaults -To render a code block with syntax highlighting, surround your code as follows: +Jekyll themes set default layouts, includes, and stylesheets. However, you can override any of the theme defaults with your own site content. For example, if your selected theme has a `page` layout, you can override the theme's layout by creating your own `page` layout in the `_layouts` directory (for example, `_layouts/page.html`). -```liquid -{% raw %} -{% highlight ruby %} -def foo - puts 'foo' -end -{% endhighlight %} -{% endraw %} +Jekyll will look first to your site's content before looking to the theme's defaults for any requested file in the following folders: + +* `/assets` +* `/_layouts` +* `/_includes` +* `/_sass` + +Refer to your selected theme's documentation and source repository for more information on what files you can override. +{: .note .info} + +To locate theme's files on your computer: + +1. Run `bundle show` followed by the name of the theme's gem, e.g., `bundle show minima` for default Jekyll's theme. + + The location of the theme gem is returned. For example, minima is located in `/usr/local/lib/ruby/gems/2.3.0/gems/minima-2.1.0` on a Mac. + +2. Change to the directory's location and open the directory in Finder or Explorer: + + ``` + cd /usr/local/lib/ruby/gems/2.3.0/gems/minima-2.1.0 + open . + # for Windows, use "explorer ." + ``` + + A Finder or Explorer window opens showing the theme's files and directories. + + With a clear understanding of the theme's files, you can now override any theme file by creating a similarly named file in your Jekyll site directory. + +If you want to get rid of the theme gem altogether, copy the files from the theme gem's directory into your Jekyll site directory (for example, copy them to `/myblog` if you created your Jekyll site at `/myblog`). + +Then modify the Gemfile and configuration to remove references to the theme gem. For example, to remove Minima: +* Open `Gemfile` and remove `gem "minima", "~> 2.0"`. +* Open `_config.yml` and remove `theme: minima`. + +Now `bundle update` will no longer get updates for the theme gem. + +## Using themes other than the default {#installing-a-theme} + +The `jekyll new ` command isn't the only way to create a new Jekyll site with a gem-based theme. You can also find gem-based themes online and incorporate them into your Jekyll project. To install a gem-based theme: + +1. Add the theme to your site's `Gemfile`: + + ``` + gem 'my-awesome-jekyll-theme' + ``` + +3. Install the theme: + + ``` + bundle install + ``` + +3. Add the following to your site's `_config.yml` to activate the theme: + + ``` + theme: my-awesome-jekyll-theme + ``` + +5. Build your site: + + ``` + bundle exec jekyll serve + ``` + +You can have multiple themes listed in your site's `Gemfile`, but only one theme can be selected in your site's `_config.yml`. +{: .note .info } + +If you're publishing your Jekyll site on [Github Pages](https://pages.github.com/), note that Github Pages supports only some gem-based themes. See [Supported Themes](https://pages.github.com/themes/) in Github's documentation to see which themes are supported. + +## Creating your own gem-based theme + +If you're a Jekyll theme developer (rather than just a consumer of themes), you can package up your theme in RubyGems and allow users to install it through Bundler. + +If you're unfamiliar with distributing ruby gems, don't worry. Jekyll will help you scaffold a new theme with the `new-theme` command. Just run `jekyll new-theme` with the theme name as an argument: + +```sh +jekyll new-theme my-awesome-theme + create /path/to/my-awesome-theme/_layouts + create /path/to/my-awesome-theme/_includes + create /path/to/my-awesome-theme/_sass + create /path/to/my-awesome-theme/_layouts/page.html + create /path/to/my-awesome-theme/_layouts/post.html + create /path/to/my-awesome-theme/_layouts/default.html + create /path/to/my-awesome-theme/Gemfile + create /path/to/my-awesome-theme/my-awesome-theme.gemspec + create /path/to/my-awesome-theme/README.md + create /path/to/my-awesome-theme/LICENSE.txt + initialize /path/to/my-awesome-theme/.git + create /path/to/my-awesome-theme/.gitignore +Your new Jekyll theme, my-awesome-theme, is ready for you in /path/to/my-awesome-theme! +For help getting started, read /path/to/my-awesome-theme/README.md. ``` -The argument to the `highlight` tag (`ruby` in the example above) is the -language identifier. To find the appropriate identifier to use for the language -you want to highlight, look for the “short name” on the [Rouge -wiki](https://github.com/jayferd/rouge/wiki/List-of-supported-languages-and-lexers) -or the [Pygments' Lexers page](http://pygments.org/docs/lexers/). +Add your template files in the corresponding folders. Then complete the `.gemspec` and the README files according to your needs. -#### Line numbers +### Layouts and includes -There is a second argument to `highlight` called `linenos` that is optional. -Including the `linenos` argument will force the highlighted code to include line -numbers. For instance, the following code block would include line numbers next -to each line: +Theme layouts and includes work just like they work in any Jekyll site. Place layouts in your theme's `/_layouts` folder, and place includes in your themes `/_includes` folder. -```liquid -{% raw %} -{% highlight ruby linenos %} -def foo - puts 'foo' -end -{% endhighlight %} -{% endraw %} -``` +For example, if your theme has a `/_layouts/page.html` file, and a page has `layout: page` in its YAML front matter, Jekyll will first look to the site's `_layouts` folder for a the `page` layout, and if none exists, will use your theme's `page` layout. -#### Stylesheets for syntax highlighting +### Assets -In order for the highlighting to show up, you’ll need to include a highlighting -stylesheet. For an example stylesheet you can look at -[syntax.css](https://github.com/mojombo/tpw/tree/master/css/syntax.css). These -are the same styles as used by GitHub and you are free to use them for your own -site. If you use `linenos`, you might want to include an additional CSS class -definition for the `.lineno` class in `syntax.css` to distinguish the line -numbers from the highlighted code. +Any file in `/assets` will be copied over to the user's site upon build unless they have a file with the same relative path. You can ship any kind of asset here: SCSS, an image, a webfont, etc. These files behave just like pages and static files in Jekyll: if the file has [YAML front matter](../docs/frontmatter/) at the top, then it will be rendered. If it does not have YAML front matter, it will simply be copied over into the resulting site. This allows theme creators to ship a default `/assets/styles.scss` file which their layouts can depend on as `/assets/styles.css`. -### Gist +All files in `/assets` will be output into the compiled site in the `/assets` folder just as you'd expect from using Jekyll on your sites. -Use the `gist` tag to easily embed a GitHub Gist onto your site. This works -with public or secret gists: +### Stylesheets -```liquid -{% raw %} -{% gist parkr/931c1c8d465a04042403 %} -{% endraw %} -``` +Your theme's stylesheets should be placed in your theme's `/_sass` folder, again, just as you would when authoring a Jekyll site. Your theme's styles can be included in the user's stylesheet using the `@import` directive. -You may also optionally specify the filename in the gist to display: +### Documenting your theme -```liquid -{% raw %} -{% gist parkr/931c1c8d465a04042403 jekyll-private-gist.markdown %} -{% endraw %} -``` +Your theme should include a `/README.md` file, which explains how site authors can install and use your theme. What layouts are included? What includes? Do they need to add anything special to their site's configuration file? -To use the `gist` tag, you'll need to add the -[jekyll-gist](https://github.com/jekyll/jekyll-gist) gem to your project. +### Adding a screenshot -## Links +Themes are visual. Show users what your theme looks like by including a screenshot as `/screenshot.png` within your theme's repository where it can be retrieved programatically. You can also include this screenshot within your theme's documentation. -### Linking to pages {#link} +### Previewing your theme -To link to a post, a page, collection item, or file, the `link` tag will generate the correct permalink URL for the path you specify. For example, if you use the `link` tag to link to `mypage.html`, even if you change your permalink style to include the file extension or omit it, the URL formed by the `link` tag will always be valid. +To preview your theme as you're authoring it, it may be helpful to add dummy content in, for example, `/index.html` and `/page.html` files. This will allow you to use the `jekyll build` and `jekyll serve` commands to preview your theme, just as you'd preview a Jekyll site. -You must include the file's original extension when using the `link` tag. Here are some examples: +If you do preview your theme locally, be sure to add `/_site` to your theme's `.gitignore` file to prevent the compiled site from also being included when you distribute your theme. +{: .info .note} -```liquid -{% raw %} -{{ site.baseurl }}{% link _collection/name-of-document.md %} -{{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %} -{{ site.baseurl }}{% link news/index.html %} -{{ site.baseurl }}{% link /assets/files/doc.pdf %} -{% endraw %} -``` +### Publishing your theme -You can also use the `link` tag to create a link in Markdown as follows: +Themes are published via [RubyGems.org](https://rubygems.org). You'll need a RubyGems account, which you can [create for free](https://rubygems.org/sign_up). -```liquid -{% raw %} -[Link to a document]({{ site.baseurl }}{% link _collection/name-of-document.md %}) -[Link to a post]({{ site.baseurl }}{% link _posts/2016-07-26-name-of-post.md %}) -[Link to a page]({{ site.baseurl }}{% link news/index.html %}) -[Link to a file]({{ site.baseurl }}{% link /assets/files/doc.pdf %}) -{% endraw %} -``` +1. First, package your theme, by running the following command, replacing `my-awesome-jekyll-theme` with the name of your theme: -Including `{% raw %}{{site.baseurl}}{% endraw %}` is optional — it depends on whether you want the link to be absolute or root-relative. + gem build my-awesome-jekyll-theme.gemspec -The path to the post, page, or collection is defined as the path relative to the root directory (where your config file is) to the file, not the path from your existing page to the other page. +2. Next, push your packaged theme up to the RubyGems service, by running the following command, again replacing `my-awesome-jekyll-theme` with the name of your theme: -For example, suppose you're creating a link `page_a.md` (stored in `pages/folder1/folder2`) to `page_b.md` (stored in `pages/folder1`). Your path in the link would not be `../page_b.html`. Instead, it would be `/pages/folder1/page_b.md`. + gem push my-awesome-jekyll-theme-*.gem -If you're unsure of the path, add `{% raw %}{{page.path}}{% endraw %}` to the page and it will display the path. - -One major benefit of using the `link` tag is link validation. If the link doesn't exist, Jekyll won't build your site. This is a good thing, as it will alert you to a broken link so you can fix it (rather than allowing you to build and deploy a site with broken links). - -Note you cannot add filters to `link` tags. For example, you cannot append a string using Liquid filters, such as `{% raw %}{% link mypage.html | append: "#section1" %} {% endraw %}`. To link to sections on a page, you will need to use regular HTML or Markdown linking techniques. - -### Linking to posts - -If you want like to include a link to a post on your site, the `post_url` tag will generate the correct permalink URL for the post you specify. - -```liquid -{% raw %} -{{ site.baseurl }}{% post_url 2010-07-21-name-of-post %} -{% endraw %} -``` - -If you organize your posts in subdirectories, you need to include subdirectory path to the post: - -```liquid -{% raw %} -{{ site.baseurl }}{% post_url /subdir/2010-07-21-name-of-post %} -{% endraw %} -``` - -There is no need to include the file extension when using the `post_url` tag. - -You can also use this tag to create a link to a post in Markdown as follows: - -```liquid -{% raw %} -[Name of Link]({{ site.baseurl }}{% post_url 2010-07-21-name-of-post %}) -{% endraw %} -``` +3. To release a new version of your theme, simply update the version number in the gemspec file, ( `my-awesome-jekyll-theme.gemspec` in this example ), and then repeat Steps 1 & 2 above. +We recommend that you follow [Semantic Versioning](http://semver.org/) while bumping your theme-version. From 31de9ea484e996188a9407a416e236f7e0b4f2a6 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Mon, 26 Dec 2016 18:28:27 -0800 Subject: [PATCH 038/207] made requested updates - made `{{ }}` formatting more readable by adding spacing. - added formatting to code samples to properly reflect line breaks for readability --- docs/_docs/includes.md | 57 ++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/docs/_docs/includes.md b/docs/_docs/includes.md index dceece77..3a0b819d 100644 --- a/docs/_docs/includes.md +++ b/docs/_docs/includes.md @@ -44,7 +44,7 @@ my_variable: footer_company_a.html You could then reference that variable in your include: ```liquid -{% raw %}{% include {{page.my_variable}} %}{% endraw %} +{% raw %}{% include {{ page.my_variable }} %}{% endraw %} ``` In this example, the include would insert the file `footer_company_a.html` from the `_includes/footer_company_a.html` directory. @@ -55,35 +55,41 @@ You can also pass parameters to an include. For example, suppose you have a file ```liquid {% raw %}{% endraw %} ``` -The {% raw %}`{{include.content}}`{% endraw %} is a parameter gets populated when you call the include and specify a value for that parameter, like this: +The `{% raw %}{{ include.content }}{% endraw %}` is a parameter gets populated when you call the include and specify a value for that parameter, like this: ```liquid {% raw %}{% include note.html content="This is my sample note." %} {% endraw %} ``` -The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{include.content}}`{% endraw %} parameter. +The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{ include.content }}`{% endraw %} parameter. Passing parameters to includes is especially helpful when you want to hide away complex formatting from your Markdown content. For example, suppose you have a special image syntax with complex formatting, and you don't want your authors to remember the complex formatting. As a result, you decide to simplify the formatting by using an include with parameters. Here's an example of the special image syntax you want to populate with an include: ```html -
Jekyll logo
-This is the Jekyll logo
+
+ + Jekyll logo +
This is the Jekyll logo
+
``` You could templatize this content in your include and make each value available as a parameter, like this: ```liquid -{% raw %}
{{include.caption}} -
{% endraw %} +{% raw %}
+ + {{ include.alt }} +
{{ include.caption }}
+
{% endraw %} ``` This include contains 5 parameters: @@ -97,15 +103,18 @@ This include contains 5 parameters: You could also use `if` tags to safeguard scenarios where either the parameter is optional or where the author doesn't include the parameter: ```liquid -{% raw %}
{% if {{include.url}} %} -{% endif %}{% if {{include.url}} %}{% endif %} -{% if {{include.caption}} %}
{{include.caption}} -
{% endif %}
{% endraw %} +{% raw %}
+ {% if {{ include.url }} %}{% endif %} + {{ include.alt }}{% if {{ include.url }} %}{% endif %} + {% if {{ include.caption }} %} +
{{ include.caption }}
+ {% endif %} +
{% endraw %} ``` -In this example, `{% raw %}if {{include.url}}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). +In this example, `{% raw %}if {{ include.url }}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). Here's an example that passes all the parameters to this include (the include file is named `image.html`): @@ -123,15 +132,15 @@ However, note that you should avoid using too many includes, as this will slow d ### Passing parameter variables to includes -Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{site.product_name}}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) +Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{ site.product_name }}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) -The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{site.product_name}} is now available."`{% endraw %} +The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{ site.product_name }} is now available."`{% endraw %} If you want to include this variable in your parameter that you pass to an include, you need to store the entire parameter as a variable before passing it to the include. You can use `capture` tags to create the variable: ```liquid {% raw %}{% capture download_note %}The latest version of -{{site.product_name}} is now available.{% endcapture %}{% endraw %} +{{ site.product_name }} is now available.{% endcapture %}{% endraw %} ``` Then pass this captured variable into the parameter for the include. Omit the quotation marks around the parameter content because it's no longer a string (it's a variable): @@ -159,9 +168,9 @@ Here's an example. In the `_data` folder, suppose you have a YAML file called `p In the `_includes` folder, assume you have a file called `spotlight.html` with this code: ```liquid -{% raw %}{% for person in {{include.participants}} %} +{% raw %}{% for person in {{ include.participants }} %} {% if person.login_age == "new" %} -{{person.name}} +{{ person.name }} {% endif %} {% endfor %}{% endraw %} ``` @@ -172,4 +181,4 @@ Now when you insert the `spotlight.html` include file, you can submit the YAML f {% raw %}{% include spotlight.html participants=site.data.profiles %}{% endraw %} ``` -In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{include.participants}}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. +In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{ include.participants }}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. From 488ec5489c1efc69547ad86e7d93feaf2a6d3c50 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Mon, 26 Dec 2016 18:36:39 -0800 Subject: [PATCH 039/207] moved includes to appear after templates made update based on review. moved includes topic after templates in nav list. --- docs/_data/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_data/docs.yml b/docs/_data/docs.yml index cb24042e..bb9d3b14 100644 --- a/docs/_data/docs.yml +++ b/docs/_data/docs.yml @@ -19,11 +19,11 @@ - datafiles - assets - migrations - - includes - title: Customization docs: - templates + - includes - permalinks - pagination - plugins From b37b433b60a5bce9470b4415e6c62c45fca7fb07 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Mon, 26 Dec 2016 18:48:42 -0800 Subject: [PATCH 040/207] made requested updates I made the requested updates. Mostly just small formatting improvements. --- docs/_docs/templates.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_docs/templates.md b/docs/_docs/templates.md index 31fdd457..b6c1ef6f 100644 --- a/docs/_docs/templates.md +++ b/docs/_docs/templates.md @@ -421,13 +421,13 @@ The default is `default`. They are as follows (with what they filter): ### Includes -If you have small page fragments that you want to include in multiple places on your site, you can use the `include` tag: +If you have small page snippets that you want to include in multiple places on your site, save the snippets as *include files* and insert them where required, by using the `include` tag: ```liquid {% raw %}{% include footer.html %}{% endraw %} ``` -Jekyll expects all include files to be placed in an `_includes` directory at the root of your source directory. In the above example, this will embed the contents of `_includes/footer.html` into the calling file. +Jekyll expects all **include files** to be placed in an `_includes` directory at the root of your source directory. In the above example, this will embed the contents of `_includes/footer.html` into the calling file. For more advanced information on using includes, see [Includes](../includes). @@ -539,7 +539,7 @@ You can also use the `link` tag to create a link in Markdown as follows: {% endraw %} ``` -Including `{% raw %}{{site.baseurl}}{% endraw %}` is optional — it depends on whether you want the link to be absolute or root-relative. +(Including `{% raw %}{{site.baseurl}}{% endraw %}` is optional — it depends on whether you want to preface the page URL with the `baseurl` value.) The path to the post, page, or collection is defined as the path relative to the root directory (where your config file is) to the file, not the path from your existing page to the other page. From 6c5f6ce164c7535aa23e4351c37f151119786283 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Mon, 26 Dec 2016 19:48:38 -0800 Subject: [PATCH 041/207] Made requested updates on this topic Made minor grammar updates --- docs/_docs/collections.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_docs/collections.md b/docs/_docs/collections.md index 06f8fd75..ee0747be 100644 --- a/docs/_docs/collections.md +++ b/docs/_docs/collections.md @@ -7,7 +7,7 @@ permalink: /docs/collections/ Not everything is a post or a page. Maybe you want to document the various methods in your open source project, members of a team, or talks at a conference. Collections allow you to define a new type of document that behave -like Pages or Posts do normally but which also have their own unique properties and +like Pages or Posts do normally, but also have their own unique properties and namespace. ## Using Collections @@ -51,7 +51,7 @@ defaults: Create a corresponding folder (for example, `/_my_collection`) and add documents. YAML Front Matter is read in as data if it exists, and everything -after it is available in the document's `content` attribute. If no YAML Front +after it is accessible via the document's `content` attribute. If no YAML Front Matter is provided, Jekyll will not generate the file in your collection.
From 938388a6bea57b042ed5ac60446f16fae579f7d2 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Mon, 26 Dec 2016 20:31:54 -0800 Subject: [PATCH 042/207] Made updates requested by others in PR I made various updates as requested by the reviewers. --- docs/_docs/themes.md | 60 ++++++++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index ddcc3653..011ead6e 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -8,9 +8,11 @@ Jekyll has an extensive theme system that allows you to leverage community-maint ## Understanding gem-based themes -When you [create a new Jekyll site](/docs/quickstart) (by running the `jekyll new ` command), Jekyll installs a gem-based theme called [Minima](https://github.com/jekyll/minima). +When you [create a new Jekyll site](/docs/quickstart) (by running the `jekyll new ` command), Jekyll installs a site that uses a gem-based theme called [Minima](https://github.com/jekyll/minima). -With gem-based themes, some of the theme directories and files are stored in the gem, hidden from view in your Jekyll project. As a result, the files and directories shown for your site are only part of all the theme's files. In the case of Minima, you see only the following: +With gem-based themes, some of the site's directories (such as the `assets`, `_layouts`, `_includes`, and `_sass` directories) are stored in the theme-gem, hidden from your immediate view. Yet all of the necessary directories will be read and processed during Jekyll's build process. + +In the case of Minima, you see only the following files in your Jekyll site directory: ``` ├── Gemfile @@ -32,7 +34,9 @@ The goal of gem-based themes is to allow you to get all the benefits of a robust ## Overriding theme defaults -Jekyll themes set default layouts, includes, and stylesheets. However, you can override any of the theme defaults with your own site content. For example, if your selected theme has a `page` layout, you can override the theme's layout by creating your own `page` layout in the `_layouts` directory (for example, `_layouts/page.html`). +Jekyll themes set default layouts, includes, and stylesheets. However, you can override any of the theme defaults with your own site content. + +For example, if your selected theme has a `page` layout, you can override the theme's layout by creating your own `page` layout in the `_layouts` directory (for example, `_layouts/page.html`). Jekyll will look first to your site's content before looking to the theme's defaults for any requested file in the following folders: @@ -62,7 +66,11 @@ To locate theme's files on your computer: With a clear understanding of the theme's files, you can now override any theme file by creating a similarly named file in your Jekyll site directory. -If you want to get rid of the theme gem altogether, copy the files from the theme gem's directory into your Jekyll site directory (for example, copy them to `/myblog` if you created your Jekyll site at `/myblog`). +## Converting gem-based themes to regular themes + +Suppose you want to get rid of the gem-based theme and convert it to a regular theme, where all files are present in your Jekyll site directory, with nothing stored in the theme gem. + +To do this, copy the files from the theme gem's directory into your Jekyll site directory. (For example, copy them to `/myblog` if you created your Jekyll site at `/myblog`. See the previous section for details.) Then modify the Gemfile and configuration to remove references to the theme gem. For example, to remove Minima: * Open `Gemfile` and remove `gem "minima", "~> 2.0"`. @@ -70,31 +78,35 @@ Then modify the Gemfile and configuration to remove references to the theme gem. Now `bundle update` will no longer get updates for the theme gem. -## Using themes other than the default {#installing-a-theme} +## Installing a gem-based theme {#installing-a-theme} -The `jekyll new ` command isn't the only way to create a new Jekyll site with a gem-based theme. You can also find gem-based themes online and incorporate them into your Jekyll project. To install a gem-based theme: +The `jekyll new ` command isn't the only way to create a new Jekyll site with a gem-based theme. You can also find gem-based themes online and incorporate them into your Jekyll project. + +For example, search for [jekyll-theme on RubyGems](https://rubygems.org/search?utf8=%E2%9C%93&query=jekyll-theme) to find other gem-based themes. (Note that not all themes are using `jekyll-theme` as a convention in the theme name.) + +To install a gem-based theme: 1. Add the theme to your site's `Gemfile`: - ``` + ```sh gem 'my-awesome-jekyll-theme' ``` -3. Install the theme: +2. Install the theme: - ``` + ```sh bundle install ``` 3. Add the following to your site's `_config.yml` to activate the theme: - ``` + ```sh theme: my-awesome-jekyll-theme ``` -5. Build your site: +4. Build your site: - ``` + ```sh bundle exec jekyll serve ``` @@ -103,11 +115,11 @@ You can have multiple themes listed in your site's `Gemfile`, but only one theme If you're publishing your Jekyll site on [Github Pages](https://pages.github.com/), note that Github Pages supports only some gem-based themes. See [Supported Themes](https://pages.github.com/themes/) in Github's documentation to see which themes are supported. -## Creating your own gem-based theme +## Creating a gem-based theme If you're a Jekyll theme developer (rather than just a consumer of themes), you can package up your theme in RubyGems and allow users to install it through Bundler. -If you're unfamiliar with distributing ruby gems, don't worry. Jekyll will help you scaffold a new theme with the `new-theme` command. Just run `jekyll new-theme` with the theme name as an argument: +If you're unfamiliar with creating Ruby gems, don't worry. Jekyll will help you scaffold a new theme with the `new-theme` command. Just run `jekyll new-theme` with the theme name as an argument: ```sh jekyll new-theme my-awesome-theme @@ -137,13 +149,29 @@ For example, if your theme has a `/_layouts/page.html` file, and a page has `lay ### Assets -Any file in `/assets` will be copied over to the user's site upon build unless they have a file with the same relative path. You can ship any kind of asset here: SCSS, an image, a webfont, etc. These files behave just like pages and static files in Jekyll: if the file has [YAML front matter](../docs/frontmatter/) at the top, then it will be rendered. If it does not have YAML front matter, it will simply be copied over into the resulting site. This allows theme creators to ship a default `/assets/styles.scss` file which their layouts can depend on as `/assets/styles.css`. +Any file in `/assets` will be copied over to the user's site upon build unless they have a file with the same relative path. You can ship any kind of asset here: SCSS, an image, a webfont, etc. These files behave just like pages and static files in Jekyll: + +* If the file has [YAML front matter](../docs/frontmatter/) at the top, it will be rendered. +* If the file does not have YAML front matter, it will simply be copied over into the resulting site. + +This allows theme creators to ship a default `/assets/styles.scss` file which their layouts can depend on as `/assets/styles.css`. All files in `/assets` will be output into the compiled site in the `/assets` folder just as you'd expect from using Jekyll on your sites. ### Stylesheets -Your theme's stylesheets should be placed in your theme's `/_sass` folder, again, just as you would when authoring a Jekyll site. Your theme's styles can be included in the user's stylesheet using the `@import` directive. +Your theme's stylesheets should be placed in your theme's `_sass` folder, again, just as you would when authoring a Jekyll site. + +``` + _sass +├── jekyll-theme-my-awesome-theme.scss +``` + +Your theme's styles can be included in the user's stylesheet using the `@import` directive. + +```css +{% raw %}@import "{{ site.theme }}";{% endraw %} +``` ### Documenting your theme From 190ea160e50b0e6427212795bc5d38ee7c53075e Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Mon, 26 Dec 2016 20:40:07 -0800 Subject: [PATCH 043/207] Made updates as requested by reviewers Made requested updates. --- docs/_docs/quickstart.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index c2d0e79d..3a57ef87 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -22,6 +22,8 @@ If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGem # Now browse to http://localhost:4000 ``` +## About bundler + `gem install jekyll bundler` installs the [jekyll](https://rubygems.org/gems/jekyll/) and [bundler](https://rubygems.org/gems/bundler) gems through [RubyGems](https://rubygems.org/). You need only to install the gems one time — not every time you create a new Jekyll project. Here are some additional details: * `bundler` is a gem that manages other Ruby gems. It makes sure your gems and gem versions are compatible, and that you have all necessary dependencies each gem requires. @@ -29,12 +31,14 @@ If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGem * When you run `bundle exec jekyll serve`, Bundler uses the gems and versions as specified in `Gemfile.lock` to ensure your Jekyll site builds with no compatibility or dependency conflicts. +## Jekyll new options + `jekyll new ` installs a new Jekyll site at the path specified (relative to current directory). In this case, Jekyll will be installed in a directory called `myblog`. Here are some additional details: * To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. * `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) -* By default, Jekyll installs a gem-based theme called [Minima](https://github.com/jekyll/minima). With gem-based themes, some of the theme directories and files are stored in the gem, hidden from view in your Jekyll project. To better understand themes, see [Themes](../themes). +* By default, the Jekyll site installed by `jekyll new` uses a gem-based theme called [Minima](https://github.com/jekyll/minima). With [gem-based themes](../themes), some of the directories and files are stored in the theme-gem, hidden from your immediate view. ## Next steps -Building the default theme is just the first step. The real magic happens when you start creating blog posts, using the front matter to control templates and layouts, and taking advantage of all the awesome configuration options Jekyll makes available. +Building a Jekyll site with the default theme is just the first step. The real magic happens when you start creating blog posts, using the front matter to control templates and layouts, and taking advantage of all the awesome configuration options Jekyll makes available. From f18363ea1383cb6b2791464c44cb06f7b4020212 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Tue, 27 Dec 2016 11:03:23 -0800 Subject: [PATCH 044/207] Updated to remove spacing from include variables It turns out Liquid throws an error when you write `{% if {{ include.url }} %}` instead of `{% if {{include.url}} %}`. I updated the examples here to omit the spacing. To avoid inconsistency, I just omitted the spacing from all curly braces. Also added a note explaining the issue and put the blame on Liquid. --- docs/_docs/includes.md | 46 ++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/docs/_docs/includes.md b/docs/_docs/includes.md index 3a0b819d..1a60ce0d 100644 --- a/docs/_docs/includes.md +++ b/docs/_docs/includes.md @@ -32,7 +32,7 @@ such as variables. ### Using variables names for the include file -The name of the file you want to embed can be specified as a variable instead of an actual file name. For example, suppose you defined a variable in your page's frontmatter like this: +The name of the file you want to embed can be specified as a variable instead of an actual file name. For example, suppose you defined a variable in your page's front matter like this: ```yaml --- @@ -44,7 +44,7 @@ my_variable: footer_company_a.html You could then reference that variable in your include: ```liquid -{% raw %}{% include {{ page.my_variable }} %}{% endraw %} +{% raw %}{% include {{page.my_variable}} %}{% endraw %} ``` In this example, the include would insert the file `footer_company_a.html` from the `_includes/footer_company_a.html` directory. @@ -56,17 +56,17 @@ You can also pass parameters to an include. For example, suppose you have a file ```liquid {% raw %}{% endraw %} ``` -The `{% raw %}{{ include.content }}{% endraw %}` is a parameter gets populated when you call the include and specify a value for that parameter, like this: +The `{% raw %}{{include.content}}{% endraw %}` is a parameter that gets populated when you call the include and specify a value for that parameter, like this: ```liquid {% raw %}{% include note.html content="This is my sample note." %} {% endraw %} ``` -The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{ include.content }}`{% endraw %} parameter. +The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{include.content}}`{% endraw %} parameter. Passing parameters to includes is especially helpful when you want to hide away complex formatting from your Markdown content. @@ -85,10 +85,10 @@ You could templatize this content in your include and make each value available ```liquid {% raw %}
- - {{ include.alt }} -
{{ include.caption }}
+
+ {{include.alt}} +
{{include.caption}}
{% endraw %} ``` @@ -104,17 +104,17 @@ You could also use `if` tags to safeguard scenarios where either the parameter i ```liquid {% raw %}
- {% if {{ include.url }} %}{% endif %} - {{ include.alt }}{% if {{ include.url }} %}{% endif %} - {% if {{ include.caption }} %} -
{{ include.caption }}
+ {% if {{include.url}} %}{% endif %} + {{include.alt}}{% if {{include.url}} %}{% endif %} + {% if {{include.caption}} %} +
{{include.caption}}
{% endif %}
{% endraw %} ``` -In this example, `{% raw %}if {{ include.url }}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). +In this example, `{% raw %}if {{include.url}}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). Here's an example that passes all the parameters to this include (the include file is named `image.html`): @@ -130,17 +130,19 @@ You can create includes that act as templates for a variety of uses — inse However, note that you should avoid using too many includes, as this will slow down the build time of your site. For example, don't use includes every time you insert an image. (The above technique shows a use case for special images.) +Additionally, if you have a include variable inside an `if` statement, such as `{% raw %}{% if {{include.url}} %}{% endraw %}`, don't use spaces inside the curly braces. For example, avoid this syntax: `{% raw %}{% if {{ include.url }} %}{% endraw %}`. Liquid will consider this extra spacing an error. (Outside of `if` statements, the spacing for include variables doesn't matter.) + ### Passing parameter variables to includes -Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{ site.product_name }}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) +Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{site.product_name}}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) -The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{ site.product_name }} is now available."`{% endraw %} +The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{site.product_name}} is now available."`{% endraw %} If you want to include this variable in your parameter that you pass to an include, you need to store the entire parameter as a variable before passing it to the include. You can use `capture` tags to create the variable: ```liquid {% raw %}{% capture download_note %}The latest version of -{{ site.product_name }} is now available.{% endcapture %}{% endraw %} +{{site.product_name}} is now available.{% endcapture %}{% endraw %} ``` Then pass this captured variable into the parameter for the include. Omit the quotation marks around the parameter content because it's no longer a string (it's a variable): @@ -168,9 +170,9 @@ Here's an example. In the `_data` folder, suppose you have a YAML file called `p In the `_includes` folder, assume you have a file called `spotlight.html` with this code: ```liquid -{% raw %}{% for person in {{ include.participants }} %} +{% raw %}{% for person in {{include.participants}} %} {% if person.login_age == "new" %} -{{ person.name }} +{{person.name}} {% endif %} {% endfor %}{% endraw %} ``` @@ -181,4 +183,4 @@ Now when you insert the `spotlight.html` include file, you can submit the YAML f {% raw %}{% include spotlight.html participants=site.data.profiles %}{% endraw %} ``` -In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{ include.participants }}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. +In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{include.participants}}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. From 56ae6ed571aec6f10aefae44442d879261f31cc8 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Tue, 27 Dec 2016 21:39:56 -0800 Subject: [PATCH 045/207] Removed erroneous liquid code, added back spacing - removed erroneous liquid code with conditional include parameters - added back spacing in {{ }} tags --- docs/_docs/includes.md | 52 ++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 35 deletions(-) diff --git a/docs/_docs/includes.md b/docs/_docs/includes.md index 1a60ce0d..94c56894 100644 --- a/docs/_docs/includes.md +++ b/docs/_docs/includes.md @@ -44,7 +44,7 @@ my_variable: footer_company_a.html You could then reference that variable in your include: ```liquid -{% raw %}{% include {{page.my_variable}} %}{% endraw %} +{% raw %}{% include {{ page.my_variable }} %}{% endraw %} ``` In this example, the include would insert the file `footer_company_a.html` from the `_includes/footer_company_a.html` directory. @@ -56,21 +56,21 @@ You can also pass parameters to an include. For example, suppose you have a file ```liquid {% raw %}{% endraw %} ``` -The `{% raw %}{{include.content}}{% endraw %}` is a parameter that gets populated when you call the include and specify a value for that parameter, like this: +The `{% raw %}{{ include.content }}{% endraw %}` is a parameter that gets populated when you call the include and specify a value for that parameter, like this: ```liquid {% raw %}{% include note.html content="This is my sample note." %} {% endraw %} ``` -The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{include.content}}`{% endraw %} parameter. +The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{ include.content }}`{% endraw %} parameter. Passing parameters to includes is especially helpful when you want to hide away complex formatting from your Markdown content. -For example, suppose you have a special image syntax with complex formatting, and you don't want your authors to remember the complex formatting. As a result, you decide to simplify the formatting by using an include with parameters. Here's an example of the special image syntax you want to populate with an include: +For example, suppose you have a special image syntax with complex formatting, and you don't want your authors to remember the complex formatting. As a result, you decide to simplify the formatting by using an include with parameters. Here's an example of the special image syntax you might want to populate with an include: ```html
@@ -85,10 +85,10 @@ You could templatize this content in your include and make each value available ```liquid {% raw %}
- - {{include.alt}} -
{{include.caption}}
+
+ {{ include.alt }} +
{{ include.caption }}
{% endraw %} ``` @@ -100,22 +100,6 @@ This include contains 5 parameters: * `alt` * `caption` -You could also use `if` tags to safeguard scenarios where either the parameter is optional or where the author doesn't include the parameter: - -```liquid -{% raw %}
- {% if {{include.url}} %}{% endif %} - {{include.alt}}{% if {{include.url}} %}{% endif %} - {% if {{include.caption}} %} -
{{include.caption}}
- {% endif %} -
{% endraw %} -``` - -In this example, `{% raw %}if {{include.url}}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). - Here's an example that passes all the parameters to this include (the include file is named `image.html`): ```liquid @@ -126,23 +110,21 @@ caption="This is the Jekyll logo." %} {% endraw %} The result is the original HTML code shown earlier. -You can create includes that act as templates for a variety of uses — inserting audio or video clips, alerts, special formatting, and more. +To safeguard situations where users don't supply a value for the parameter, you can use [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). -However, note that you should avoid using too many includes, as this will slow down the build time of your site. For example, don't use includes every time you insert an image. (The above technique shows a use case for special images.) - -Additionally, if you have a include variable inside an `if` statement, such as `{% raw %}{% if {{include.url}} %}{% endraw %}`, don't use spaces inside the curly braces. For example, avoid this syntax: `{% raw %}{% if {{ include.url }} %}{% endraw %}`. Liquid will consider this extra spacing an error. (Outside of `if` statements, the spacing for include variables doesn't matter.) +Overall, you can create includes that act as templates for a variety of uses — inserting audio or video clips, alerts, special formatting, and more. However, note that you should avoid using too many includes, as this will slow down the build time of your site. For example, don't use includes every time you insert an image. (The above technique shows a use case for special images.) ### Passing parameter variables to includes -Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{site.product_name}}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) +Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{ site.product_name }}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) -The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{site.product_name}} is now available."`{% endraw %} +The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{ site.product_name }} is now available."`{% endraw %} If you want to include this variable in your parameter that you pass to an include, you need to store the entire parameter as a variable before passing it to the include. You can use `capture` tags to create the variable: ```liquid {% raw %}{% capture download_note %}The latest version of -{{site.product_name}} is now available.{% endcapture %}{% endraw %} +{{ site.product_name }} is now available.{% endcapture %}{% endraw %} ``` Then pass this captured variable into the parameter for the include. Omit the quotation marks around the parameter content because it's no longer a string (it's a variable): @@ -170,9 +152,9 @@ Here's an example. In the `_data` folder, suppose you have a YAML file called `p In the `_includes` folder, assume you have a file called `spotlight.html` with this code: ```liquid -{% raw %}{% for person in {{include.participants}} %} +{% raw %}{% for person in {{ include.participants }} %} {% if person.login_age == "new" %} -{{person.name}} +{{ person.name }} {% endif %} {% endfor %}{% endraw %} ``` @@ -183,4 +165,4 @@ Now when you insert the `spotlight.html` include file, you can submit the YAML f {% raw %}{% include spotlight.html participants=site.data.profiles %}{% endraw %} ``` -In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{include.participants}}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. +In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{ include.participants }}`{% endraw %} in the include file, and the Liquid logic processes. The result will be `Jane Doe`. From c31716194277197accd8aa0798996af6f2318be8 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Wed, 28 Dec 2016 08:15:20 -0800 Subject: [PATCH 046/207] fixed space --- docs/_docs/themes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index 011ead6e..0e57df9c 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -98,7 +98,7 @@ To install a gem-based theme: bundle install ``` -3. Add the following to your site's `_config.yml` to activate the theme: +3. Add the following to your site's `_config.yml` to activate the theme: ```sh theme: my-awesome-jekyll-theme From adc619ca6c418fe90b0d242309db39224bd1a94a Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Wed, 28 Dec 2016 15:21:57 -0800 Subject: [PATCH 047/207] added info about jekyll new --help --- docs/_docs/quickstart.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index 3a57ef87..8c509fab 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -22,7 +22,7 @@ If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGem # Now browse to http://localhost:4000 ``` -## About bundler +## About Bundler `gem install jekyll bundler` installs the [jekyll](https://rubygems.org/gems/jekyll/) and [bundler](https://rubygems.org/gems/bundler) gems through [RubyGems](https://rubygems.org/). You need only to install the gems one time — not every time you create a new Jekyll project. Here are some additional details: @@ -31,13 +31,14 @@ If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGem * When you run `bundle exec jekyll serve`, Bundler uses the gems and versions as specified in `Gemfile.lock` to ensure your Jekyll site builds with no compatibility or dependency conflicts. -## Jekyll new options +## Options for creating a new site with Jekyll `jekyll new ` installs a new Jekyll site at the path specified (relative to current directory). In this case, Jekyll will be installed in a directory called `myblog`. Here are some additional details: * To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. * `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) * By default, the Jekyll site installed by `jekyll new` uses a gem-based theme called [Minima](https://github.com/jekyll/minima). With [gem-based themes](../themes), some of the directories and files are stored in the theme-gem, hidden from your immediate view. +* To learn about other parameters you can include with `jekyll new`, type ` jekyll new --help`. ## Next steps From 1bc82b9c8a28e2170e3ac256dde01b4cf265e016 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 28 Dec 2016 22:54:37 -0700 Subject: [PATCH 048/207] Fix script/stackprof & add some GC stats. When running 'script/stackprof object', I noticed that it would be helpful to see GC information. It appears we create a lot of junk -- a source of optimization if we decide to go down that path. An average Jekyll build doesn't run a GC, but auto-regeneration likely would eventually require a GC run and it would be interesting to see if we can reduce how much we throw away with each call to 'site.process'. --- script/stackprof | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/script/stackprof b/script/stackprof index 1c833142..f78f11aa 100755 --- a/script/stackprof +++ b/script/stackprof @@ -10,13 +10,17 @@ esac export BENCHMARK=true command -v stackprof > /dev/null || script/bootstrap -TEST_SCRIPT="Jekyll::Commands::Build.process({'source' => 'site'})" +TEST_SCRIPT="Jekyll::Commands::Build.process({'source' => 'docs'})" PROF_OUTPUT_FILE=tmp/stackprof-${STACKPROF_MODE}-$(date +%Y%m%d%H%M).dump +GC_BEFORE="puts 'GC Stats:'; puts JSON.pretty_generate(GC.stat); GC.disable" +GC_AFTER="puts 'GC Stats:'; GC.start(full_mark: true, immediate_sweep: false); puts JSON.pretty_generate(GC.stat);" + echo Stackprof Mode: $STACKPROF_MODE test -f "$PROF_OUTPUT_FILE" || { - bundle exec ruby -r./lib/jekyll -rstackprof \ - -e "StackProf.run(mode: :${STACKPROF_MODE}, interval: 100, out: '${PROF_OUTPUT_FILE}') { ${TEST_SCRIPT} }" + bundle exec ruby -r./lib/jekyll -rstackprof -rjson \ + -e "StackProf.run(mode: :${STACKPROF_MODE}, interval: 100, out: '${PROF_OUTPUT_FILE}') { ${GC_BEFORE}; ${TEST_SCRIPT}; ${GC_AFTER}; }" } -bundle exec stackprof $PROF_OUTPUT_FILE $@ +set -x +bundle exec stackprof $PROF_OUTPUT_FILE $@ --sort-total From 2c8b826460e2c4b6cc4c0b9a3ef556c9e358622d Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Wed, 28 Dec 2016 23:00:06 -0800 Subject: [PATCH 049/207] made requested change **includes** --> *includes* --- docs/_docs/templates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/templates.md b/docs/_docs/templates.md index b6c1ef6f..32050813 100644 --- a/docs/_docs/templates.md +++ b/docs/_docs/templates.md @@ -427,7 +427,7 @@ If you have small page snippets that you want to include in multiple places on y {% raw %}{% include footer.html %}{% endraw %} ``` -Jekyll expects all **include files** to be placed in an `_includes` directory at the root of your source directory. In the above example, this will embed the contents of `_includes/footer.html` into the calling file. +Jekyll expects all *include files* to be placed in an `_includes` directory at the root of your source directory. In the above example, this will embed the contents of `_includes/footer.html` into the calling file. For more advanced information on using includes, see [Includes](../includes). From b1b0d00c5a0dfd31c3991bde976b9d10341abfde Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Wed, 28 Dec 2016 23:42:37 -0800 Subject: [PATCH 050/207] made updates - made updates from Parkr's review - update to Extensionless permalinks section - update to note about not using built-in perm styles in front matter - update for readability in places --- docs/_docs/permalinks.md | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/docs/_docs/permalinks.md b/docs/_docs/permalinks.md index d41d6162..b8fd5ec6 100644 --- a/docs/_docs/permalinks.md +++ b/docs/_docs/permalinks.md @@ -4,12 +4,11 @@ title: Permalinks permalink: /docs/permalinks/ --- -Jekyll supports a flexible way to build the permalinks for your pages, posts, and collections. A permalink is the URL for the page, post, or collection (excluding the domain name or directory folder). +Permalinks refer to the URLs (excluding the domain name or directory folder) for your pages, posts, or collections. +Jekyll supports a flexible way to build permalinks, allowing you to leverage various template variables or choose built-in permalink styles (such as `date`) that automatically use a template-variable pattern. You construct permalinks by creating a template URL where dynamic elements are represented by colon-prefixed keywords. The default template permalink is `/:categories/:year/:month/:day/:title.html`. Each of the colon-prefixed keywords is a template variable. -You’re free to construct your own permalink style using the available template variables or choose one of the built-in permalink styles (such as `date`) that automatically use a template-variable pattern. - ## Where to configure permalinks You can configure your site's permalinks through the [Configuration]({% link _docs/configuration.md %}) file or in the [Front Matter]({% link _docs/frontmatter.md %}) for each post, page, or collection. @@ -41,21 +40,14 @@ permalink: /mypageurl/ Even if your configuration file specifies the `date` style, the URL for this page would be `http://somedomain.com/mypageurl/`. -{% comment %}this note needs clarification -
-
Specifying permalinks through the YAML Front Matter
-

Built-in permalink styles are not recognized in YAML Front Matter. As a result, permalink: pretty will not work, but the equivalent /:categories/:year/:month/:day/:title/ using template variables will.

-
-{% endcomment %} - -When you use permalinks that omit the `.html` file extension (called "clean URLs") Jekyll builds the file as index.html placed inside a folder with the page's name. For example: +When you use permalinks that omit the `.html` file extension (called "pretty URLs") Jekyll builds the file as index.html placed inside a folder with the page's name. For example: ``` ├── mypageurl │   └── index.html ``` -Servers automatically load the index.html file inside of any folder, so users can simply navigate to `http://somedomain.com/mypageurl` to get to `mypageurl/index.html`. +With a URL such as `/mypageurl/`, servers automatically load the index.html file inside the folder, so users can simply navigate to `http://somedomain.com/mypageurl/` to get to `mypageurl/index.html`. ## Template variables for permalinks {#template-variables} @@ -241,6 +233,11 @@ Although you can specify a custom permalink pattern using [template variables](# Rather than typing `permalink: /:categories/:year/:month/:day/:title/`, you can just type `permalink: date`. +
+
Specifying permalinks through the YAML Front Matter
+

Built-in permalink styles are not recognized in YAML Front Matter. As a result, permalink: pretty will not work.

+
+ ## Permalink style examples with posts {#permalink-style-examples} Here are a few examples to clarify how permalink styles get applied with posts. @@ -291,7 +288,7 @@ Given a post named: `/2009-04-29-slap-chop.md`

/:year/:month/:title

-

See extensionless permalinks for details.

+

See Extensionless permalinks with no trailing slashes for details.

/2009/04/slap-chop

@@ -317,13 +314,13 @@ The path to the post or page in the built site differs for posts, pages, and col ### Posts -No matter how many subfolders you organize your posts into inside the `_posts` folder, all posts are pulled out of those subfolders and flattened into the `_site`'s root directory upon build. +The subfolders into which you may have organized your posts inside the `_posts` directory will not be part of the permalink. If you use a permalink style that omits the `.html` file extension, each post is rendered as an `index.html` file inside a folder with the post's name (for example, `categoryname/2016/12/01/mypostname/index.html`). ### Pages -Unlike posts, pages are *not* removed from their subfolder directories when you build your site. Pages remain in the same folder structure in which you organized your pages in the source directory, except that the structure is now mirrored in `_site`. (The only exception is if your page has a `permalink` declared its front matter — in that case, the structure honors the permalink setting instead of the source folder structure.) +Unlike posts, pages by default mimic the source directory structure exactly. (The only exception is if your page has a `permalink` declared its front matter — in that case, the structure honors the permalink setting instead of the source folder structure.) As with posts, if you use a permalink style that omits the `.html` file extension, each page is rendered as an `index.html` file inserted inside a folder with the page's name (for example, `mypage/index.html`). @@ -335,7 +332,7 @@ Collections have their own way of setting permalinks. Additionally, collections ## Flattening pages in \_site on build -If you want to flatten your pages (pull them out of subfolders) in the `_site` directory when your site builds (similar to posts), add the permalink property of each page's front matter: +If you want to flatten your pages (pull them out of subfolders) in the `_site` directory when your site builds (similar to posts), add the `permalink` property to the front matter of each page, with no path specified: ``` --- @@ -346,7 +343,7 @@ permalink: mypageurl.html ## Extensionless permalinks with no trailing slashes {#extensionless-permalinks} -Jekyll supports permalinks that contain neither a trailing slash nor a file extension, but this requires additional support from the web server to properly serve. When using extensionless permalinks, output files written to disk will still have the proper file extension (typically `.html`), so the web server must be able to map requests without file extensions to these files. +Jekyll supports permalinks that contain neither a trailing slash nor a file extension, but this requires additional support from the web server to properly serve. When using these types of permalinks, output files written to disk will still have the proper file extension (typically `.html`), so the web server must be able to map requests without file extensions to these files. Both [GitHub Pages](../github-pages/) and the Jekyll's built-in WEBrick server handle these requests properly without any additional work. @@ -368,4 +365,4 @@ try_files $uri $uri.html $uri/ =404; ## Linking without regard to permalink styles -You can create links in your topics to other posts, pages, or collection items in a way that is valid no matter what permalink configuration you choose. By using the `link` tag, if you change your permalinks, your links won't break. See [Linking to pages](../templates#link) for more details. +You can create links in your topics to other posts, pages, or collection items in a way that is valid no matter what permalink configuration you choose. By using the `link` tag, if you change your permalinks, your links won't break. See [Linking to pages](../templates#link) in Templates for more details. From 391bf5d33c09c6f7584b9bc470877e26bda29ab4 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Wed, 28 Dec 2016 23:46:25 -0800 Subject: [PATCH 051/207] made fixes made requested fixes --- docs/_docs/permalinks.md | 326 ++++----------------------------------- 1 file changed, 27 insertions(+), 299 deletions(-) diff --git a/docs/_docs/permalinks.md b/docs/_docs/permalinks.md index 31eeb30b..d15a9eb1 100644 --- a/docs/_docs/permalinks.md +++ b/docs/_docs/permalinks.md @@ -1,317 +1,45 @@ --- layout: docs -title: Permalinks -permalink: /docs/permalinks/ +title: Quick-start guide +permalink: /docs/quickstart/ --- -Jekyll supports a flexible way to build your site’s URLs. You can specify the -permalinks for your site through the [Configuration](../configuration/) or in -the [YAML Front Matter](../frontmatter/) for each post. You’re free to choose -one of the built-in styles to create your links or craft your own. The default -style is `date`. +If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGems](https://rubygems.org/pages/download) installed (see Jekyll's [requirements](/docs/installation/#requirements/)), you can create a new Jekyll site by doing the following: -Permalinks are constructed by creating a template URL where dynamic elements -are represented by colon-prefixed keywords. For example, the default `date` -permalink is defined according to the format `/:categories/:year/:month/:day/:title.html`. +```sh +# Install Jekyll and Bundler gems through RubyGems +~ $ gem install jekyll bundler -
-
Specifying permalinks through the YAML Front Matter
-

- Built-in permalink styles are not recognized in YAML Front Matter. So - permalink: pretty will not work, but the equivalent - /:categories/:year/:month/:day/:title/ - using template variables will. -

-
+# Create a new Jekyll site at ./myblog +~ $ jekyll new myblog -## Template variables +# Change into your new directory +~ $ cd myblog -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VariableDescription
-

year

-
-

Year from the Post’s filename

-
-

month

-
-

Month from the Post’s filename

-
-

i_month

-
-

Month from the Post’s filename without leading zeros.

-
-

day

-
-

Day from the Post’s filename

-
-

i_day

-
-

Day from the Post’s filename without leading zeros.

-
-

short_year

-
-

Year from the Post’s filename without the century.

-
-

hour

-
-

- Hour of the day, 24-hour clock, zero-padded from the post’s date front matter. (00..23) -

-
-

minute

-
-

- Minute of the hour from the post’s date front matter. (00..59) -

-
-

second

-
-

- Second of the minute from the post’s date front matter. (00..59) -

-
-

title

-
-

- Title from the document’s filename. May be overridden via - the document’s slug YAML front matter. -

-
-

slug

-
-

- Slugified title from the document’s filename ( any character - except numbers and letters is replaced as hyphen ). May be - overridden via the document’s slug YAML front matter. -

-
-

categories

-
-

- The specified categories for this Post. If a post has multiple - categories, Jekyll will create a hierarchy (e.g. /category1/category2). - Also Jekyll automatically parses out double slashes in the URLs, - so if no categories are present, it will ignore this. -

-
-
+# Build the site on the preview server +~/myblog $ bundle exec jekyll serve -## Built-in permalink styles +# Now browse to http://localhost:4000 +``` -While you can specify a custom permalink style using [template variables](#template-variables), -Jekyll also provides the following built-in styles for convenience. +## About Bundler -
- - - - - - - - - - - - - - - - - - - - - - - - - -
Permalink StyleURL Template
-

date

-
-

/:categories/:year/:month/:day/:title.html

-
-

pretty

-
-

/:categories/:year/:month/:day/:title/

-
-

ordinal

-
-

/:categories/:year/:y_day/:title.html

-
-

none

-
-

/:categories/:title.html

-
-
+`gem install jekyll bundler` installs the [jekyll](https://rubygems.org/gems/jekyll/) and [bundler](https://rubygems.org/gems/bundler) gems through [RubyGems](https://rubygems.org/). You need only to install the gems one time — not every time you create a new Jekyll project. Here are some additional details: -## Pages and collections +* `bundler` is a gem that manages other Ruby gems. It makes sure your gems and gem versions are compatible, and that you have all necessary dependencies each gem requires. +* The `Gemfile` and `Gemfile.lock` files inform Bundler about the gem requirements in your site. If your site doesn't have these Gemfiles, you can omit `bundle exec` and just run `jekyll serve`. -The `permalink` configuration setting specifies the permalink style used for -posts. Pages and collections each have their own default permalink style; the -default style for pages is `/:path/:basename` and the default for collections is -`/:collection/:path`. +* When you run `bundle exec jekyll serve`, Bundler uses the gems and versions as specified in `Gemfile.lock` to ensure your Jekyll site builds with no compatibility or dependency conflicts. -These styles are modified to match the suffix style specified in the post -permalink setting. For example, a permalink style of `pretty`, which contains a -trailing slash, will update page permalinks to also contain a trailing slash: -`/:path/:basename/`. A permalink style of `date`, which contains a trailing -file extension, will update page permalinks to also contain a file extension: -`/:path/:basename:output_ext`. The same is true for any custom permalink style. +## Options for creating a new site with Jekyll -The permalink for an individual page or collection document can always be -overridden in the [YAML Front Matter](../frontmatter/) for the page or document. -Additionally, permalinks for a given collection can be customized [in the -collections configuration](../collections/). +`jekyll new ` installs a new Jekyll site at the path specified (relative to current directory). In this case, Jekyll will be installed in a directory called `myblog`. Here are some additional details: -## Permalink style examples +* To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. +* `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) +* By default, the Jekyll site installed by `jekyll new` uses a gem-based theme called [Minima](https://github.com/jekyll/minima). With [gem-based themes](../themes), some of the directories and files are stored in the theme-gem, hidden from your immediate view. +* To learn about other parameters you can include with `jekyll new`, type `jekyll new --help`. -Given a post named: `/2009-04-29-slap-chop.md` +## Next steps -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
URL TemplateResulting Permalink URL
-

None specified, or permalink: date

-
-

/2009/04/29/slap-chop.html

-
-

pretty

-
-

/2009/04/29/slap-chop/

-
-

/:month-:day-:year/:title.html

-
-

/04-29-2009/slap-chop.html

-
-

/blog/:year/:month/:day/:title/

-
-

/blog/2009/04/29/slap-chop/

-
-

/:year/:month/:title

-

See extensionless permalinks for details.

-
-

/2009/04/slap-chop

-
-
- -## Extensionless permalinks - -Jekyll supports permalinks that contain neither a trailing slash nor a file -extension, but this requires additional support from the web server to properly -serve. When using extensionless permalinks, output files written to disk will -still have the proper file extension (typically `.html`), so the web server -must be able to map requests without file extensions to these files. - -Both [GitHub Pages](../github-pages/) and the Jekyll's built-in WEBrick server -handle these requests properly without any additional work. - -### Apache - -The Apache web server has very extensive support for content negotiation and can -handle extensionless URLs by setting the [multiviews][] option in your -`httpd.conf` or `.htaccess` file: - -[multiviews]: https://httpd.apache.org/docs/current/content-negotiation.html#multiviews - -{% highlight apache %} -Options +MultiViews -{% endhighlight %} - -### Nginx - -The [try_files][] directive allows you to specify a list of files to search for -to process a request. The following configuration will instruct nginx to search -for a file with an `.html` extension if an exact match for the requested URI is -not found. - -[try_files]: http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files - -{% highlight nginx %} -try_files $uri $uri.html $uri/ =404; -{% endhighlight %} +Building a Jekyll site with the default theme is just the first step. The real magic happens when you start creating blog posts, using the front matter to control templates and layouts, and taking advantage of all the awesome configuration options Jekyll makes available. From 90da02b1fcde20895d6d4b881ad38eed1d1888fd Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Thu, 29 Dec 2016 00:15:52 -0800 Subject: [PATCH 052/207] made updates from Parkr's review - most prominent update is example of how to override minima default --- docs/_docs/themes.md | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index 0e57df9c..8e937b61 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -36,7 +36,7 @@ The goal of gem-based themes is to allow you to get all the benefits of a robust Jekyll themes set default layouts, includes, and stylesheets. However, you can override any of the theme defaults with your own site content. -For example, if your selected theme has a `page` layout, you can override the theme's layout by creating your own `page` layout in the `_layouts` directory (for example, `_layouts/page.html`). +For example, if your selected theme has a `page` layout, you can override the theme's layout by creating your own `page` layout in the `_layouts` directory (that is, `_layouts/page.html`). Jekyll will look first to your site's content before looking to the theme's defaults for any requested file in the following folders: @@ -52,7 +52,7 @@ To locate theme's files on your computer: 1. Run `bundle show` followed by the name of the theme's gem, e.g., `bundle show minima` for default Jekyll's theme. - The location of the theme gem is returned. For example, minima is located in `/usr/local/lib/ruby/gems/2.3.0/gems/minima-2.1.0` on a Mac. + The location of the theme gem is returned. For example, minima is located in `/usr/local/lib/ruby/gems/2.3.0/gems/minima-2.1.0` when using the system Ruby installation on a Mac. 2. Change to the directory's location and open the directory in Finder or Explorer: @@ -62,9 +62,39 @@ To locate theme's files on your computer: # for Windows, use "explorer ." ``` - A Finder or Explorer window opens showing the theme's files and directories. + A Finder or Explorer window opens showing the theme's files and directories. The Minima theme gem contains these files: + + ``` + ├── LICENSE.txt + ├── README.md + ├── _includes + │   ├── disqus_comments.html + │   ├── footer.html + │   ├── google-analytics.html + │   ├── head.html + │   ├── header.html + │   ├── icon-github.html + │   ├── icon-github.svg + │   ├── icon-twitter.html + │   └── icon-twitter.svg + ├── _layouts + │   ├── default.html + │   ├── home.html + │   ├── page.html + │   └── post.html + ├── _sass + │   ├── minima + │   │   ├── _base.scss + │   │   ├── _layout.scss + │   │   └── _syntax-highlighting.scss + │   └── minima.scss + └── assets + └── main.scss + ``` With a clear understanding of the theme's files, you can now override any theme file by creating a similarly named file in your Jekyll site directory. + + Let's say you want to override Minima's footer. In your Jekyll site, create an `_includes` folder and add a file in it called `footer.html`. Jekyll will now use your site's `footer.html` file instead of the `footer.html` file from the Minima theme gem. ## Converting gem-based themes to regular themes @@ -82,7 +112,7 @@ Now `bundle update` will no longer get updates for the theme gem. The `jekyll new ` command isn't the only way to create a new Jekyll site with a gem-based theme. You can also find gem-based themes online and incorporate them into your Jekyll project. -For example, search for [jekyll-theme on RubyGems](https://rubygems.org/search?utf8=%E2%9C%93&query=jekyll-theme) to find other gem-based themes. (Note that not all themes are using `jekyll-theme` as a convention in the theme name.) +For example, search for [jekyll theme on RubyGems](https://rubygems.org/search?utf8=%E2%9C%93&query=jekyll-theme) to find other gem-based themes. (Note that not all themes are using `jekyll-theme` as a convention in the theme name.) To install a gem-based theme: @@ -98,7 +128,7 @@ To install a gem-based theme: bundle install ``` -3. Add the following to your site's `_config.yml` to activate the theme: +3. Add the following to your site's `_config.yml` to activate the theme: ```sh theme: my-awesome-jekyll-theme @@ -113,7 +143,7 @@ To install a gem-based theme: You can have multiple themes listed in your site's `Gemfile`, but only one theme can be selected in your site's `_config.yml`. {: .note .info } -If you're publishing your Jekyll site on [Github Pages](https://pages.github.com/), note that Github Pages supports only some gem-based themes. See [Supported Themes](https://pages.github.com/themes/) in Github's documentation to see which themes are supported. +If you're publishing your Jekyll site on [GitHub Pages](https://pages.github.com/), note that GitHub Pages supports only some gem-based themes. See [Supported Themes](https://pages.github.com/themes/) in GitHub's documentation to see which themes are supported. ## Creating a gem-based theme From caf5c00842f600f643d12394c8bb2aa3b53a15b2 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Thu, 29 Dec 2016 00:29:45 -0800 Subject: [PATCH 053/207] made requested updates --- docs/_docs/collections.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/_docs/collections.md b/docs/_docs/collections.md index ee0747be..7c606177 100644 --- a/docs/_docs/collections.md +++ b/docs/_docs/collections.md @@ -96,7 +96,7 @@ You can customize the [Permalinks](../permalinks/) for your collection's documen collections: my_collection: output: true - permalink: /awesome/:path/:title.output_ext + permalink: /awesome/:path/:title.:output_ext ``` In this example, the collection documents will the have the URL of `awesome` followed by the path to the document and its file extension. @@ -237,11 +237,12 @@ Based on this scenario, here are a few permalink options. ### Collections -Each collection is accessible through the `site` variable. For example, if +Each collection is accessible as a field on the `site` variable. For example, if you want to access the `albums` collection found in `_albums`, you'd use -`site.albums`. Each collection is itself an array of documents -(for example, `site.albums` is an array of documents, much like `site.pages` and -`site.posts`). See below for how to access attributes of those documents. +`site.albums`. + +Each collection is itself an array of documents (e.g., `site.albums` is an array of documents, much like `site.pages` and +`site.posts`). See the table below for how to access attributes of those documents. The collections are also available under `site.collections`, with the metadata you specified in your `_config.yml` (if present) and the following information: From 6a2c7f271821af449ee3de4eb16ea72c47f949b0 Mon Sep 17 00:00:00 2001 From: Rob Crocombe Date: Thu, 29 Dec 2016 10:20:15 +0000 Subject: [PATCH 054/207] Add Jekyll-Post to plugins.md --- docs/_docs/plugins.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index cc1995ad..775dabbf 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -918,6 +918,7 @@ LESS.js files during generation. - [jekyll-data](https://github.com/ashmaroli/jekyll-data): Read data files within Jekyll Theme Gems. - [jekyll-pinboard](https://github.com/snaptortoise/jekyll-pinboard-plugin): Access your Pinboard bookmarks within your Jekyll theme. - [jekyll-migrate-permalink](https://github.com/mpchadwick/jekyll-migrate-permalink): Adds a `migrate-permalink` sub-command to help deal with side effects of changing your permalink. +- [Jekyll-Post](https://github.com/robcrocombe/jekyll-post): A CLI tool to easily draft, edit, and publish Jekyll posts. #### Editors From 240ea135760d7a5943b1bd5aaaf68b19c9248e0e Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Sun, 25 Dec 2016 20:44:35 -0800 Subject: [PATCH 055/207] Added new includes.md topic to docs Added new includes.md topic. See https://github.com/jekyll/jekyll/pull/5630 for more details on the update. @jekyll/documentation @DirtyF --- docs/_docs/includes.md | 175 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 docs/_docs/includes.md diff --git a/docs/_docs/includes.md b/docs/_docs/includes.md new file mode 100644 index 00000000..dceece77 --- /dev/null +++ b/docs/_docs/includes.md @@ -0,0 +1,175 @@ +--- +layout: docs +title: Includes +permalink: /docs/includes/ +--- + +The `include` tag allows you to include the content from another file stored in the `_includes` folder: + +```liquid +{% raw %}{% include footer.html %}{% endraw %} +``` + +Jekyll will look for the referenced file (in this case, `footer.html`) in the `_includes` directory at the root of your source directory and insert its contents. + +### Including files relative to another file + +You can choose to include file fragments relative to the current file by using the `include_relative` tag: + +```liquid +{% raw %}{% include_relative somedir/footer.html %}{% endraw %} +``` + +You won't need to place your included content within the `_includes` directory. Instead, +the inclusion is specifically relative to the file where the tag is being used. For example, +if `_posts/2014-09-03-my-file.markdown` uses the `include_relative` tag, the included file +must be within the `_posts` directory or one of its subdirectories. + +Note that you cannot use the `../` syntax to specify an include location that refers to a higher-level directory. + +All the other capabilities of the `include` tag are available to the `include_relative` tag, +such as variables. + +### Using variables names for the include file + +The name of the file you want to embed can be specified as a variable instead of an actual file name. For example, suppose you defined a variable in your page's frontmatter like this: + +```yaml +--- +title: My page +my_variable: footer_company_a.html +--- +``` + +You could then reference that variable in your include: + +```liquid +{% raw %}{% include {{page.my_variable}} %}{% endraw %} +``` + +In this example, the include would insert the file `footer_company_a.html` from the `_includes/footer_company_a.html` directory. + +### Passing parameters to includes + +You can also pass parameters to an include. For example, suppose you have a file called `note.html` in your `_includes` folder that contains this formatting: + +```liquid +{% raw %}{% endraw %} +``` + +The {% raw %}`{{include.content}}`{% endraw %} is a parameter gets populated when you call the include and specify a value for that parameter, like this: + +```liquid +{% raw %}{% include note.html content="This is my sample note." %} {% endraw %} +``` + +The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{include.content}}`{% endraw %} parameter. + +Passing parameters to includes is especially helpful when you want to hide away complex formatting from your Markdown content. + +For example, suppose you have a special image syntax with complex formatting, and you don't want your authors to remember the complex formatting. As a result, you decide to simplify the formatting by using an include with parameters. Here's an example of the special image syntax you want to populate with an include: + +```html +
Jekyll logo
+This is the Jekyll logo
+``` + +You could templatize this content in your include and make each value available as a parameter, like this: + +```liquid +{% raw %}
{{include.caption}} +
{% endraw %} +``` + +This include contains 5 parameters: + +* `url` +* `max-width` +* `file` +* `alt` +* `caption` + +You could also use `if` tags to safeguard scenarios where either the parameter is optional or where the author doesn't include the parameter: + +```liquid +{% raw %}
{% if {{include.url}} %} +{% endif %}{% if {{include.url}} %}{% endif %} +{% if {{include.caption}} %}
{{include.caption}} +
{% endif %}
{% endraw %} +``` + +In this example, `{% raw %}if {{include.url}}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). + +Here's an example that passes all the parameters to this include (the include file is named `image.html`): + +```liquid +{% raw %}{% include image.html url="http://jekyllrb.com" +max-width="200px" file="logo.png" alt="Jekyll logo" +caption="This is the Jekyll logo." %} {% endraw %} +``` + +The result is the original HTML code shown earlier. + +You can create includes that act as templates for a variety of uses — inserting audio or video clips, alerts, special formatting, and more. + +However, note that you should avoid using too many includes, as this will slow down the build time of your site. For example, don't use includes every time you insert an image. (The above technique shows a use case for special images.) + +### Passing parameter variables to includes + +Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{site.product_name}}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) + +The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{site.product_name}} is now available."`{% endraw %} + +If you want to include this variable in your parameter that you pass to an include, you need to store the entire parameter as a variable before passing it to the include. You can use `capture` tags to create the variable: + +```liquid +{% raw %}{% capture download_note %}The latest version of +{{site.product_name}} is now available.{% endcapture %}{% endraw %} +``` + +Then pass this captured variable into the parameter for the include. Omit the quotation marks around the parameter content because it's no longer a string (it's a variable): + +```liquid +{% raw %}{% include note.html content=download_note %}{% endraw %} +``` + +### Passing references to YAML files as parameter values + +Instead of passing string variables to the include, you can pass a reference to a YAML data file stored in the `_data` folder. + +Here's an example. In the `_data` folder, suppose you have a YAML file called `profiles.yml`. Its content looks like this: + +```yaml +- name: John Doe + login_age: old + image: johndoe.jpg + +- name: Jane Doe + login_age: new + image: janedoe.jpg +``` + +In the `_includes` folder, assume you have a file called `spotlight.html` with this code: + +```liquid +{% raw %}{% for person in {{include.participants}} %} +{% if person.login_age == "new" %} +{{person.name}} +{% endif %} +{% endfor %}{% endraw %} +``` + +Now when you insert the `spotlight.html` include file, you can submit the YAML file as a parameter: + +``` +{% raw %}{% include spotlight.html participants=site.data.profiles %}{% endraw %} +``` + +In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{include.participants}}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. From 8289b6131616dab2abfcc4925ea166d6e99af600 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Mon, 26 Dec 2016 18:28:27 -0800 Subject: [PATCH 056/207] made requested updates - made `{{ }}` formatting more readable by adding spacing. - added formatting to code samples to properly reflect line breaks for readability --- docs/_docs/includes.md | 57 ++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/docs/_docs/includes.md b/docs/_docs/includes.md index dceece77..3a0b819d 100644 --- a/docs/_docs/includes.md +++ b/docs/_docs/includes.md @@ -44,7 +44,7 @@ my_variable: footer_company_a.html You could then reference that variable in your include: ```liquid -{% raw %}{% include {{page.my_variable}} %}{% endraw %} +{% raw %}{% include {{ page.my_variable }} %}{% endraw %} ``` In this example, the include would insert the file `footer_company_a.html` from the `_includes/footer_company_a.html` directory. @@ -55,35 +55,41 @@ You can also pass parameters to an include. For example, suppose you have a file ```liquid {% raw %}{% endraw %} ``` -The {% raw %}`{{include.content}}`{% endraw %} is a parameter gets populated when you call the include and specify a value for that parameter, like this: +The `{% raw %}{{ include.content }}{% endraw %}` is a parameter gets populated when you call the include and specify a value for that parameter, like this: ```liquid {% raw %}{% include note.html content="This is my sample note." %} {% endraw %} ``` -The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{include.content}}`{% endraw %} parameter. +The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{ include.content }}`{% endraw %} parameter. Passing parameters to includes is especially helpful when you want to hide away complex formatting from your Markdown content. For example, suppose you have a special image syntax with complex formatting, and you don't want your authors to remember the complex formatting. As a result, you decide to simplify the formatting by using an include with parameters. Here's an example of the special image syntax you want to populate with an include: ```html -
Jekyll logo
-This is the Jekyll logo
+
+ + Jekyll logo +
This is the Jekyll logo
+
``` You could templatize this content in your include and make each value available as a parameter, like this: ```liquid -{% raw %}
{{include.caption}} -
{% endraw %} +{% raw %}
+ + {{ include.alt }} +
{{ include.caption }}
+
{% endraw %} ``` This include contains 5 parameters: @@ -97,15 +103,18 @@ This include contains 5 parameters: You could also use `if` tags to safeguard scenarios where either the parameter is optional or where the author doesn't include the parameter: ```liquid -{% raw %}
{% if {{include.url}} %} -{% endif %}{% if {{include.url}} %}{% endif %} -{% if {{include.caption}} %}
{{include.caption}} -
{% endif %}
{% endraw %} +{% raw %}
+ {% if {{ include.url }} %}{% endif %} + {{ include.alt }}{% if {{ include.url }} %}{% endif %} + {% if {{ include.caption }} %} +
{{ include.caption }}
+ {% endif %} +
{% endraw %} ``` -In this example, `{% raw %}if {{include.url}}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). +In this example, `{% raw %}if {{ include.url }}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). Here's an example that passes all the parameters to this include (the include file is named `image.html`): @@ -123,15 +132,15 @@ However, note that you should avoid using too many includes, as this will slow d ### Passing parameter variables to includes -Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{site.product_name}}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) +Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{ site.product_name }}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) -The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{site.product_name}} is now available."`{% endraw %} +The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{ site.product_name }} is now available."`{% endraw %} If you want to include this variable in your parameter that you pass to an include, you need to store the entire parameter as a variable before passing it to the include. You can use `capture` tags to create the variable: ```liquid {% raw %}{% capture download_note %}The latest version of -{{site.product_name}} is now available.{% endcapture %}{% endraw %} +{{ site.product_name }} is now available.{% endcapture %}{% endraw %} ``` Then pass this captured variable into the parameter for the include. Omit the quotation marks around the parameter content because it's no longer a string (it's a variable): @@ -159,9 +168,9 @@ Here's an example. In the `_data` folder, suppose you have a YAML file called `p In the `_includes` folder, assume you have a file called `spotlight.html` with this code: ```liquid -{% raw %}{% for person in {{include.participants}} %} +{% raw %}{% for person in {{ include.participants }} %} {% if person.login_age == "new" %} -{{person.name}} +{{ person.name }} {% endif %} {% endfor %}{% endraw %} ``` @@ -172,4 +181,4 @@ Now when you insert the `spotlight.html` include file, you can submit the YAML f {% raw %}{% include spotlight.html participants=site.data.profiles %}{% endraw %} ``` -In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{include.participants}}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. +In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{ include.participants }}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. From 56a7038a7edd5141c76e4b295a7566ba5e2b1f03 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Tue, 27 Dec 2016 11:03:23 -0800 Subject: [PATCH 057/207] Updated to remove spacing from include variables It turns out Liquid throws an error when you write `{% if {{ include.url }} %}` instead of `{% if {{include.url}} %}`. I updated the examples here to omit the spacing. To avoid inconsistency, I just omitted the spacing from all curly braces. Also added a note explaining the issue and put the blame on Liquid. --- docs/_docs/includes.md | 46 ++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/docs/_docs/includes.md b/docs/_docs/includes.md index 3a0b819d..1a60ce0d 100644 --- a/docs/_docs/includes.md +++ b/docs/_docs/includes.md @@ -32,7 +32,7 @@ such as variables. ### Using variables names for the include file -The name of the file you want to embed can be specified as a variable instead of an actual file name. For example, suppose you defined a variable in your page's frontmatter like this: +The name of the file you want to embed can be specified as a variable instead of an actual file name. For example, suppose you defined a variable in your page's front matter like this: ```yaml --- @@ -44,7 +44,7 @@ my_variable: footer_company_a.html You could then reference that variable in your include: ```liquid -{% raw %}{% include {{ page.my_variable }} %}{% endraw %} +{% raw %}{% include {{page.my_variable}} %}{% endraw %} ``` In this example, the include would insert the file `footer_company_a.html` from the `_includes/footer_company_a.html` directory. @@ -56,17 +56,17 @@ You can also pass parameters to an include. For example, suppose you have a file ```liquid {% raw %}{% endraw %} ``` -The `{% raw %}{{ include.content }}{% endraw %}` is a parameter gets populated when you call the include and specify a value for that parameter, like this: +The `{% raw %}{{include.content}}{% endraw %}` is a parameter that gets populated when you call the include and specify a value for that parameter, like this: ```liquid {% raw %}{% include note.html content="This is my sample note." %} {% endraw %} ``` -The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{ include.content }}`{% endraw %} parameter. +The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{include.content}}`{% endraw %} parameter. Passing parameters to includes is especially helpful when you want to hide away complex formatting from your Markdown content. @@ -85,10 +85,10 @@ You could templatize this content in your include and make each value available ```liquid {% raw %}
- - {{ include.alt }} -
{{ include.caption }}
+
+ {{include.alt}} +
{{include.caption}}
{% endraw %} ``` @@ -104,17 +104,17 @@ You could also use `if` tags to safeguard scenarios where either the parameter i ```liquid {% raw %}
- {% if {{ include.url }} %}{% endif %} - {{ include.alt }}{% if {{ include.url }} %}{% endif %} - {% if {{ include.caption }} %} -
{{ include.caption }}
+ {% if {{include.url}} %}{% endif %} + {{include.alt}}{% if {{include.url}} %}{% endif %} + {% if {{include.caption}} %} +
{{include.caption}}
{% endif %}
{% endraw %} ``` -In this example, `{% raw %}if {{ include.url }}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). +In this example, `{% raw %}if {{include.url}}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). Here's an example that passes all the parameters to this include (the include file is named `image.html`): @@ -130,17 +130,19 @@ You can create includes that act as templates for a variety of uses — inse However, note that you should avoid using too many includes, as this will slow down the build time of your site. For example, don't use includes every time you insert an image. (The above technique shows a use case for special images.) +Additionally, if you have a include variable inside an `if` statement, such as `{% raw %}{% if {{include.url}} %}{% endraw %}`, don't use spaces inside the curly braces. For example, avoid this syntax: `{% raw %}{% if {{ include.url }} %}{% endraw %}`. Liquid will consider this extra spacing an error. (Outside of `if` statements, the spacing for include variables doesn't matter.) + ### Passing parameter variables to includes -Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{ site.product_name }}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) +Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{site.product_name}}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) -The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{ site.product_name }} is now available."`{% endraw %} +The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{site.product_name}} is now available."`{% endraw %} If you want to include this variable in your parameter that you pass to an include, you need to store the entire parameter as a variable before passing it to the include. You can use `capture` tags to create the variable: ```liquid {% raw %}{% capture download_note %}The latest version of -{{ site.product_name }} is now available.{% endcapture %}{% endraw %} +{{site.product_name}} is now available.{% endcapture %}{% endraw %} ``` Then pass this captured variable into the parameter for the include. Omit the quotation marks around the parameter content because it's no longer a string (it's a variable): @@ -168,9 +170,9 @@ Here's an example. In the `_data` folder, suppose you have a YAML file called `p In the `_includes` folder, assume you have a file called `spotlight.html` with this code: ```liquid -{% raw %}{% for person in {{ include.participants }} %} +{% raw %}{% for person in {{include.participants}} %} {% if person.login_age == "new" %} -{{ person.name }} +{{person.name}} {% endif %} {% endfor %}{% endraw %} ``` @@ -181,4 +183,4 @@ Now when you insert the `spotlight.html` include file, you can submit the YAML f {% raw %}{% include spotlight.html participants=site.data.profiles %}{% endraw %} ``` -In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{ include.participants }}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. +In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{include.participants}}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. From acff6cd269ea516ac8aaf4922f57c8f2be2367db Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Tue, 27 Dec 2016 21:39:56 -0800 Subject: [PATCH 058/207] Removed erroneous liquid code, added back spacing - removed erroneous liquid code with conditional include parameters - added back spacing in {{ }} tags --- docs/_docs/includes.md | 52 ++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 35 deletions(-) diff --git a/docs/_docs/includes.md b/docs/_docs/includes.md index 1a60ce0d..94c56894 100644 --- a/docs/_docs/includes.md +++ b/docs/_docs/includes.md @@ -44,7 +44,7 @@ my_variable: footer_company_a.html You could then reference that variable in your include: ```liquid -{% raw %}{% include {{page.my_variable}} %}{% endraw %} +{% raw %}{% include {{ page.my_variable }} %}{% endraw %} ``` In this example, the include would insert the file `footer_company_a.html` from the `_includes/footer_company_a.html` directory. @@ -56,21 +56,21 @@ You can also pass parameters to an include. For example, suppose you have a file ```liquid {% raw %}{% endraw %} ``` -The `{% raw %}{{include.content}}{% endraw %}` is a parameter that gets populated when you call the include and specify a value for that parameter, like this: +The `{% raw %}{{ include.content }}{% endraw %}` is a parameter that gets populated when you call the include and specify a value for that parameter, like this: ```liquid {% raw %}{% include note.html content="This is my sample note." %} {% endraw %} ``` -The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{include.content}}`{% endraw %} parameter. +The value of `content` (which is `This is my sample note`) will be inserted into the {% raw %}`{{ include.content }}`{% endraw %} parameter. Passing parameters to includes is especially helpful when you want to hide away complex formatting from your Markdown content. -For example, suppose you have a special image syntax with complex formatting, and you don't want your authors to remember the complex formatting. As a result, you decide to simplify the formatting by using an include with parameters. Here's an example of the special image syntax you want to populate with an include: +For example, suppose you have a special image syntax with complex formatting, and you don't want your authors to remember the complex formatting. As a result, you decide to simplify the formatting by using an include with parameters. Here's an example of the special image syntax you might want to populate with an include: ```html
@@ -85,10 +85,10 @@ You could templatize this content in your include and make each value available ```liquid {% raw %}
- - {{include.alt}} -
{{include.caption}}
+
+ {{ include.alt }} +
{{ include.caption }}
{% endraw %} ``` @@ -100,22 +100,6 @@ This include contains 5 parameters: * `alt` * `caption` -You could also use `if` tags to safeguard scenarios where either the parameter is optional or where the author doesn't include the parameter: - -```liquid -{% raw %}
- {% if {{include.url}} %}{% endif %} - {{include.alt}}{% if {{include.url}} %}{% endif %} - {% if {{include.caption}} %} -
{{include.caption}}
- {% endif %} -
{% endraw %} -``` - -In this example, `{% raw %}if {{include.url}}{% endraw %}` will include the `url` only if the `url` parameter is specified in the include. You could also create default values using [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). - Here's an example that passes all the parameters to this include (the include file is named `image.html`): ```liquid @@ -126,23 +110,21 @@ caption="This is the Jekyll logo." %} {% endraw %} The result is the original HTML code shown earlier. -You can create includes that act as templates for a variety of uses — inserting audio or video clips, alerts, special formatting, and more. +To safeguard situations where users don't supply a value for the parameter, you can use [Liquid's default filter](https://help.shopify.com/themes/liquid/filters/additional-filters#default). -However, note that you should avoid using too many includes, as this will slow down the build time of your site. For example, don't use includes every time you insert an image. (The above technique shows a use case for special images.) - -Additionally, if you have a include variable inside an `if` statement, such as `{% raw %}{% if {{include.url}} %}{% endraw %}`, don't use spaces inside the curly braces. For example, avoid this syntax: `{% raw %}{% if {{ include.url }} %}{% endraw %}`. Liquid will consider this extra spacing an error. (Outside of `if` statements, the spacing for include variables doesn't matter.) +Overall, you can create includes that act as templates for a variety of uses — inserting audio or video clips, alerts, special formatting, and more. However, note that you should avoid using too many includes, as this will slow down the build time of your site. For example, don't use includes every time you insert an image. (The above technique shows a use case for special images.) ### Passing parameter variables to includes -Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{site.product_name}}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) +Suppose the parameter you want to pass to the include is a variable rather than a string. For example, you might be using {% raw %}`{{ site.product_name }}`{% endraw %} to refer to every instance of your product rather than the actual hard-coded name. (In this case, your `_config.yml` file would have a key called `product_name` with a value of your product's name.) -The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{site.product_name}} is now available."`{% endraw %} +The string you pass to your include parameter can't contain curly braces. For example, you can't pass a parameter that contains this: {% raw %}`"The latest version of {{ site.product_name }} is now available."`{% endraw %} If you want to include this variable in your parameter that you pass to an include, you need to store the entire parameter as a variable before passing it to the include. You can use `capture` tags to create the variable: ```liquid {% raw %}{% capture download_note %}The latest version of -{{site.product_name}} is now available.{% endcapture %}{% endraw %} +{{ site.product_name }} is now available.{% endcapture %}{% endraw %} ``` Then pass this captured variable into the parameter for the include. Omit the quotation marks around the parameter content because it's no longer a string (it's a variable): @@ -170,9 +152,9 @@ Here's an example. In the `_data` folder, suppose you have a YAML file called `p In the `_includes` folder, assume you have a file called `spotlight.html` with this code: ```liquid -{% raw %}{% for person in {{include.participants}} %} +{% raw %}{% for person in {{ include.participants }} %} {% if person.login_age == "new" %} -{{person.name}} +{{ person.name }} {% endif %} {% endfor %}{% endraw %} ``` @@ -183,4 +165,4 @@ Now when you insert the `spotlight.html` include file, you can submit the YAML f {% raw %}{% include spotlight.html participants=site.data.profiles %}{% endraw %} ``` -In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{include.participants}}`{% endraw %} in the include, and the Liquid logic processes. The result will be `Jane Doe`. +In this instance, `site.data.profiles` gets inserted in place of {% raw %}`{{ include.participants }}`{% endraw %} in the include file, and the Liquid logic processes. The result will be `Jane Doe`. From 57d6d5986feb912fd4c4241a29d9a86980a9d91f Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Thu, 29 Dec 2016 08:27:42 -0800 Subject: [PATCH 059/207] update quickstart.md I must have just updated the wrong doc or branch in the last commit. i hope this fixes it. --- docs/_docs/quickstart.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index 8c509fab..d15a9eb1 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -27,7 +27,7 @@ If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGem `gem install jekyll bundler` installs the [jekyll](https://rubygems.org/gems/jekyll/) and [bundler](https://rubygems.org/gems/bundler) gems through [RubyGems](https://rubygems.org/). You need only to install the gems one time — not every time you create a new Jekyll project. Here are some additional details: * `bundler` is a gem that manages other Ruby gems. It makes sure your gems and gem versions are compatible, and that you have all necessary dependencies each gem requires. -* The `Gemfile` and `Gemfile.lock` files inform Bundler about the gem requirements in your theme. If your theme doesn't have these Gemfiles, you can omit `bundle exec` and just run `jekyll serve`. +* The `Gemfile` and `Gemfile.lock` files inform Bundler about the gem requirements in your site. If your site doesn't have these Gemfiles, you can omit `bundle exec` and just run `jekyll serve`. * When you run `bundle exec jekyll serve`, Bundler uses the gems and versions as specified in `Gemfile.lock` to ensure your Jekyll site builds with no compatibility or dependency conflicts. @@ -38,7 +38,7 @@ If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGem * To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. * `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) * By default, the Jekyll site installed by `jekyll new` uses a gem-based theme called [Minima](https://github.com/jekyll/minima). With [gem-based themes](../themes), some of the directories and files are stored in the theme-gem, hidden from your immediate view. -* To learn about other parameters you can include with `jekyll new`, type ` jekyll new --help`. +* To learn about other parameters you can include with `jekyll new`, type `jekyll new --help`. ## Next steps From 192e79ed1e84298ffc07c3ce4ca4ffa2e6bd0534 Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Thu, 29 Dec 2016 08:57:39 -0800 Subject: [PATCH 060/207] reset permalinks to same state it was in in patch-3 branch. i couldn't seem to remove it from the previous commit. --- docs/_docs/permalinks.md | 326 +++++++++++++++++++++++++++++++++++---- 1 file changed, 299 insertions(+), 27 deletions(-) diff --git a/docs/_docs/permalinks.md b/docs/_docs/permalinks.md index d15a9eb1..557a53f9 100644 --- a/docs/_docs/permalinks.md +++ b/docs/_docs/permalinks.md @@ -1,45 +1,317 @@ --- layout: docs -title: Quick-start guide -permalink: /docs/quickstart/ +title: Permalinks +permalink: /docs/permalinks/ --- -If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGems](https://rubygems.org/pages/download) installed (see Jekyll's [requirements](/docs/installation/#requirements/)), you can create a new Jekyll site by doing the following: +Jekyll supports a flexible way to build your site’s URLs. You can specify the +permalinks for your site through the [Configuration](../configuration/) or in +the [YAML Front Matter](../frontmatter/) for each post. You’re free to choose +one of the built-in styles to create your links or craft your own. The default +style is `date`. -```sh -# Install Jekyll and Bundler gems through RubyGems -~ $ gem install jekyll bundler +Permalinks are constructed by creating a template URL where dynamic elements +are represented by colon-prefixed keywords. For example, the default `date` +permalink is defined according to the format `/:categories/:year/:month/:day/:title.html`. -# Create a new Jekyll site at ./myblog -~ $ jekyll new myblog +
+
Specifying permalinks through the YAML Front Matter
+

+ Built-in permalink styles are not recognized in YAML Front Matter. So + permalink: pretty will not work, but the equivalent + /:categories/:year/:month/:day/:title/ + using template variables will. +

+
-# Change into your new directory -~ $ cd myblog +## Template variables -# Build the site on the preview server -~/myblog $ bundle exec jekyll serve +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VariableDescription
+

year

+
+

Year from the Post’s filename

+
+

month

+
+

Month from the Post’s filename

+
+

i_month

+
+

Month from the Post’s filename without leading zeros.

+
+

day

+
+

Day from the Post’s filename

+
+

i_day

+
+

Day from the Post’s filename without leading zeros.

+
+

short_year

+
+

Year from the Post’s filename without the century.

+
+

hour

+
+

+ Hour of the day, 24-hour clock, zero-padded from the post’s date front matter. (00..23) +

+
+

minute

+
+

+ Minute of the hour from the post’s date front matter. (00..59) +

+
+

second

+
+

+ Second of the minute from the post’s date front matter. (00..59) +

+
+

title

+
+

+ Title from the document’s filename. May be overridden via + the document’s slug YAML front matter. +

+
+

slug

+
+

+ Slugified title from the document’s filename ( any character + except numbers and letters is replaced as hyphen ). May be + overridden via the document’s slug YAML front matter. +

+
+

categories

+
+

+ The specified categories for this Post. If a post has multiple + categories, Jekyll will create a hierarchy (e.g. /category1/category2). + Also Jekyll automatically parses out double slashes in the URLs, + so if no categories are present, it will ignore this. +

+
+
-# Now browse to http://localhost:4000 -``` +## Built-in permalink styles -## About Bundler +While you can specify a custom permalink style using [template variables](#template-variables), +Jekyll also provides the following built-in styles for convenience. -`gem install jekyll bundler` installs the [jekyll](https://rubygems.org/gems/jekyll/) and [bundler](https://rubygems.org/gems/bundler) gems through [RubyGems](https://rubygems.org/). You need only to install the gems one time — not every time you create a new Jekyll project. Here are some additional details: +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Permalink StyleURL Template
+

date

+
+

/:categories/:year/:month/:day/:title.html

+
+

pretty

+
+

/:categories/:year/:month/:day/:title/

+
+

ordinal

+
+

/:categories/:year/:y_day/:title.html

+
+

none

+
+

/:categories/:title.html

+
+
-* `bundler` is a gem that manages other Ruby gems. It makes sure your gems and gem versions are compatible, and that you have all necessary dependencies each gem requires. -* The `Gemfile` and `Gemfile.lock` files inform Bundler about the gem requirements in your site. If your site doesn't have these Gemfiles, you can omit `bundle exec` and just run `jekyll serve`. +## Pages and collections -* When you run `bundle exec jekyll serve`, Bundler uses the gems and versions as specified in `Gemfile.lock` to ensure your Jekyll site builds with no compatibility or dependency conflicts. +The `permalink` configuration setting specifies the permalink style used for +posts. Pages and collections each have their own default permalink style; the +default style for pages is `/:path/:basename` and the default for collections is +`/:collection/:path`. -## Options for creating a new site with Jekyll +These styles are modified to match the suffix style specified in the post +permalink setting. For example, a permalink style of `pretty`, which contains a +trailing slash, will update page permalinks to also contain a trailing slash: +`/:path/:basename/`. A permalink style of `date`, which contains a trailing +file extension, will update page permalinks to also contain a file extension: +`/:path/:basename:output_ext`. The same is true for any custom permalink style. -`jekyll new ` installs a new Jekyll site at the path specified (relative to current directory). In this case, Jekyll will be installed in a directory called `myblog`. Here are some additional details: +The permalink for an individual page or collection document can always be +overridden in the [YAML Front Matter](../frontmatter/) for the page or document. +Additionally, permalinks for a given collection can be customized [in the +collections configuration](../collections/). -* To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. -* `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) -* By default, the Jekyll site installed by `jekyll new` uses a gem-based theme called [Minima](https://github.com/jekyll/minima). With [gem-based themes](../themes), some of the directories and files are stored in the theme-gem, hidden from your immediate view. -* To learn about other parameters you can include with `jekyll new`, type `jekyll new --help`. +## Permalink style examples -## Next steps +Given a post named: `/2009-04-29-slap-chop.md` -Building a Jekyll site with the default theme is just the first step. The real magic happens when you start creating blog posts, using the front matter to control templates and layouts, and taking advantage of all the awesome configuration options Jekyll makes available. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
URL TemplateResulting Permalink URL
+

None specified, or permalink: date

+
+

/2009/04/29/slap-chop.html

+
+

pretty

+
+

/2009/04/29/slap-chop/

+
+

/:month-:day-:year/:title.html

+
+

/04-29-2009/slap-chop.html

+
+

/blog/:year/:month/:day/:title/

+
+

/blog/2009/04/29/slap-chop/

+
+

/:year/:month/:title

+

See extensionless permalinks for details.

+
+

/2009/04/slap-chop

+
+
+ +## Extensionless permalinks + +Jekyll supports permalinks that contain neither a trailing slash nor a file +extension, but this requires additional support from the web server to properly +serve. When using extensionless permalinks, output files written to disk will +still have the proper file extension (typically `.html`), so the web server +must be able to map requests without file extensions to these files. + +Both [GitHub Pages](../github-pages/) and the Jekyll's built-in WEBrick server +handle these requests properly without any additional work. + +### Apache + +The Apache web server has very extensive support for content negotiation and can +handle extensionless URLs by setting the [multiviews][] option in your +`httpd.conf` or `.htaccess` file: + +[multiviews]: https://httpd.apache.org/docs/current/content-negotiation.html#multiviews + +{% highlight apache %} +Options +MultiViews +{% endhighlight %} + +### Nginx + +The [try_files][] directive allows you to specify a list of files to search for +to process a request. The following configuration will instruct nginx to search +for a file with an `.html` extension if an exact match for the requested URI is +not found. + +[try_files]: http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files + +{% highlight nginx %} +try_files $uri $uri.html $uri/ =404; +{% endhighlight %} From c8ef313d036b8d1f1f5eb02c43dce030689e892e Mon Sep 17 00:00:00 2001 From: Tom Johnson Date: Thu, 29 Dec 2016 09:31:30 -0800 Subject: [PATCH 061/207] fixing sentence in dispute --- docs/_docs/collections.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/_docs/collections.md b/docs/_docs/collections.md index 7c606177..149fdea6 100644 --- a/docs/_docs/collections.md +++ b/docs/_docs/collections.md @@ -49,10 +49,10 @@ defaults: ### Step 2: Add your content {#step2} -Create a corresponding folder (for example, `/_my_collection`) and add -documents. YAML Front Matter is read in as data if it exists, and everything -after it is accessible via the document's `content` attribute. If no YAML Front -Matter is provided, Jekyll will not generate the file in your collection. +Create a corresponding folder (e.g. `/_my_collection`) and add +documents. YAML front matter is processed if the front matter exists, and everything +after the front matter is pushed into the document's `content` attribute. If no YAML front +matter is provided, Jekyll will not generate the file in your collection.
Be sure to name your directories correctly
From 0014b1d9f07bc802de4adbc7b462b958c66451eb Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Thu, 29 Dec 2016 19:02:54 -0800 Subject: [PATCH 062/207] Update history to reflect merge of #5689 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 3bd4af8e..fde5160e 100644 --- a/History.markdown +++ b/History.markdown @@ -12,6 +12,7 @@ * Switch to `https` when possible. (#5611) * Update `_font-awesome.scss` to move .woff file before .ttf (#5614) * Update documentation on updating FontAwesome Iconset (#5655) + * Improve quickstart docs (#5689) ### Minor Enhancements From 0197b65e711fc8cab22170b43db06414d764a33e Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sat, 31 Dec 2016 13:44:17 -0800 Subject: [PATCH 063/207] Update history to reflect merge of #5705 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index fde5160e..834ddf9c 100644 --- a/History.markdown +++ b/History.markdown @@ -13,6 +13,7 @@ * Update `_font-awesome.scss` to move .woff file before .ttf (#5614) * Update documentation on updating FontAwesome Iconset (#5655) * Improve quickstart docs (#5689) + * Add Jekyll-Post to list of plugins (#5705) ### Minor Enhancements From b704df0245ef467017ac945d73f77dc278b1c3a4 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 1 Jan 2017 06:51:40 -0800 Subject: [PATCH 064/207] Update history to reflect merge of #5683 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 834ddf9c..f06792cd 100644 --- a/History.markdown +++ b/History.markdown @@ -44,6 +44,7 @@ * Improve Permalinks documentation. (#5653) * Fix typo in Variables doc page (#5657) * Fix a couple of typos in the docs (#5658) + * Update windows.md (#5683) ## 3.3.1 / 2016-11-14 From da1a36eff9b310c86b6295a1a6257e0d82c45acd Mon Sep 17 00:00:00 2001 From: Chase Date: Sun, 1 Jan 2017 18:20:45 -0500 Subject: [PATCH 065/207] update Classifier-Reborn to 2.1.0 --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index fa254dff..eda95e5e 100644 --- a/Gemfile +++ b/Gemfile @@ -73,7 +73,7 @@ group :jekyll_optional_dependencies do gem "toml", "~> 0.1.0" platform :ruby, :mswin, :mingw, :x64_mingw do - gem "classifier-reborn", "~> 2.0" + gem "classifier-reborn", "~> 2.1.0" gem "liquid-c", "~> 3.0" gem "pygments.rb", "~> 0.6.0" gem "rdiscount", "~> 2.0" From 6ab6de7093e5319d164fed2ed068dd517583f185 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 1 Jan 2017 21:24:28 -0800 Subject: [PATCH 066/207] Update history to reflect merge of #5711 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index f06792cd..b6366cdb 100644 --- a/History.markdown +++ b/History.markdown @@ -35,6 +35,7 @@ * Rubocop -a on lib/jekyll (#5666) * Bump to rake 12.0 (#5670) * Rubocop Gemfile (#5671) + * update Classifier-Reborn to 2.1.0 (#5711) ### Documentation From de6d62b2e36ee110ab4e5807e9c78c1d99aa7d65 Mon Sep 17 00:00:00 2001 From: Chayoung You Date: Mon, 2 Jan 2017 22:07:03 +0900 Subject: [PATCH 067/207] Use the current year for the LICENSE of theme --- lib/theme_template/LICENSE.txt.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/theme_template/LICENSE.txt.erb b/lib/theme_template/LICENSE.txt.erb index df803135..38a0eb4e 100644 --- a/lib/theme_template/LICENSE.txt.erb +++ b/lib/theme_template/LICENSE.txt.erb @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 <%= user_name %> +Copyright (c) <%= Time.now.year %> <%= user_name %> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 7dce4e427036bc7f3a4c0d5d859adc85dfd68620 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 2 Jan 2017 08:17:08 -0800 Subject: [PATCH 068/207] Update history to reflect merge of #5712 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index b6366cdb..b294d518 100644 --- a/History.markdown +++ b/History.markdown @@ -19,6 +19,7 @@ * Add connector param to array_to_sentence_string filter (#5597) * Adds group_by_exp filter (#5513) + * Use the current year for the LICENSE of theme (#5712) ### Bug Fixes From fb75f4031c800224796e1d95c892488a9f83e027 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 2 Jan 2017 08:59:24 -0800 Subject: [PATCH 069/207] Update history to reflect merge of #5693 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index b294d518..c40f0ee0 100644 --- a/History.markdown +++ b/History.markdown @@ -47,6 +47,7 @@ * Fix typo in Variables doc page (#5657) * Fix a couple of typos in the docs (#5658) * Update windows.md (#5683) + * Improve permalinks docs (#5693) ## 3.3.1 / 2016-11-14 From 9fb63552644d2a4ba05e7f9d59be263ac2ca1377 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Mon, 2 Jan 2017 23:14:27 +0100 Subject: [PATCH 070/207] bump year - Adding Jekyll contributors, following @benbalter advice. --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 94dbfc39..e177b1bf 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2008-2016 Tom Preston-Werner +Copyright (c) 2008-2017 Tom Preston-Werner and Jekyll contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 7cded91a7cf1c761a0059c7e589f2cfb1149f182 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 3 Jan 2017 00:30:54 -0800 Subject: [PATCH 071/207] Update history to reflect merge of #5713 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index c40f0ee0..46e7ba82 100644 --- a/History.markdown +++ b/History.markdown @@ -20,6 +20,7 @@ * Add connector param to array_to_sentence_string filter (#5597) * Adds group_by_exp filter (#5513) * Use the current year for the LICENSE of theme (#5712) + * Update License (#5713) ### Bug Fixes From be12be34119312b2d518c9448cee435c941b19bb Mon Sep 17 00:00:00 2001 From: Skylar Challand Date: Thu, 5 Jan 2017 15:04:42 -0500 Subject: [PATCH 072/207] Add undocumented --unpublished build option via https://github.com/jekyll/jekyll/blob/57fd5f887da1189a16bdfbb982d75f725c38d725/lib/jekyll/command.rb#L63-L64 --- docs/_docs/configuration.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/_docs/configuration.md b/docs/_docs/configuration.md index 9dca5cea..9df1c85f 100644 --- a/docs/_docs/configuration.md +++ b/docs/_docs/configuration.md @@ -221,6 +221,16 @@ class="flag">flags
(specified on the command-line) that control them.

--future

+ + +

Unpublished

+

Render posts that were marked as unpublished.

+ + +

unpublished: BOOL

+

--unpublished

+ +

LSI

From 4b51c1da587051a8a222a103d9fd196285d4d89d Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 5 Jan 2017 17:08:04 -0600 Subject: [PATCH 073/207] Use `assert_nil` --- test/test_front_matter_defaults.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/test_front_matter_defaults.rb b/test/test_front_matter_defaults.rb index 93cbf4b4..30c713ac 100644 --- a/test/test_front_matter_defaults.rb +++ b/test/test_front_matter_defaults.rb @@ -21,7 +21,7 @@ class TestFrontMatterDefaults < JekyllUnitTest should "affect only the specified path and type" do assert_equal @affected.data["key"], "val" - assert_equal @not_affected.data["key"], nil + assert_nil @not_affected.data["key"] end end @@ -45,7 +45,7 @@ class TestFrontMatterDefaults < JekyllUnitTest should "affect only the specified path" do assert_equal @affected.data["key"], "val" - assert_equal @not_affected.data["key"], nil + assert_nil @not_affected.data["key"] end end @@ -69,7 +69,7 @@ class TestFrontMatterDefaults < JekyllUnitTest should "affect only the specified path and all types" do assert_equal @affected.data["key"], "val" - assert_equal @not_affected.data["key"], nil + assert_nil @not_affected.data["key"] end end From 6fb05e07999e9dcd69eaf0597cb33ce10bda1b01 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 5 Jan 2017 17:44:54 -0600 Subject: [PATCH 074/207] Use Addressable instead of URI to decode --- lib/jekyll/filters.rb | 4 ++-- lib/jekyll/url.rb | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 43e01df1..808632ba 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -1,4 +1,4 @@ -require "uri" +require "addressable/uri" require "json" require "date" require "liquid" @@ -152,7 +152,7 @@ module Jekyll # # Returns the escaped String. def uri_escape(input) - URI.escape(input) + Addressable::URI.encode(input) end # Replace any whitespace in the input string with a single space diff --git a/lib/jekyll/url.rb b/lib/jekyll/url.rb index 4504574f..c630b539 100644 --- a/lib/jekyll/url.rb +++ b/lib/jekyll/url.rb @@ -1,3 +1,4 @@ +require "addressable/uri" require "uri" # Public: Methods that generate a URL for a resource such as a Post or a Page. @@ -159,7 +160,7 @@ module Jekyll # # Returns the unescaped path. def self.unescape_path(path) - URI.unescape(path.encode("utf-8")) + Addressable::URI.unencode(path.encode("utf-8")) end end end From 5652c10305f204299544869e95f41d3b5a451328 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 5 Jan 2017 18:01:00 -0600 Subject: [PATCH 075/207] Try to replace `URI.escape` with Addressable --- lib/jekyll/url.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jekyll/url.rb b/lib/jekyll/url.rb index c630b539..072ea8cd 100644 --- a/lib/jekyll/url.rb +++ b/lib/jekyll/url.rb @@ -1,5 +1,4 @@ require "addressable/uri" -require "uri" # Public: Methods that generate a URL for a resource such as a Post or a Page. # @@ -146,7 +145,8 @@ module Jekyll # pct-encoded = "%" HEXDIG HEXDIG # sub-delims = "!" / "$" / "&" / "'" / "(" / ")" # / "*" / "+" / "," / ";" / "=" - URI.escape(path, %r{[^a-zA-Z\d\-._~!$&'()*+,;=:@\/]}).encode("utf-8") + path = Addressable::URI.encode(path) + path.encode("utf-8") end # Unescapes a URL path segment From 1e4b779ab372f610fb6c510c7570122146357171 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 5 Jan 2017 18:34:44 -0600 Subject: [PATCH 076/207] Escape # --- lib/jekyll/url.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/url.rb b/lib/jekyll/url.rb index 072ea8cd..aefbebc9 100644 --- a/lib/jekyll/url.rb +++ b/lib/jekyll/url.rb @@ -146,7 +146,7 @@ module Jekyll # sub-delims = "!" / "$" / "&" / "'" / "(" / ")" # / "*" / "+" / "," / ";" / "=" path = Addressable::URI.encode(path) - path.encode("utf-8") + path.encode("utf-8").sub("#", "%23") end # Unescapes a URL path segment From 657e502a72cb8f699e2179fbc3f669b76e567665 Mon Sep 17 00:00:00 2001 From: muratayusuke Date: Sun, 25 Dec 2016 14:09:57 +0900 Subject: [PATCH 077/207] Add jekyll-numbered-headings --- docs/_docs/plugins.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index 775dabbf..0eda5ca1 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -919,6 +919,7 @@ LESS.js files during generation. - [jekyll-pinboard](https://github.com/snaptortoise/jekyll-pinboard-plugin): Access your Pinboard bookmarks within your Jekyll theme. - [jekyll-migrate-permalink](https://github.com/mpchadwick/jekyll-migrate-permalink): Adds a `migrate-permalink` sub-command to help deal with side effects of changing your permalink. - [Jekyll-Post](https://github.com/robcrocombe/jekyll-post): A CLI tool to easily draft, edit, and publish Jekyll posts. +- [jekyll-numbered-headings](https://github.com/muratayusuke/jekyll-numbered-headings): Adds ordered number to headings. #### Editors From 91776d1dc7cc21019286d069f88457dc10ef125e Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 6 Jan 2017 01:56:29 -0800 Subject: [PATCH 078/207] Update history to reflect merge of #5688 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 46e7ba82..269eeae8 100644 --- a/History.markdown +++ b/History.markdown @@ -14,6 +14,7 @@ * Update documentation on updating FontAwesome Iconset (#5655) * Improve quickstart docs (#5689) * Add Jekyll-Post to list of plugins (#5705) + * Add jekyll-numbered-headings (#5688) ### Minor Enhancements From 08cec6889abc6073a4ac47eea160d8e820bddcf0 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 6 Jan 2017 02:14:53 -0800 Subject: [PATCH 079/207] Update history to reflect merge of #5720 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 269eeae8..d0bec0a1 100644 --- a/History.markdown +++ b/History.markdown @@ -50,6 +50,7 @@ * Fix a couple of typos in the docs (#5658) * Update windows.md (#5683) * Improve permalinks docs (#5693) + * Document --unpublished build option (#5720) ## 3.3.1 / 2016-11-14 From 368294b2a937440413a13cfa84cab4947c49c0f5 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Fri, 6 Jan 2017 05:55:50 -0600 Subject: [PATCH 080/207] Update tests to be position independent --- test/test_new_command.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/test_new_command.rb b/test/test_new_command.rb index 78e6ac6f..a02f1565 100644 --- a/test/test_new_command.rb +++ b/test/test_new_command.rb @@ -40,12 +40,11 @@ class TestNewCommand < JekyllUnitTest should "display a success message" do Jekyll::Commands::New.process(@args) - output = Jekyll.logger.messages[-3] - output_last = Jekyll.logger.messages.last - success_message = "New jekyll site installed in #{@full_path.cyan}." - bundle_message = "Running bundle install in #{@full_path.cyan}..." + output = Jekyll.logger.messages + success_message = "New jekyll site installed in #{@full_path.cyan}. " + bundle_message = "Running bundle install in #{@full_path.cyan}... " assert_includes output, success_message - assert_includes output_last, bundle_message + assert_includes output, bundle_message end should "copy the static files in site template to the new directory" do From 203be72c473fb7c37f976410a902904fa4f24fd2 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Fri, 6 Jan 2017 05:57:21 -0600 Subject: [PATCH 081/207] Remove unnecessary "rubocop:enable" --- features/support/helpers.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/features/support/helpers.rb b/features/support/helpers.rb index 87cf717c..6613b8ea 100644 --- a/features/support/helpers.rb +++ b/features/support/helpers.rb @@ -114,7 +114,6 @@ def run_in_shell(*args) p end -# rubocop:enable Metrics/AbcSize # From e126d161352086fe80bfc4be1dc6db1ae754d38c Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sat, 7 Jan 2017 03:37:48 -0800 Subject: [PATCH 082/207] Update history to reflect merge of #5726 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index d0bec0a1..9df69b01 100644 --- a/History.markdown +++ b/History.markdown @@ -22,6 +22,7 @@ * Adds group_by_exp filter (#5513) * Use the current year for the LICENSE of theme (#5712) * Update License (#5713) + * Use Addressable instead of URI to decode (#5726) ### Bug Fixes From 61e5aa7728d95b41eccb06fd162b7f03bd799d97 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 8 Jan 2017 04:50:02 -0800 Subject: [PATCH 083/207] Update history to reflect merge of #5544 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 9df69b01..8335a37f 100644 --- a/History.markdown +++ b/History.markdown @@ -15,6 +15,7 @@ * Improve quickstart docs (#5689) * Add Jekyll-Post to list of plugins (#5705) * Add jekyll-numbered-headings (#5688) + * Docs: move permalinks from documents into config (#5544) ### Minor Enhancements From 234ed44db69933dc9a589c89096df0ec8a175021 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Sun, 8 Jan 2017 14:44:59 +0100 Subject: [PATCH 084/207] Fix format, corrections --- docs/_docs/themes.md | 145 ++++++++++++++++++++++--------------------- 1 file changed, 75 insertions(+), 70 deletions(-) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index 8e937b61..d4da3eea 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -10,7 +10,7 @@ Jekyll has an extensive theme system that allows you to leverage community-maint When you [create a new Jekyll site](/docs/quickstart) (by running the `jekyll new ` command), Jekyll installs a site that uses a gem-based theme called [Minima](https://github.com/jekyll/minima). -With gem-based themes, some of the site's directories (such as the `assets`, `_layouts`, `_includes`, and `_sass` directories) are stored in the theme-gem, hidden from your immediate view. Yet all of the necessary directories will be read and processed during Jekyll's build process. +With gem-based themes, some of the site's directories (such as the `assets`, `_layouts`, `_includes`, and `_sass` directories) are stored in the theme's gem, hidden from your immediate view. Yet all of the necessary directories will be read and processed during Jekyll's build process. In the case of Minima, you see only the following files in your Jekyll site directory: @@ -19,7 +19,7 @@ In the case of Minima, you see only the following files in your Jekyll site dire ├── Gemfile.lock ├── _config.yml ├── _posts -│   └── 2016-12-04-welcome-to-jekyll.markdown +│ └── 2016-12-04-welcome-to-jekyll.markdown ├── about.md └── index.md ``` @@ -28,7 +28,7 @@ The `Gemfile` and `Gemfile.lock` files are used by Bundler to keep track of the Gem-based themes make it easy for theme developers to make updates available to anyone who has the theme gem. When there's an update, theme developers push the update to RubyGems. -If you have the theme gem, you can (if you desire) run `bundle update` to update all gems in your project. Or you can run `bundle update `, replacing `` with the theme name, such as `minima`, to just update the theme gem. Any new files or updates the theme developer has made (such as to stylesheets or includes) will be pulled into your project automatically. +If you have the theme gem, you can (if you desire) run `bundle update` to update all gems in your project. Or you can run `bundle update `, replacing `` with the theme name, such as `minima`, to just update the theme gem. Any new files or updates the theme developer has made (such as to stylesheets or includes) will be pulled into your project automatically. The goal of gem-based themes is to allow you to get all the benefits of a robust, continually updated theme without having all the theme's files getting in your way and over-complicating what might be your primary focus: creating content. @@ -40,30 +40,31 @@ For example, if your selected theme has a `page` layout, you can override the th Jekyll will look first to your site's content before looking to the theme's defaults for any requested file in the following folders: -* `/assets` -* `/_layouts` -* `/_includes` -* `/_sass` +- `/assets` +- `/_layouts` +- `/_includes` +- `/_sass` Refer to your selected theme's documentation and source repository for more information on what files you can override. {: .note .info} To locate theme's files on your computer: -1. Run `bundle show` followed by the name of the theme's gem, e.g., `bundle show minima` for default Jekyll's theme. +1. Run `bundle show` followed by the name of the theme's gem, e.g., `bundle show minima` for default Jekyll's theme. - The location of the theme gem is returned. For example, minima is located in `/usr/local/lib/ruby/gems/2.3.0/gems/minima-2.1.0` when using the system Ruby installation on a Mac. + This returns the location of the gem-based theme files. For example, Minima theme's files are located in `/usr/local/lib/ruby/gems/2.3.0/gems/minima-2.1.0` on macOS. -2. Change to the directory's location and open the directory in Finder or Explorer: +2. Open the theme's directory in Finder or Explorer: - ``` - cd /usr/local/lib/ruby/gems/2.3.0/gems/minima-2.1.0 - open . - # for Windows, use "explorer ." - ``` + ```shell + # On MacOS + open $(bundle show minima) + # On Windows + explorer /usr/local/lib/ruby/gems/2.3.0/gems/minima-2.1.0 + ``` + + A Finder or Explorer window opens showing the theme's files and directories. The Minima theme gem contains these files: - A Finder or Explorer window opens showing the theme's files and directories. The Minima theme gem contains these files: - ``` ├── LICENSE.txt ├── README.md @@ -92,9 +93,9 @@ To locate theme's files on your computer: └── main.scss ``` - With a clear understanding of the theme's files, you can now override any theme file by creating a similarly named file in your Jekyll site directory. - - Let's say you want to override Minima's footer. In your Jekyll site, create an `_includes` folder and add a file in it called `footer.html`. Jekyll will now use your site's `footer.html` file instead of the `footer.html` file from the Minima theme gem. + With a clear understanding of the theme's files, you can now override any theme file by creating a similarly named file in your Jekyll site directory. + + Let's say you want to override Minima's footer. In your Jekyll site, create an `_includes` folder and add a file in it called `footer.html`. Jekyll will now use your site's `footer.html` file instead of the `footer.html` file from the Minima theme gem. ## Converting gem-based themes to regular themes @@ -102,9 +103,10 @@ Suppose you want to get rid of the gem-based theme and convert it to a regular t To do this, copy the files from the theme gem's directory into your Jekyll site directory. (For example, copy them to `/myblog` if you created your Jekyll site at `/myblog`. See the previous section for details.) -Then modify the Gemfile and configuration to remove references to the theme gem. For example, to remove Minima: -* Open `Gemfile` and remove `gem "minima", "~> 2.0"`. -* Open `_config.yml` and remove `theme: minima`. +Then remove references to the theme gem in `Gemfile` and configuration. For example, to remove `minima`: + +- Open `Gemfile` and remove `gem "minima", "~> 2.0"`. +- Open `_config.yml` and remove `theme: minima`. Now `bundle update` will no longer get updates for the theme gem. @@ -116,32 +118,31 @@ For example, search for [jekyll theme on RubyGems](https://rubygems.org/search?u To install a gem-based theme: -1. Add the theme to your site's `Gemfile`: +1. Add the theme to your site's `Gemfile`: - ```sh - gem 'my-awesome-jekyll-theme' - ``` + ```sh + gem "jekyll-theme-awesome" + ``` -2. Install the theme: +2. Install the theme: - ```sh - bundle install - ``` + ```sh + bundle install + ``` 3. Add the following to your site's `_config.yml` to activate the theme: - ```sh - theme: my-awesome-jekyll-theme - ``` + ```sh + theme: jekyll-theme-awesome + ``` -4. Build your site: +4. Build your site: - ```sh - bundle exec jekyll serve - ``` + ```sh + bundle exec jekyll serve + ``` -You can have multiple themes listed in your site's `Gemfile`, but only one theme can be selected in your site's `_config.yml`. -{: .note .info } +You can have multiple themes listed in your site's `Gemfile`, but only one theme can be selected in your site's `_config.yml`. {: .note .info } If you're publishing your Jekyll site on [GitHub Pages](https://pages.github.com/), note that GitHub Pages supports only some gem-based themes. See [Supported Themes](https://pages.github.com/themes/) in GitHub's documentation to see which themes are supported. @@ -149,24 +150,26 @@ If you're publishing your Jekyll site on [GitHub Pages](https://pages.github.com If you're a Jekyll theme developer (rather than just a consumer of themes), you can package up your theme in RubyGems and allow users to install it through Bundler. -If you're unfamiliar with creating Ruby gems, don't worry. Jekyll will help you scaffold a new theme with the `new-theme` command. Just run `jekyll new-theme` with the theme name as an argument: +If you're unfamiliar with creating Ruby gems, don't worry. Jekyll will help you scaffold a new theme with the `new-theme` command. Run `jekyll new-theme` with the theme name as an argument. + +Here is an example: ```sh -jekyll new-theme my-awesome-theme - create /path/to/my-awesome-theme/_layouts - create /path/to/my-awesome-theme/_includes - create /path/to/my-awesome-theme/_sass - create /path/to/my-awesome-theme/_layouts/page.html - create /path/to/my-awesome-theme/_layouts/post.html - create /path/to/my-awesome-theme/_layouts/default.html - create /path/to/my-awesome-theme/Gemfile - create /path/to/my-awesome-theme/my-awesome-theme.gemspec - create /path/to/my-awesome-theme/README.md - create /path/to/my-awesome-theme/LICENSE.txt - initialize /path/to/my-awesome-theme/.git - create /path/to/my-awesome-theme/.gitignore -Your new Jekyll theme, my-awesome-theme, is ready for you in /path/to/my-awesome-theme! -For help getting started, read /path/to/my-awesome-theme/README.md. +jekyll new-theme jekyll-theme-awesome + create /path/to/jekyll-theme-awesome/_layouts + create /path/to/jekyll-theme-awesome/_includes + create /path/to/jekyll-theme-awesome/_sass + create /path/to/jekyll-theme-awesome/_layouts/page.html + create /path/to/jekyll-theme-awesome/_layouts/post.html + create /path/to/jekyll-theme-awesome/_layouts/default.html + create /path/to/jekyll-theme-awesome/Gemfile + create /path/to/jekyll-theme-awesome/jekyll-theme-awesome.gemspec + create /path/to/jekyll-theme-awesome/README.md + create /path/to/jekyll-theme-awesome/LICENSE.txt + initialize /path/to/jekyll-theme-awesome/.git + create /path/to/jekyll-theme-awesome/.gitignore +Your new Jekyll theme, jekyll-theme-awesome, is ready for you in /path/to/jekyll-theme-awesome! +For help getting started, read /path/to/jekyll-theme-awesome/README.md. ``` Add your template files in the corresponding folders. Then complete the `.gemspec` and the README files according to your needs. @@ -179,10 +182,10 @@ For example, if your theme has a `/_layouts/page.html` file, and a page has `lay ### Assets -Any file in `/assets` will be copied over to the user's site upon build unless they have a file with the same relative path. You can ship any kind of asset here: SCSS, an image, a webfont, etc. These files behave just like pages and static files in Jekyll: +Any file in `/assets` will be copied over to the user's site upon build unless they have a file with the same relative path. You can ship any kind of asset here: SCSS, an image, a webfont, etc. These files behave like pages and static files in Jekyll: -* If the file has [YAML front matter](../docs/frontmatter/) at the top, it will be rendered. -* If the file does not have YAML front matter, it will simply be copied over into the resulting site. +- If the file has [YAML front matter](../docs/frontmatter/) at the top, it will be rendered. +- If the file does not have YAML front matter, it will simply be copied over into the resulting site. This allows theme creators to ship a default `/assets/styles.scss` file which their layouts can depend on as `/assets/styles.css`. @@ -193,8 +196,8 @@ All files in `/assets` will be output into the compiled site in the `/assets` fo Your theme's stylesheets should be placed in your theme's `_sass` folder, again, just as you would when authoring a Jekyll site. ``` - _sass -├── jekyll-theme-my-awesome-theme.scss +_sass +├── jekyll-theme-awesome.scss ``` Your theme's styles can be included in the user's stylesheet using the `@import` directive. @@ -215,20 +218,22 @@ Themes are visual. Show users what your theme looks like by including a screensh To preview your theme as you're authoring it, it may be helpful to add dummy content in, for example, `/index.html` and `/page.html` files. This will allow you to use the `jekyll build` and `jekyll serve` commands to preview your theme, just as you'd preview a Jekyll site. -If you do preview your theme locally, be sure to add `/_site` to your theme's `.gitignore` file to prevent the compiled site from also being included when you distribute your theme. -{: .info .note} +If you do preview your theme locally, be sure to add `/_site` to your theme's `.gitignore` file to prevent the compiled site from also being included when you distribute your theme. {: .info .note} ### Publishing your theme -Themes are published via [RubyGems.org](https://rubygems.org). You'll need a RubyGems account, which you can [create for free](https://rubygems.org/sign_up). +Themes are published via [RubyGems.org](https://rubygems.org). You will need a RubyGems account, which you can [create for free](https://rubygems.org/sign_up). -1. First, package your theme, by running the following command, replacing `my-awesome-jekyll-theme` with the name of your theme: +1. First, package your theme, by running the following command, replacing `jekyll-theme-awesome` with the name of your theme: - gem build my-awesome-jekyll-theme.gemspec + ```sh + gem build jekyll-theme-awesome.gemspec + ``` -2. Next, push your packaged theme up to the RubyGems service, by running the following command, again replacing `my-awesome-jekyll-theme` with the name of your theme: +2. Next, push your packaged theme up to the RubyGems service, by running the following command, again replacing `jekyll-theme-awesome` with the name of your theme: - gem push my-awesome-jekyll-theme-*.gem + ```sh + gem push jekyll-theme-awesome-*.gem + ``` -3. To release a new version of your theme, simply update the version number in the gemspec file, ( `my-awesome-jekyll-theme.gemspec` in this example ), and then repeat Steps 1 & 2 above. -We recommend that you follow [Semantic Versioning](http://semver.org/) while bumping your theme-version. +3. To release a new version of your theme, update the version number in the gemspec file, ( `jekyll-theme-awesome.gemspec` in this example ), and then repeat Steps 1 & 2 above. We recommend that you follow [Semantic Versioning](http://semver.org/) while bumping your theme-version. From 0f9a4ac07292bd4db035fb1e250af3c20391e13c Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 8 Jan 2017 06:02:31 -0800 Subject: [PATCH 085/207] Update history to reflect merge of #5692 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 8335a37f..3b570492 100644 --- a/History.markdown +++ b/History.markdown @@ -53,6 +53,7 @@ * Update windows.md (#5683) * Improve permalinks docs (#5693) * Document --unpublished build option (#5720) + * Improve pages docs (#5692) ## 3.3.1 / 2016-11-14 From dd397b6c4b24da613bce20c303151a9292cb4a78 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 8 Jan 2017 06:06:08 -0800 Subject: [PATCH 086/207] Update history to reflect merge of #5696 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 3b570492..b75a9f15 100644 --- a/History.markdown +++ b/History.markdown @@ -54,6 +54,7 @@ * Improve permalinks docs (#5693) * Document --unpublished build option (#5720) * Improve pages docs (#5692) + * Added new includes.md topic to docs (#5696) ## 3.3.1 / 2016-11-14 From 02a8ce5585cd69077b345fc9675e166dc186dff9 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Sun, 8 Jan 2017 15:15:48 +0100 Subject: [PATCH 087/207] add spaces to variables --- docs/_docs/templates.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_docs/templates.md b/docs/_docs/templates.md index 32050813..404e3704 100644 --- a/docs/_docs/templates.md +++ b/docs/_docs/templates.md @@ -539,13 +539,13 @@ You can also use the `link` tag to create a link in Markdown as follows: {% endraw %} ``` -(Including `{% raw %}{{site.baseurl}}{% endraw %}` is optional — it depends on whether you want to preface the page URL with the `baseurl` value.) +(Including `{% raw %}{{ site.baseurl }}{% endraw %}` is optional — it depends on whether you want to preface the page URL with the `baseurl` value.) The path to the post, page, or collection is defined as the path relative to the root directory (where your config file is) to the file, not the path from your existing page to the other page. For example, suppose you're creating a link `page_a.md` (stored in `pages/folder1/folder2`) to `page_b.md` (stored in `pages/folder1`). Your path in the link would not be `../page_b.html`. Instead, it would be `/pages/folder1/page_b.md`. -If you're unsure of the path, add `{% raw %}{{page.path}}{% endraw %}` to the page and it will display the path. +If you're unsure of the path, add `{% raw %}{{ page.path }}{% endraw %}` to the page and it will display the path. One major benefit of using the `link` tag is link validation. If the link doesn't exist, Jekyll won't build your site. This is a good thing, as it will alert you to a broken link so you can fix it (rather than allowing you to build and deploy a site with broken links). From 441b275af2135bdb315ca9c6ac32b416b1d1705f Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Sun, 8 Jan 2017 16:43:59 +0100 Subject: [PATCH 088/207] fix broken links in documentation --- docs/_docs/deployment-methods.md | 3 +-- docs/_docs/extras.md | 2 +- docs/_docs/github-pages.md | 8 +++----- docs/_docs/permalinks.md | 2 +- docs/_docs/quickstart.md | 4 ++-- docs/_docs/windows.md | 5 +++-- 6 files changed, 11 insertions(+), 13 deletions(-) diff --git a/docs/_docs/deployment-methods.md b/docs/_docs/deployment-methods.md index cefb4d32..62c94257 100644 --- a/docs/_docs/deployment-methods.md +++ b/docs/_docs/deployment-methods.md @@ -168,7 +168,7 @@ script executes. [Rack-Jekyll](https://github.com/adaoraul/rack-jekyll/) is an easy way to deploy your site on any Rack server such as Amazon EC2, Slicehost, Heroku, and so forth. It also can run with [shotgun](https://github.com/rtomayko/shotgun/), [rackup](https://github.com/rack/rack), [mongrel](https://github.com/mongrel/mongrel), [unicorn](https://github.com/defunkt/unicorn/), and [others](https://github.com/adaoraul/rack-jekyll#readme). -Read [this post](http://andycroll.com/ruby/serving-a-jekyll-blog-using-heroku) on how to deploy to Heroku using Rack-Jekyll. +Read [this post](http://andycroll.com/ruby/serving-a-jekyll-blog-using-heroku/) on how to deploy to Heroku using Rack-Jekyll. ## Jekyll-Admin for Rails @@ -207,4 +207,3 @@ Setting up Kickster is very easy, just install the gem and you are good to go. M [Aerobatic](https://www.aerobatic.com) is an add-on for Bitbucket that brings GitHub Pages style functionality to Bitbucket users. It includes continuous deployment, custom domains with a wildcard SSL cert, CDN, basic auth, and staging branches all in the box. Automating the build and deployment of a Jekyll site is just as simple as GitHub Pages - push your changes to your repo (excluding the `_site` directory) and within seconds a build will be triggered and your built site deployed to our highly- available, globally distributed hosting service. The build process will even install and execute custom Ruby plugins. See our [Jekyll docs](https://www.aerobatic.com/docs/static-generators#jekyll) for more details. - diff --git a/docs/_docs/extras.md b/docs/_docs/extras.md index 83e79963..a52ccaf1 100644 --- a/docs/_docs/extras.md +++ b/docs/_docs/extras.md @@ -15,7 +15,7 @@ Kramdown comes with optional support for LaTeX to PNG rendering via [MathJax](ht ``` -For more information about getting started, check out [this excellent blog post](http://gastonsanchez.com/opinion/2014/02/16/Mathjax-with-jekyll/). +For more information about getting started, check out [this excellent blog post](http://gastonsanchez.com/visually-enforced/opinion/2014/02/16/Mathjax-with-jekyll/). ## Alternative Markdown Processors diff --git a/docs/_docs/github-pages.md b/docs/_docs/github-pages.md index 710f702e..b9b0cce6 100644 --- a/docs/_docs/github-pages.md +++ b/docs/_docs/github-pages.md @@ -12,15 +12,13 @@ content, they’re also a great way to host your Jekyll-powered website for free Never built a website with GitHub Pages before? [See this marvelous guide by Jonathan McGlone to get you up and running](http://jmcglone.com/guides/github-pages/). -This guide will teach you what you need to know about Git, GitHub, and Jekyll to -create your very own website on GitHub Pages. +This guide will teach you what you need to know about Git, GitHub, and Jekyll to create your very own website on GitHub Pages. ### Project Page URL Structure Sometimes it's nice to preview your Jekyll site before you push your `gh-pages` branch to GitHub. However, the subdirectory-like URL structure GitHub uses for -Project Pages complicates the proper resolution of URLs. In order to assure your -site builds properly, use `site.github.url` in your URL's. +Project Pages complicates the proper resolution of URLs. In order to assure your site builds properly, use `site.github.url` in your URL's. ```html {% raw %} @@ -91,7 +89,7 @@ gem 'github-pages' And be sure to run `bundle update` often. If you like to install `pages-gem` on Windows you can find instructions by Jens Willmer on -[how to install github-pages gem on Windows (x64)]("https://jwillmer.de/blog/tutorial/how-to-install-jekyll-and-pages-gem-on-windows-10-x46#github-pages-and-plugins"). +[how to install github-pages gem on Windows (x64)](https://jwillmer.de/blog/tutorial/how-to-install-jekyll-and-pages-gem-on-windows-10-x46#github-pages-and-plugins).
diff --git a/docs/_docs/permalinks.md b/docs/_docs/permalinks.md index b8fd5ec6..dc6ae44f 100644 --- a/docs/_docs/permalinks.md +++ b/docs/_docs/permalinks.md @@ -328,7 +328,7 @@ As with posts, if you use a permalink style that omits the `.html` file extensio By default, collections follow a similar structure in the `_site` folder as pages, except that the path is prefaced by the collection name. For example: `collectionname/mypage.html`. For permalink settings that omit the file extension, the path would be `collection_name/mypage/index.html`. -Collections have their own way of setting permalinks. Additionally, collections have unique template variables available available (such as `path` and `output_ext`). See the [Configuring permalinks for collections]( ../collections#permalinks ) in Collections for more information. +Collections have their own way of setting permalinks. Additionally, collections have unique template variables available available (such as `path` and `output_ext`). See the [Configuring permalinks for collections](../collections/#permalinks) in Collections for more information. ## Flattening pages in \_site on build diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index d15a9eb1..7a81e70e 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -4,7 +4,7 @@ title: Quick-start guide permalink: /docs/quickstart/ --- -If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGems](https://rubygems.org/pages/download) installed (see Jekyll's [requirements](/docs/installation/#requirements/)), you can create a new Jekyll site by doing the following: +If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGems](https://rubygems.org/pages/download) installed (see Jekyll's [requirements](../installation/#requirements)), you can create a new Jekyll site by doing the following: ```sh # Install Jekyll and Bundler gems through RubyGems @@ -35,7 +35,7 @@ If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGem `jekyll new ` installs a new Jekyll site at the path specified (relative to current directory). In this case, Jekyll will be installed in a directory called `myblog`. Here are some additional details: -* To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. +* To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. * `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) * By default, the Jekyll site installed by `jekyll new` uses a gem-based theme called [Minima](https://github.com/jekyll/minima). With [gem-based themes](../themes), some of the directories and files are stored in the theme-gem, hidden from your immediate view. * To learn about other parameters you can include with `jekyll new`, type `jekyll new --help`. diff --git a/docs/_docs/windows.md b/docs/_docs/windows.md index 8d7bb8bc..7dedde22 100644 --- a/docs/_docs/windows.md +++ b/docs/_docs/windows.md @@ -17,6 +17,7 @@ A quick way to install Jekyll is to follow the [installation instructions by Dav 3. Reopen a command prompt and install Jekyll: `gem install jekyll` Updates in the infrastructure of Ruby may cause SSL errors when attempting to use `gem install` with versions of the RubyGems package older than 2.6. (The RubyGems package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update the RubyGems package using the directions [here.][ssl-certificate-update] + [ssl-certificate-update]: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages For a more conventional way of installing Jekyll you can follow this [complete guide to install Jekyll 3 on Windows by Sverrir Sigmundarson][windows-installjekyll3]. @@ -39,10 +40,10 @@ $ chcp 65001 ## Timezone Management -Since Windows doesn't have a native source of zoneinfo data, the Ruby Interpreter would not understand IANA Timezones and hence using them had the `TZ` environment variable default to UTC/GMT 00:00. +Since Windows doesn't have a native source of zoneinfo data, the Ruby Interpreter would not understand IANA Timezones and hence using them had the `TZ` environment variable default to UTC/GMT 00:00. Though Windows users could alternatively define their blog's timezone by setting the key to use POSIX format of defining timezones, it wasn't as user-friendly when it came to having the clock altered to changing DST-rules. -Jekyll now uses a rubygem to internally configure Timezone based on established [IANA Timezone Database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). +Jekyll now uses a rubygem to internally configure Timezone based on established [IANA Timezone Database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). While 'new' blogs created with Jekyll v3.4 and greater, will have the following added to their 'Gemfile' by default, existing sites *will* have to update their 'Gemfile' (and installed) to enable development on Windows: ```ruby From 6cd388b2ab03658789bb093ef84ebdf67dfadfd8 Mon Sep 17 00:00:00 2001 From: Longwelwind Date: Sun, 8 Jan 2017 23:12:45 +0100 Subject: [PATCH 089/207] Replace a dead link with a web-archived one --- docs/_docs/extras.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/extras.md b/docs/_docs/extras.md index 83e79963..9064d967 100644 --- a/docs/_docs/extras.md +++ b/docs/_docs/extras.md @@ -15,7 +15,7 @@ Kramdown comes with optional support for LaTeX to PNG rendering via [MathJax](ht ``` -For more information about getting started, check out [this excellent blog post](http://gastonsanchez.com/opinion/2014/02/16/Mathjax-with-jekyll/). +For more information about getting started, check out [this excellent blog post](https://web.archive.org/web/20160522225559/http://gastonsanchez.com/opinion/2014/02/16/Mathjax-with-jekyll). ## Alternative Markdown Processors From 5ef6edb97770f9fc73c1a161d129a37daca499f1 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 8 Jan 2017 14:51:30 -0800 Subject: [PATCH 090/207] Update history to reflect merge of #5738 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index b75a9f15..baf346a1 100644 --- a/History.markdown +++ b/History.markdown @@ -55,6 +55,7 @@ * Document --unpublished build option (#5720) * Improve pages docs (#5692) * Added new includes.md topic to docs (#5696) + * Replace a dead link with a web-archived one (#5738) ## 3.3.1 / 2016-11-14 From 0ebc832e1b21b712f108ad0892c869be2893ef85 Mon Sep 17 00:00:00 2001 From: Kurt Anderson Date: Mon, 9 Jan 2017 08:01:58 -0500 Subject: [PATCH 091/207] Remove duplicate paragraph. --- docs/_docs/github-pages.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/_docs/github-pages.md b/docs/_docs/github-pages.md index 710f702e..0a00f2fa 100644 --- a/docs/_docs/github-pages.md +++ b/docs/_docs/github-pages.md @@ -132,12 +132,6 @@ stored in a specially named `gh-pages` branch or in a `docs` folder on the will become available under a subpath of your user pages subdomain, such as `username.github.io/project` (unless a custom domain is specified). -The Jekyll project repository itself is a perfect example: the -[master branch]({{ site.repository }}) contains the actual software project -for Jekyll, however the Jekyll website (that you’re looking at right now) is -contained in the [docs folder]({{ site.repository }}/tree/master/docs) of the -same repository. - The Jekyll project repository itself is a perfect example of this branch structure—the [master branch]({{ site.repository }}) contains the actual software project for Jekyll, and the Jekyll website that you’re From 74fe613072d377c747ab37a4cc47f08f91a922b3 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 9 Jan 2017 05:16:12 -0800 Subject: [PATCH 092/207] Update history to reflect merge of #5740 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index baf346a1..c0764538 100644 --- a/History.markdown +++ b/History.markdown @@ -56,6 +56,7 @@ * Improve pages docs (#5692) * Added new includes.md topic to docs (#5696) * Replace a dead link with a web-archived one (#5738) + * Remove duplicate paragraph. (#5740) ## 3.3.1 / 2016-11-14 From 8a5672fdffd87e586c2f97b5f77b7ca7aa7c53c2 Mon Sep 17 00:00:00 2001 From: Kenton Hansen Date: Mon, 10 Oct 2016 15:55:40 -0500 Subject: [PATCH 093/207] Addition of a sample "typical post" So, I thought this section in the docs would be a good place to put the anatomy of a post .md file. --- site/_docs/posts.md | 255 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 site/_docs/posts.md diff --git a/site/_docs/posts.md b/site/_docs/posts.md new file mode 100644 index 00000000..bc8628c9 --- /dev/null +++ b/site/_docs/posts.md @@ -0,0 +1,255 @@ +--- +layout: docs +title: Writing posts +permalink: /docs/posts/ +--- + +One of Jekyll’s best aspects is that it is “blog aware”. What does this mean, +exactly? Well, simply put, it means that blogging is baked into Jekyll’s +functionality. If you write articles and publish them online, you can publish +and maintain a blog simply by managing a folder of text-files on your computer. +Compared to the hassle of configuring and maintaining databases and web-based +CMS systems, this will be a welcome change! + +## The Posts Folder + +As explained on the [directory structure](../structure/) page, the `_posts` +folder is where your blog posts will live. These files are generally +[Markdown](https://daringfireball.net/projects/markdown/) or HTML, but can +be other formats with the proper converter installed. +All posts must have [YAML Front Matter](../frontmatter/), and they will be +converted from their source format into an HTML page that is part of your +static site. + +### Creating Post Files + +To create a new post, all you need to do is create a file in the `_posts` +directory. How you name files in this folder is important. Jekyll requires blog +post files to be named according to the following format: + +```sh +YEAR-MONTH-DAY-title.MARKUP +``` + +Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit +numbers, and `MARKUP` is the file extension representing the format used in the +file. For example, the following are examples of valid post filenames: + +```sh +2011-12-31-new-years-eve-is-awesome.md +2012-09-12-how-to-write-a-blog.md +``` + +
+
ProTip™: Link to other posts
+

+ Use the post_url + tag to link to other posts without having to worry about the URL's + breaking when the site permalink style changes. +

+
+ +### Content Formats + +All blog post files must begin with [YAML Front Matter](../frontmatter/). After +that, it's simply a matter of deciding which format you prefer. Jekyll supports +[Markdown](https://daringfireball.net/projects/markdown/) out of the box, +and has [myriad extensions for other formats as well](/docs/plugins/#converters-1), +including the popular [Textile](http://redcloth.org/textile) format. These +formats each have their own way of marking up different types of content +within a post, so you should familiarize yourself with these formats and +decide which one best suits your needs. + +
+
Be aware of character sets
+

+ Content processors can modify certain characters to make them look nicer. + For example, the smart extension in Redcarpet converts standard, + ASCII quotation characters to curly, Unicode ones. In order for the browser + to display those characters properly, define the charset meta value by + including <meta charset="utf-8"> in the + <head> of your layout. +

+
+ +## Including images and resources + +Chances are, at some point, you'll want to include images, downloads, or other +digital assets along with your text content. While the syntax for linking to +these resources differs between Markdown and Textile, the problem of working +out where to store these files in your site is something everyone will face. + +Because of Jekyll’s flexibility, there are many solutions to how to do this. +One common solution is to create a folder in the root of the project directory +called something like `assets` or `downloads`, into which any images, downloads +or other resources are placed. Then, from within any post, they can be linked +to using the site’s root as the path for the asset to include. Again, this will +depend on the way your site’s (sub)domain and path are configured, but here are +some examples (in Markdown) of how you could do this using the `site.url` +variable in a post. + +Including an image asset in a post: + +```text +... which is shown in the screenshot below: +![My helpful screenshot]({% raw %}{{ site.url }}{% endraw %}/assets/screenshot.jpg) +``` + +Linking to a PDF for readers to download: + +```text +... you can [get the PDF]({% raw %}{{ site.url }}{% endraw %}/assets/mydoc.pdf) directly. +``` + +
+
ProTip™: Link using just the site root URL
+

+ You can skip the {% raw %}{{ site.url }}{% endraw %} variable + if you know your site will only ever be displayed at the + root URL of your domain. In this case you can reference assets directly with + just /path/file.jpg. +

+
+ +## A typical post + +Jekyll can handle many different iterations of the idea you might associate with a "post," however a standard blog style post, including an Title, Layout, Publishing Date, and Categories might look like this: + +``` +--- +layout: post +title: "Welcome to Jekyll!" +date: 2015-11-17 16:16:01 -0600 +categories: jekyll update +--- +You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. + +To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. + +``` +Everything in between the first and second `---` are part of the YAML Front Matter, and everything after the second `---` will be rendered with Markdown and show up as "Content." + +## Displaying an index of posts + +It’s all well and good to have posts in a folder, but a blog is no use unless +you have a list of posts somewhere. Creating an index of posts on another page +(or in a [template](../templates/)) is easy, thanks to the [Liquid template +language](https://docs.shopify.com/themes/liquid/basics) and its tags. Here’s a +basic example of how to create a list of links to your blog posts: + +```html + +``` + +Of course, you have full control over how (and where) you display your posts, +and how you structure your site. You should read more about [how templates +work](../templates/) with Jekyll if you want to know more. + +Note that the `post` variable only exists inside the `for` loop above. If +you wish to access the currently-rendering page/posts's variables (the +variables of the post/page that has the `for` loop in it), use the `page` +variable instead. + +## Post excerpts + +Each post automatically takes the first block of text, from the beginning of +the content to the first occurrence of `excerpt_separator`, and sets it as the `post.excerpt`. +Take the above example of an index of posts. Perhaps you want to include +a little hint about the post's content by adding the first paragraph of each of +your posts: + +```html + +``` + +Because Jekyll grabs the first paragraph you will not need to wrap the excerpt +in `p` tags, which is already done for you. These tags can be removed with the +following if you'd prefer: + +```html +{% raw %}{{ post.excerpt | remove: '

' | remove: '

' }}{% endraw %} +``` + +If you don't like the automatically-generated post excerpt, it can be +explicitly overridden by adding an `excerpt` value to your post's YAML +Front Matter. Alternatively, you can choose to define a custom +`excerpt_separator` in the post's YAML front matter: + +```text +--- +excerpt_separator: +--- + +Excerpt + +Out-of-excerpt +``` + +You can also set the `excerpt_separator` globally in your `_config.yml` +configuration file. + +Completely disable excerpts by setting your `excerpt_separator` to `""`. + +Also, as with any output generated by Liquid tags, you can pass the +`| strip_html` filter to remove any html tags in the output. This is +particularly helpful if you wish to output a post excerpt as a +`meta="description"` tag within the post `head`, or anywhere else having +html tags along with the content is not desirable. + +## Highlighting code snippets + +Jekyll also has built-in support for syntax highlighting of code snippets using +either Pygments or Rouge, and including a code snippet in any post is easy. +Just use the dedicated Liquid tag as follows: + +```text +{% raw %}{% highlight ruby %}{% endraw %} +def show + @widget = Widget(params[:id]) + respond_to do |format| + format.html # show.html.erb + format.json { render json: @widget } + end +end +{% raw %}{% endhighlight %}{% endraw %} +``` + +And the output will look like this: + +```ruby +def show + @widget = Widget(params[:id]) + respond_to do |format| + format.html # show.html.erb + format.json { render json: @widget } + end +end +``` + +
+
ProTip™: Show line numbers
+

+ You can make code snippets include line-numbers by adding the word + linenos to the end of the opening highlight tag like this: + {% raw %}{% highlight ruby linenos %}{% endraw %}. +

+
+ +These basics should be enough to get you started writing your first posts. When +you’re ready to dig into what else is possible, you might be interested in +doing things like [customizing post permalinks](../permalinks/) or +using [custom variables](../variables/) in your posts and elsewhere on your +site. From b1291605b36d978f0fab9fcc7de48879a67ace86 Mon Sep 17 00:00:00 2001 From: Kenton Hansen Date: Mon, 10 Oct 2016 16:46:42 -0500 Subject: [PATCH 094/207] Changes to 'bundle exec jekyll serve' Updated to be consistent with the rest of documentation. --- site/_docs/posts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/_docs/posts.md b/site/_docs/posts.md index bc8628c9..d4d8f15d 100644 --- a/site/_docs/posts.md +++ b/site/_docs/posts.md @@ -122,7 +122,7 @@ title: "Welcome to Jekyll!" date: 2015-11-17 16:16:01 -0600 categories: jekyll update --- -You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. +You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `bundle exec jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. From e60769731afc143ca3e2b7fc082be5ec17e16ad9 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Mon, 9 Jan 2017 15:25:59 +0100 Subject: [PATCH 095/207] Report modifications to docs --- docs/_docs/posts.md | 18 ++++ site/_docs/posts.md | 255 -------------------------------------------- 2 files changed, 18 insertions(+), 255 deletions(-) delete mode 100644 site/_docs/posts.md diff --git a/docs/_docs/posts.md b/docs/_docs/posts.md index 40aa8365..d4d8f15d 100644 --- a/docs/_docs/posts.md +++ b/docs/_docs/posts.md @@ -111,6 +111,24 @@ Linking to a PDF for readers to download:

+## A typical post + +Jekyll can handle many different iterations of the idea you might associate with a "post," however a standard blog style post, including an Title, Layout, Publishing Date, and Categories might look like this: + +``` +--- +layout: post +title: "Welcome to Jekyll!" +date: 2015-11-17 16:16:01 -0600 +categories: jekyll update +--- +You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `bundle exec jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. + +To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. + +``` +Everything in between the first and second `---` are part of the YAML Front Matter, and everything after the second `---` will be rendered with Markdown and show up as "Content." + ## Displaying an index of posts It’s all well and good to have posts in a folder, but a blog is no use unless diff --git a/site/_docs/posts.md b/site/_docs/posts.md deleted file mode 100644 index d4d8f15d..00000000 --- a/site/_docs/posts.md +++ /dev/null @@ -1,255 +0,0 @@ ---- -layout: docs -title: Writing posts -permalink: /docs/posts/ ---- - -One of Jekyll’s best aspects is that it is “blog aware”. What does this mean, -exactly? Well, simply put, it means that blogging is baked into Jekyll’s -functionality. If you write articles and publish them online, you can publish -and maintain a blog simply by managing a folder of text-files on your computer. -Compared to the hassle of configuring and maintaining databases and web-based -CMS systems, this will be a welcome change! - -## The Posts Folder - -As explained on the [directory structure](../structure/) page, the `_posts` -folder is where your blog posts will live. These files are generally -[Markdown](https://daringfireball.net/projects/markdown/) or HTML, but can -be other formats with the proper converter installed. -All posts must have [YAML Front Matter](../frontmatter/), and they will be -converted from their source format into an HTML page that is part of your -static site. - -### Creating Post Files - -To create a new post, all you need to do is create a file in the `_posts` -directory. How you name files in this folder is important. Jekyll requires blog -post files to be named according to the following format: - -```sh -YEAR-MONTH-DAY-title.MARKUP -``` - -Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit -numbers, and `MARKUP` is the file extension representing the format used in the -file. For example, the following are examples of valid post filenames: - -```sh -2011-12-31-new-years-eve-is-awesome.md -2012-09-12-how-to-write-a-blog.md -``` - -
-
ProTip™: Link to other posts
-

- Use the post_url - tag to link to other posts without having to worry about the URL's - breaking when the site permalink style changes. -

-
- -### Content Formats - -All blog post files must begin with [YAML Front Matter](../frontmatter/). After -that, it's simply a matter of deciding which format you prefer. Jekyll supports -[Markdown](https://daringfireball.net/projects/markdown/) out of the box, -and has [myriad extensions for other formats as well](/docs/plugins/#converters-1), -including the popular [Textile](http://redcloth.org/textile) format. These -formats each have their own way of marking up different types of content -within a post, so you should familiarize yourself with these formats and -decide which one best suits your needs. - -
-
Be aware of character sets
-

- Content processors can modify certain characters to make them look nicer. - For example, the smart extension in Redcarpet converts standard, - ASCII quotation characters to curly, Unicode ones. In order for the browser - to display those characters properly, define the charset meta value by - including <meta charset="utf-8"> in the - <head> of your layout. -

-
- -## Including images and resources - -Chances are, at some point, you'll want to include images, downloads, or other -digital assets along with your text content. While the syntax for linking to -these resources differs between Markdown and Textile, the problem of working -out where to store these files in your site is something everyone will face. - -Because of Jekyll’s flexibility, there are many solutions to how to do this. -One common solution is to create a folder in the root of the project directory -called something like `assets` or `downloads`, into which any images, downloads -or other resources are placed. Then, from within any post, they can be linked -to using the site’s root as the path for the asset to include. Again, this will -depend on the way your site’s (sub)domain and path are configured, but here are -some examples (in Markdown) of how you could do this using the `site.url` -variable in a post. - -Including an image asset in a post: - -```text -... which is shown in the screenshot below: -![My helpful screenshot]({% raw %}{{ site.url }}{% endraw %}/assets/screenshot.jpg) -``` - -Linking to a PDF for readers to download: - -```text -... you can [get the PDF]({% raw %}{{ site.url }}{% endraw %}/assets/mydoc.pdf) directly. -``` - -
-
ProTip™: Link using just the site root URL
-

- You can skip the {% raw %}{{ site.url }}{% endraw %} variable - if you know your site will only ever be displayed at the - root URL of your domain. In this case you can reference assets directly with - just /path/file.jpg. -

-
- -## A typical post - -Jekyll can handle many different iterations of the idea you might associate with a "post," however a standard blog style post, including an Title, Layout, Publishing Date, and Categories might look like this: - -``` ---- -layout: post -title: "Welcome to Jekyll!" -date: 2015-11-17 16:16:01 -0600 -categories: jekyll update ---- -You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `bundle exec jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. - -To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. - -``` -Everything in between the first and second `---` are part of the YAML Front Matter, and everything after the second `---` will be rendered with Markdown and show up as "Content." - -## Displaying an index of posts - -It’s all well and good to have posts in a folder, but a blog is no use unless -you have a list of posts somewhere. Creating an index of posts on another page -(or in a [template](../templates/)) is easy, thanks to the [Liquid template -language](https://docs.shopify.com/themes/liquid/basics) and its tags. Here’s a -basic example of how to create a list of links to your blog posts: - -```html - -``` - -Of course, you have full control over how (and where) you display your posts, -and how you structure your site. You should read more about [how templates -work](../templates/) with Jekyll if you want to know more. - -Note that the `post` variable only exists inside the `for` loop above. If -you wish to access the currently-rendering page/posts's variables (the -variables of the post/page that has the `for` loop in it), use the `page` -variable instead. - -## Post excerpts - -Each post automatically takes the first block of text, from the beginning of -the content to the first occurrence of `excerpt_separator`, and sets it as the `post.excerpt`. -Take the above example of an index of posts. Perhaps you want to include -a little hint about the post's content by adding the first paragraph of each of -your posts: - -```html - -``` - -Because Jekyll grabs the first paragraph you will not need to wrap the excerpt -in `p` tags, which is already done for you. These tags can be removed with the -following if you'd prefer: - -```html -{% raw %}{{ post.excerpt | remove: '

' | remove: '

' }}{% endraw %} -``` - -If you don't like the automatically-generated post excerpt, it can be -explicitly overridden by adding an `excerpt` value to your post's YAML -Front Matter. Alternatively, you can choose to define a custom -`excerpt_separator` in the post's YAML front matter: - -```text ---- -excerpt_separator: ---- - -Excerpt - -Out-of-excerpt -``` - -You can also set the `excerpt_separator` globally in your `_config.yml` -configuration file. - -Completely disable excerpts by setting your `excerpt_separator` to `""`. - -Also, as with any output generated by Liquid tags, you can pass the -`| strip_html` filter to remove any html tags in the output. This is -particularly helpful if you wish to output a post excerpt as a -`meta="description"` tag within the post `head`, or anywhere else having -html tags along with the content is not desirable. - -## Highlighting code snippets - -Jekyll also has built-in support for syntax highlighting of code snippets using -either Pygments or Rouge, and including a code snippet in any post is easy. -Just use the dedicated Liquid tag as follows: - -```text -{% raw %}{% highlight ruby %}{% endraw %} -def show - @widget = Widget(params[:id]) - respond_to do |format| - format.html # show.html.erb - format.json { render json: @widget } - end -end -{% raw %}{% endhighlight %}{% endraw %} -``` - -And the output will look like this: - -```ruby -def show - @widget = Widget(params[:id]) - respond_to do |format| - format.html # show.html.erb - format.json { render json: @widget } - end -end -``` - -
-
ProTip™: Show line numbers
-

- You can make code snippets include line-numbers by adding the word - linenos to the end of the opening highlight tag like this: - {% raw %}{% highlight ruby linenos %}{% endraw %}. -

-
- -These basics should be enough to get you started writing your first posts. When -you’re ready to dig into what else is possible, you might be interested in -doing things like [customizing post permalinks](../permalinks/) or -using [custom variables](../variables/) in your posts and elsewhere on your -site. From 86fc58491c494c6acfb25d5e6a8d9f4a4c6c754f Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 9 Jan 2017 06:36:52 -0800 Subject: [PATCH 096/207] Update history to reflect merge of #5473 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index c0764538..b578b9bf 100644 --- a/History.markdown +++ b/History.markdown @@ -57,6 +57,7 @@ * Added new includes.md topic to docs (#5696) * Replace a dead link with a web-archived one (#5738) * Remove duplicate paragraph. (#5740) + * Addition of a sample "typical post" (#5473) ## 3.3.1 / 2016-11-14 From 5ac3e0a866d7a2abfa4a081183160874bc082f7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zlatan=20Vasovi=C4=87?= Date: Sat, 7 Jan 2017 11:12:50 +0100 Subject: [PATCH 097/207] Fix #5730: add gcc and make to the list of requirements --- docs/_docs/installation.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_docs/installation.md b/docs/_docs/installation.md index 54dfd9fc..1fb1ca36 100644 --- a/docs/_docs/installation.md +++ b/docs/_docs/installation.md @@ -21,6 +21,7 @@ requirements you’ll need to make sure your system has before you start. - [NodeJS](https://nodejs.org/), or another JavaScript runtime (Jekyll 2 and earlier, for CoffeeScript support). - [Python 2.7](https://www.python.org/downloads/) (for Jekyll 2 and earlier) +- [GCC](https://gcc.gnu.org/install/) and [Make](https://www.gnu.org/software/make/) (in case your system doesn't have them installed, which you can check by running `gcc -v` and `make -v` in your system's command line interface)
Running Jekyll on Windows
From 74e6ef83c9aa274a4ebf2efea372c7479feae68c Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Mon, 9 Jan 2017 21:10:24 +0100 Subject: [PATCH 098/207] Use defaults in config All docs stored in _docs inherit from docs layout All news items stored in _posts inherit from news-item layout --- Rakefile | 1 - docs/_config.yml | 15 +++++++++++++++ docs/_docs/assets.md | 1 - docs/_docs/collections.md | 1 - docs/_docs/conduct.md | 1 - docs/_docs/configuration.md | 1 - docs/_docs/continuous-integration.md | 1 - docs/_docs/contributing.md | 1 - docs/_docs/datafiles.md | 1 - docs/_docs/deployment-methods.md | 1 - docs/_docs/drafts.md | 1 - docs/_docs/extras.md | 1 - docs/_docs/frontmatter.md | 1 - docs/_docs/github-pages.md | 1 - docs/_docs/history.md | 1 - docs/_docs/includes.md | 1 - docs/_docs/index.md | 1 - docs/_docs/installation.md | 1 - docs/_docs/maintaining/affinity-team-captain.md | 1 - docs/_docs/maintaining/avoiding-burnout.md | 1 - docs/_docs/maintaining/becoming-a-maintainer.md | 1 - docs/_docs/maintaining/index.md | 1 - docs/_docs/maintaining/merging-a-pull-request.md | 1 - .../_docs/maintaining/reviewing-a-pull-request.md | 1 - docs/_docs/maintaining/special-labels.md | 1 - docs/_docs/maintaining/triaging-an-issue.md | 1 - docs/_docs/migrations.md | 1 - docs/_docs/pages.md | 1 - docs/_docs/pagination.md | 1 - docs/_docs/permalinks.md | 1 - docs/_docs/plugins.md | 1 - docs/_docs/posts.md | 1 - docs/_docs/quickstart.md | 1 - docs/_docs/resources.md | 1 - docs/_docs/sites.md | 1 - docs/_docs/static_files.md | 1 - docs/_docs/structure.md | 1 - docs/_docs/templates.md | 1 - docs/_docs/themes.md | 1 - docs/_docs/troubleshooting.md | 1 - docs/_docs/upgrading/0-to-2.md | 1 - docs/_docs/upgrading/2-to-3.md | 1 - docs/_docs/usage.md | 1 - docs/_docs/variables.md | 1 - docs/_docs/windows.md | 1 - .../2013-05-06-jekyll-1-0-0-released.markdown | 1 - .../2013-05-08-jekyll-1-0-1-released.markdown | 1 - .../2013-05-12-jekyll-1-0-2-released.markdown | 1 - .../2013-06-07-jekyll-1-0-3-released.markdown | 1 - .../2013-07-14-jekyll-1-1-0-released.markdown | 1 - .../2013-07-24-jekyll-1-1-1-released.markdown | 1 - .../2013-07-25-jekyll-1-0-4-released.markdown | 1 - .../2013-07-25-jekyll-1-1-2-released.markdown | 1 - .../2013-09-06-jekyll-1-2-0-released.markdown | 1 - .../2013-09-14-jekyll-1-2-1-released.markdown | 1 - .../2013-10-28-jekyll-1-3-0-rc1-released.markdown | 1 - .../2013-11-04-jekyll-1-3-0-released.markdown | 1 - .../2013-11-26-jekyll-1-3-1-released.markdown | 1 - .../2013-12-07-jekyll-1-4-0-released.markdown | 1 - .../2013-12-09-jekyll-1-4-1-released.markdown | 1 - .../2013-12-16-jekyll-1-4-2-released.markdown | 1 - .../2014-01-13-jekyll-1-4-3-released.markdown | 1 - .../2014-03-24-jekyll-1-5-0-released.markdown | 1 - .../2014-03-27-jekyll-1-5-1-released.markdown | 1 - .../_posts/2014-05-06-jekyll-turns-2-0-0.markdown | 1 - .../2014-05-08-jekyll-2-0-3-released.markdown | 1 - ...-jekyll-stickers-1-dollar-stickermule.markdown | 1 - ...14-06-28-jekyll-turns-21-i-mean-2-1-0.markdown | 1 - .../2014-07-01-jekyll-2-1-1-released.markdown | 1 - .../2014-07-29-jekyll-2-2-0-released.markdown | 1 - .../2014-08-10-jekyll-2-3-0-released.markdown | 1 - .../2014-09-09-jekyll-2-4-0-released.markdown | 1 - ...lls-midlife-crisis-jekyll-turns-2-5-0.markdown | 1 - .../2014-11-08-jekyll-2-5-1-released.markdown | 1 - .../2014-11-12-jekyll-2-5-2-released.markdown | 1 - ...014-12-17-alfredxing-welcome-to-jekyll-core.md | 1 - .../2014-12-22-jekyll-2-5-3-released.markdown | 1 - .../2015-01-20-jekyll-meet-and-greet.markdown | 1 - ...015-01-24-jekyll-3-0-0-beta1-released.markdown | 1 - .../2015-02-26-introducing-jekyll-talk.markdown | 3 +-- .../2015-10-26-jekyll-3-0-released.markdown | 1 - .../2015-11-17-jekyll-3-0-1-released.markdown | 1 - .../2016-01-20-jekyll-3-0-2-released.markdown | 1 - .../2016-01-24-jekyll-3-1-0-released.markdown | 1 - .../2016-01-28-jekyll-3-1-1-released.markdown | 1 - .../2016-02-08-jekyll-3-0-3-released.markdown | 1 - .../2016-02-19-jekyll-3-1-2-released.markdown | 1 - ...10-making-it-easier-to-contribute-to-jekyll.md | 1 - .../2016-04-19-jekyll-3-0-4-released.markdown | 1 - .../2016-04-19-jekyll-3-1-3-released.markdown | 2 -- .../2016-04-26-jekyll-3-0-5-released.markdown | 1 - .../2016-05-18-jekyll-3-1-4-released.markdown | 1 - .../2016-05-18-jekyll-3-1-5-released.markdown | 1 - .../2016-05-19-jekyll-3-1-6-released.markdown | 1 - ...kyll-s-google-summer-of-code-projects.markdown | 1 - .../2016-07-26-jekyll-3-2-0-released.markdown | 1 - .../2016-08-02-jekyll-3-2-1-released.markdown | 1 - ...16-08-24-jekyll-admin-initial-release.markdown | 1 - docs/_posts/2016-10-06-jekyll-3-3-is-here.md | 1 - .../2016-11-14-jekyll-3-3-1-released.markdown | 1 - rake/site.rake | 1 - 101 files changed, 16 insertions(+), 102 deletions(-) diff --git a/Rakefile b/Rakefile index 58aecfaf..4f11a64e 100644 --- a/Rakefile +++ b/Rakefile @@ -101,7 +101,6 @@ def siteify_file(file, overrides_front_matter = {}) slug = File.basename(file, ".markdown").downcase front_matter = { "title" => title, - "layout" => "docs", "permalink" => "/docs/#{slug}/", "note" => "This file is autogenerated. Edit /#{file} instead." }.merge(overrides_front_matter) diff --git a/docs/_config.yml b/docs/_config.yml index 32ae74bb..f3dcb08d 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -10,6 +10,21 @@ help_url: https://github.com/jekyll/jekyll-help timezone: America/Los_Angeles +defaults: + - + scope: + path: "_docs" + type: "docs" + values: + layout: "docs" + - + scope: + path: "_posts" + type: "posts" + values: + layout: "news_item" + + collections: docs: permalink: /:collection/:path/ diff --git a/docs/_docs/assets.md b/docs/_docs/assets.md index 4908a400..7418f984 100644 --- a/docs/_docs/assets.md +++ b/docs/_docs/assets.md @@ -1,5 +1,4 @@ --- -layout: docs title: Assets permalink: /docs/assets/ --- diff --git a/docs/_docs/collections.md b/docs/_docs/collections.md index 22a86e60..8a1c3a1a 100644 --- a/docs/_docs/collections.md +++ b/docs/_docs/collections.md @@ -1,5 +1,4 @@ --- -layout: docs title: Collections permalink: /docs/collections/ --- diff --git a/docs/_docs/conduct.md b/docs/_docs/conduct.md index d68c5ec5..7ba30a5a 100644 --- a/docs/_docs/conduct.md +++ b/docs/_docs/conduct.md @@ -1,6 +1,5 @@ --- title: Code of Conduct -layout: docs permalink: "/docs/conduct/" note: This file is autogenerated. Edit /CONDUCT.markdown instead. redirect_from: "/conduct/index.html" diff --git a/docs/_docs/configuration.md b/docs/_docs/configuration.md index 9df1c85f..e4c35b8a 100644 --- a/docs/_docs/configuration.md +++ b/docs/_docs/configuration.md @@ -1,5 +1,4 @@ --- -layout: docs title: Configuration permalink: /docs/configuration/ --- diff --git a/docs/_docs/continuous-integration.md b/docs/_docs/continuous-integration.md index 54b3466c..c2e8a31f 100644 --- a/docs/_docs/continuous-integration.md +++ b/docs/_docs/continuous-integration.md @@ -1,5 +1,4 @@ --- -layout: docs title: Continuous Integration permalink: /docs/continuous-integration/ --- diff --git a/docs/_docs/contributing.md b/docs/_docs/contributing.md index 9ccac293..724c6641 100644 --- a/docs/_docs/contributing.md +++ b/docs/_docs/contributing.md @@ -1,6 +1,5 @@ --- title: Contributing -layout: docs permalink: "/docs/contributing/" note: This file is autogenerated. Edit /.github/CONTRIBUTING.markdown instead. --- diff --git a/docs/_docs/datafiles.md b/docs/_docs/datafiles.md index 21799169..221ee4d3 100644 --- a/docs/_docs/datafiles.md +++ b/docs/_docs/datafiles.md @@ -1,5 +1,4 @@ --- -layout: docs title: Data Files permalink: /docs/datafiles/ --- diff --git a/docs/_docs/deployment-methods.md b/docs/_docs/deployment-methods.md index cefb4d32..33edec59 100644 --- a/docs/_docs/deployment-methods.md +++ b/docs/_docs/deployment-methods.md @@ -1,5 +1,4 @@ --- -layout: docs title: Deployment methods permalink: /docs/deployment-methods/ --- diff --git a/docs/_docs/drafts.md b/docs/_docs/drafts.md index d5513f75..c4b4f9f0 100644 --- a/docs/_docs/drafts.md +++ b/docs/_docs/drafts.md @@ -1,5 +1,4 @@ --- -layout: docs title: Working with drafts permalink: /docs/drafts/ --- diff --git a/docs/_docs/extras.md b/docs/_docs/extras.md index 9064d967..67236e71 100644 --- a/docs/_docs/extras.md +++ b/docs/_docs/extras.md @@ -1,5 +1,4 @@ --- -layout: docs title: Extras permalink: /docs/extras/ --- diff --git a/docs/_docs/frontmatter.md b/docs/_docs/frontmatter.md index 6dd8e5fe..cb55c444 100644 --- a/docs/_docs/frontmatter.md +++ b/docs/_docs/frontmatter.md @@ -1,5 +1,4 @@ --- -layout: docs title: Front Matter permalink: /docs/frontmatter/ --- diff --git a/docs/_docs/github-pages.md b/docs/_docs/github-pages.md index 0a00f2fa..cc738704 100644 --- a/docs/_docs/github-pages.md +++ b/docs/_docs/github-pages.md @@ -1,5 +1,4 @@ --- -layout: docs title: GitHub Pages permalink: /docs/github-pages/ --- diff --git a/docs/_docs/history.md b/docs/_docs/history.md index 5d07eb40..03767126 100644 --- a/docs/_docs/history.md +++ b/docs/_docs/history.md @@ -1,6 +1,5 @@ --- title: History -layout: docs permalink: "/docs/history/" note: This file is autogenerated. Edit /History.markdown instead. --- diff --git a/docs/_docs/includes.md b/docs/_docs/includes.md index 94c56894..ae6409cd 100644 --- a/docs/_docs/includes.md +++ b/docs/_docs/includes.md @@ -1,5 +1,4 @@ --- -layout: docs title: Includes permalink: /docs/includes/ --- diff --git a/docs/_docs/index.md b/docs/_docs/index.md index 5e08d760..ff5e8cce 100644 --- a/docs/_docs/index.md +++ b/docs/_docs/index.md @@ -1,5 +1,4 @@ --- -layout: docs title: Welcome permalink: /docs/home/ redirect_from: /docs/index.html diff --git a/docs/_docs/installation.md b/docs/_docs/installation.md index 54dfd9fc..d264997d 100644 --- a/docs/_docs/installation.md +++ b/docs/_docs/installation.md @@ -1,5 +1,4 @@ --- -layout: docs title: Installation permalink: /docs/installation/ --- diff --git a/docs/_docs/maintaining/affinity-team-captain.md b/docs/_docs/maintaining/affinity-team-captain.md index 02247d2d..bafa4e9d 100644 --- a/docs/_docs/maintaining/affinity-team-captain.md +++ b/docs/_docs/maintaining/affinity-team-captain.md @@ -1,6 +1,5 @@ --- title: Affinity Team Captains -layout: docs --- **This guide is for affinity team captains.** These special people are **team maintainers** of one of our [affinity teams][] and help triage and evaluate the issues and contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/avoiding-burnout.md b/docs/_docs/maintaining/avoiding-burnout.md index 1d1d93b1..e6acf402 100644 --- a/docs/_docs/maintaining/avoiding-burnout.md +++ b/docs/_docs/maintaining/avoiding-burnout.md @@ -1,6 +1,5 @@ --- title: "Avoiding Burnout" -layout: docs --- **This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/becoming-a-maintainer.md b/docs/_docs/maintaining/becoming-a-maintainer.md index e4a1840c..00abef54 100644 --- a/docs/_docs/maintaining/becoming-a-maintainer.md +++ b/docs/_docs/maintaining/becoming-a-maintainer.md @@ -1,6 +1,5 @@ --- title: "Becoming a Maintainer" -layout: docs --- **This guide is for contributors.** These special people have contributed to one or more of Jekyll's repositories, but do not yet have write access to any. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/index.md b/docs/_docs/maintaining/index.md index 5c4da4db..383bc6ee 100644 --- a/docs/_docs/maintaining/index.md +++ b/docs/_docs/maintaining/index.md @@ -1,5 +1,4 @@ --- -layout: docs title: Maintaining Jekyll permalink: /docs/maintaining/ --- diff --git a/docs/_docs/maintaining/merging-a-pull-request.md b/docs/_docs/maintaining/merging-a-pull-request.md index 80ad6f7c..9aee4153 100644 --- a/docs/_docs/maintaining/merging-a-pull-request.md +++ b/docs/_docs/maintaining/merging-a-pull-request.md @@ -1,6 +1,5 @@ --- title: "Merging a Pull Request" -layout: docs --- **This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/reviewing-a-pull-request.md b/docs/_docs/maintaining/reviewing-a-pull-request.md index 12f7a35f..a0a6e353 100644 --- a/docs/_docs/maintaining/reviewing-a-pull-request.md +++ b/docs/_docs/maintaining/reviewing-a-pull-request.md @@ -1,6 +1,5 @@ --- title: "Reviewing a Pull Request" -layout: docs --- **This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/special-labels.md b/docs/_docs/maintaining/special-labels.md index eea366e9..a8696174 100644 --- a/docs/_docs/maintaining/special-labels.md +++ b/docs/_docs/maintaining/special-labels.md @@ -1,6 +1,5 @@ --- title: "Special Labels" -layout: docs --- **This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/maintaining/triaging-an-issue.md b/docs/_docs/maintaining/triaging-an-issue.md index 4802b61b..bc87d96e 100644 --- a/docs/_docs/maintaining/triaging-an-issue.md +++ b/docs/_docs/maintaining/triaging-an-issue.md @@ -1,6 +1,5 @@ --- title: "Triaging an Issue" -layout: docs --- **This guide is for maintainers.** These special people have **write access** to one or more of Jekyll's repositories and help merge the contributions of others. You may find what is written here interesting, but it’s definitely not for everyone. diff --git a/docs/_docs/migrations.md b/docs/_docs/migrations.md index 961762f7..fd8676a4 100644 --- a/docs/_docs/migrations.md +++ b/docs/_docs/migrations.md @@ -1,5 +1,4 @@ --- -layout: docs title: Blog migrations permalink: /docs/migrations/ --- diff --git a/docs/_docs/pages.md b/docs/_docs/pages.md index 258fd6a2..398d1987 100644 --- a/docs/_docs/pages.md +++ b/docs/_docs/pages.md @@ -1,5 +1,4 @@ --- -layout: docs title: Creating pages permalink: /docs/pages/ --- diff --git a/docs/_docs/pagination.md b/docs/_docs/pagination.md index b32b934c..b05b6bb2 100644 --- a/docs/_docs/pagination.md +++ b/docs/_docs/pagination.md @@ -1,5 +1,4 @@ --- -layout: docs title: Pagination permalink: /docs/pagination/ --- diff --git a/docs/_docs/permalinks.md b/docs/_docs/permalinks.md index b8fd5ec6..bcb39e54 100644 --- a/docs/_docs/permalinks.md +++ b/docs/_docs/permalinks.md @@ -1,5 +1,4 @@ --- -layout: docs title: Permalinks permalink: /docs/permalinks/ --- diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index 4a5e61cf..ce174f12 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -1,5 +1,4 @@ --- -layout: docs title: Plugins permalink: /docs/plugins/ --- diff --git a/docs/_docs/posts.md b/docs/_docs/posts.md index d4d8f15d..f43b72e8 100644 --- a/docs/_docs/posts.md +++ b/docs/_docs/posts.md @@ -1,5 +1,4 @@ --- -layout: docs title: Writing posts permalink: /docs/posts/ --- diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index d15a9eb1..984275f7 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -1,5 +1,4 @@ --- -layout: docs title: Quick-start guide permalink: /docs/quickstart/ --- diff --git a/docs/_docs/resources.md b/docs/_docs/resources.md index 2042b1a6..0f90fae8 100644 --- a/docs/_docs/resources.md +++ b/docs/_docs/resources.md @@ -1,5 +1,4 @@ --- -layout: docs title: Resources permalink: /docs/resources/ --- diff --git a/docs/_docs/sites.md b/docs/_docs/sites.md index 28e464ba..65401551 100644 --- a/docs/_docs/sites.md +++ b/docs/_docs/sites.md @@ -1,5 +1,4 @@ --- -layout: docs title: Sites using Jekyll permalink: /docs/sites/ --- diff --git a/docs/_docs/static_files.md b/docs/_docs/static_files.md index 55a72747..523c29df 100644 --- a/docs/_docs/static_files.md +++ b/docs/_docs/static_files.md @@ -1,5 +1,4 @@ --- -layout: docs title: Static Files permalink: /docs/static-files/ --- diff --git a/docs/_docs/structure.md b/docs/_docs/structure.md index bdfaab59..6735d6e0 100644 --- a/docs/_docs/structure.md +++ b/docs/_docs/structure.md @@ -1,5 +1,4 @@ --- -layout: docs title: Directory structure permalink: /docs/structure/ --- diff --git a/docs/_docs/templates.md b/docs/_docs/templates.md index 79b5fdae..26bd804a 100644 --- a/docs/_docs/templates.md +++ b/docs/_docs/templates.md @@ -1,5 +1,4 @@ --- -layout: docs title: Templates permalink: /docs/templates/ --- diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index c7d6d574..e01a4d15 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -1,5 +1,4 @@ --- -layout: docs title: Themes permalink: /docs/themes/ --- diff --git a/docs/_docs/troubleshooting.md b/docs/_docs/troubleshooting.md index 191953ec..aae024bd 100644 --- a/docs/_docs/troubleshooting.md +++ b/docs/_docs/troubleshooting.md @@ -1,5 +1,4 @@ --- -layout: docs title: Troubleshooting permalink: /docs/troubleshooting/ --- diff --git a/docs/_docs/upgrading/0-to-2.md b/docs/_docs/upgrading/0-to-2.md index 9de63455..5f9d2320 100644 --- a/docs/_docs/upgrading/0-to-2.md +++ b/docs/_docs/upgrading/0-to-2.md @@ -1,5 +1,4 @@ --- -layout: docs title: Upgrading from 0.x to 2.x permalink: /docs/upgrading/0-to-2/ --- diff --git a/docs/_docs/upgrading/2-to-3.md b/docs/_docs/upgrading/2-to-3.md index 0d145b9c..a378d2f7 100644 --- a/docs/_docs/upgrading/2-to-3.md +++ b/docs/_docs/upgrading/2-to-3.md @@ -1,5 +1,4 @@ --- -layout: docs title: Upgrading from 2.x to 3.x permalink: /docs/upgrading/2-to-3/ --- diff --git a/docs/_docs/usage.md b/docs/_docs/usage.md index e6f1a0db..c8860373 100644 --- a/docs/_docs/usage.md +++ b/docs/_docs/usage.md @@ -1,5 +1,4 @@ --- -layout: docs title: Basic Usage permalink: /docs/usage/ --- diff --git a/docs/_docs/variables.md b/docs/_docs/variables.md index 1d4e2091..f32bddd6 100644 --- a/docs/_docs/variables.md +++ b/docs/_docs/variables.md @@ -1,5 +1,4 @@ --- -layout: docs title: Variables permalink: /docs/variables/ --- diff --git a/docs/_docs/windows.md b/docs/_docs/windows.md index 8d7bb8bc..62fb69b4 100644 --- a/docs/_docs/windows.md +++ b/docs/_docs/windows.md @@ -1,5 +1,4 @@ --- -layout: docs title: Jekyll on Windows permalink: /docs/windows/ --- diff --git a/docs/_posts/2013-05-06-jekyll-1-0-0-released.markdown b/docs/_posts/2013-05-06-jekyll-1-0-0-released.markdown index 538cb565..ae5d3f9c 100644 --- a/docs/_posts/2013-05-06-jekyll-1-0-0-released.markdown +++ b/docs/_posts/2013-05-06-jekyll-1-0-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll 1.0.0 Released" date: "2013-05-06 02:12:52 +0200" author: parkr diff --git a/docs/_posts/2013-05-08-jekyll-1-0-1-released.markdown b/docs/_posts/2013-05-08-jekyll-1-0-1-released.markdown index 90edcc26..5b7a2c35 100644 --- a/docs/_posts/2013-05-08-jekyll-1-0-1-released.markdown +++ b/docs/_posts/2013-05-08-jekyll-1-0-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll 1.0.1 Released" date: "2013-05-08 23:46:11 +0200" author: parkr diff --git a/docs/_posts/2013-05-12-jekyll-1-0-2-released.markdown b/docs/_posts/2013-05-12-jekyll-1-0-2-released.markdown index 2a2b97e6..e5466362 100644 --- a/docs/_posts/2013-05-12-jekyll-1-0-2-released.markdown +++ b/docs/_posts/2013-05-12-jekyll-1-0-2-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll 1.0.2 Released" date: "2013-05-12 14:45:00 +0200" author: parkr diff --git a/docs/_posts/2013-06-07-jekyll-1-0-3-released.markdown b/docs/_posts/2013-06-07-jekyll-1-0-3-released.markdown index 566ae668..88f8ad41 100644 --- a/docs/_posts/2013-06-07-jekyll-1-0-3-released.markdown +++ b/docs/_posts/2013-06-07-jekyll-1-0-3-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll 1.0.3 Released" date: "2013-06-07 21:02:13 +0200" author: parkr diff --git a/docs/_posts/2013-07-14-jekyll-1-1-0-released.markdown b/docs/_posts/2013-07-14-jekyll-1-1-0-released.markdown index 12b3d921..8d00b98b 100644 --- a/docs/_posts/2013-07-14-jekyll-1-1-0-released.markdown +++ b/docs/_posts/2013-07-14-jekyll-1-1-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll 1.1.0 Released" date: "2013-07-14 19:38:02 +0200" author: parkr diff --git a/docs/_posts/2013-07-24-jekyll-1-1-1-released.markdown b/docs/_posts/2013-07-24-jekyll-1-1-1-released.markdown index 6741a89e..90b81847 100644 --- a/docs/_posts/2013-07-24-jekyll-1-1-1-released.markdown +++ b/docs/_posts/2013-07-24-jekyll-1-1-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll 1.1.1 Released" date: "2013-07-24 22:24:14 +0200" author: parkr diff --git a/docs/_posts/2013-07-25-jekyll-1-0-4-released.markdown b/docs/_posts/2013-07-25-jekyll-1-0-4-released.markdown index 635d0e6c..2e234c0e 100644 --- a/docs/_posts/2013-07-25-jekyll-1-0-4-released.markdown +++ b/docs/_posts/2013-07-25-jekyll-1-0-4-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll 1.0.4 Released" date: "2013-07-25 09:08:38 +0200" author: mattr- diff --git a/docs/_posts/2013-07-25-jekyll-1-1-2-released.markdown b/docs/_posts/2013-07-25-jekyll-1-1-2-released.markdown index ed16ca71..f308ca12 100644 --- a/docs/_posts/2013-07-25-jekyll-1-1-2-released.markdown +++ b/docs/_posts/2013-07-25-jekyll-1-1-2-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll 1.1.2 Released" date: "2013-07-25 09:08:38 +0200" author: parkr diff --git a/docs/_posts/2013-09-06-jekyll-1-2-0-released.markdown b/docs/_posts/2013-09-06-jekyll-1-2-0-released.markdown index ae5448c2..76090527 100644 --- a/docs/_posts/2013-09-06-jekyll-1-2-0-released.markdown +++ b/docs/_posts/2013-09-06-jekyll-1-2-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll 1.2.0 Released" date: "2013-09-06 22:02:41 -0400" author: parkr diff --git a/docs/_posts/2013-09-14-jekyll-1-2-1-released.markdown b/docs/_posts/2013-09-14-jekyll-1-2-1-released.markdown index 832dbd06..5f759e20 100644 --- a/docs/_posts/2013-09-14-jekyll-1-2-1-released.markdown +++ b/docs/_posts/2013-09-14-jekyll-1-2-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 1.2.1 Released' date: 2013-09-14 20:46:50 -0400 author: parkr diff --git a/docs/_posts/2013-10-28-jekyll-1-3-0-rc1-released.markdown b/docs/_posts/2013-10-28-jekyll-1-3-0-rc1-released.markdown index 1e3e44ce..65e98700 100644 --- a/docs/_posts/2013-10-28-jekyll-1-3-0-rc1-released.markdown +++ b/docs/_posts/2013-10-28-jekyll-1-3-0-rc1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 1.3.0.rc1 Released' date: 2013-10-28 20:14:39 -0500 author: mattr- diff --git a/docs/_posts/2013-11-04-jekyll-1-3-0-released.markdown b/docs/_posts/2013-11-04-jekyll-1-3-0-released.markdown index 1e325117..f70408cd 100644 --- a/docs/_posts/2013-11-04-jekyll-1-3-0-released.markdown +++ b/docs/_posts/2013-11-04-jekyll-1-3-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 1.3.0 Released' date: 2013-11-04 21:46:02 -0600 author: mattr- diff --git a/docs/_posts/2013-11-26-jekyll-1-3-1-released.markdown b/docs/_posts/2013-11-26-jekyll-1-3-1-released.markdown index 4b4c37d5..baf8dea0 100644 --- a/docs/_posts/2013-11-26-jekyll-1-3-1-released.markdown +++ b/docs/_posts/2013-11-26-jekyll-1-3-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 1.3.1 Released' date: 2013-11-26 19:52:20 -0600 author: mattr- diff --git a/docs/_posts/2013-12-07-jekyll-1-4-0-released.markdown b/docs/_posts/2013-12-07-jekyll-1-4-0-released.markdown index d7a0c14f..1b9d4b7a 100644 --- a/docs/_posts/2013-12-07-jekyll-1-4-0-released.markdown +++ b/docs/_posts/2013-12-07-jekyll-1-4-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 1.4.0 Released' date: 2013-12-07 13:55:28 -0600 author: mattr- diff --git a/docs/_posts/2013-12-09-jekyll-1-4-1-released.markdown b/docs/_posts/2013-12-09-jekyll-1-4-1-released.markdown index 63407158..9d754857 100644 --- a/docs/_posts/2013-12-09-jekyll-1-4-1-released.markdown +++ b/docs/_posts/2013-12-09-jekyll-1-4-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 1.4.1 Released' date: 2013-12-09 20:44:13 -0600 author: mattr- diff --git a/docs/_posts/2013-12-16-jekyll-1-4-2-released.markdown b/docs/_posts/2013-12-16-jekyll-1-4-2-released.markdown index afc92147..e4329adc 100644 --- a/docs/_posts/2013-12-16-jekyll-1-4-2-released.markdown +++ b/docs/_posts/2013-12-16-jekyll-1-4-2-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 1.4.2 Released' date: 2013-12-16 19:48:13 -0500 author: parkr diff --git a/docs/_posts/2014-01-13-jekyll-1-4-3-released.markdown b/docs/_posts/2014-01-13-jekyll-1-4-3-released.markdown index a97bcec4..8338ffb6 100644 --- a/docs/_posts/2014-01-13-jekyll-1-4-3-released.markdown +++ b/docs/_posts/2014-01-13-jekyll-1-4-3-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 1.4.3 Released' date: 2014-01-13 17:43:32 -0800 author: benbalter diff --git a/docs/_posts/2014-03-24-jekyll-1-5-0-released.markdown b/docs/_posts/2014-03-24-jekyll-1-5-0-released.markdown index 5b103dc2..717424ab 100644 --- a/docs/_posts/2014-03-24-jekyll-1-5-0-released.markdown +++ b/docs/_posts/2014-03-24-jekyll-1-5-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 1.5.0 Released' date: 2014-03-24 20:37:59 -0400 author: parkr diff --git a/docs/_posts/2014-03-27-jekyll-1-5-1-released.markdown b/docs/_posts/2014-03-27-jekyll-1-5-1-released.markdown index e8a4096a..2105ad4d 100644 --- a/docs/_posts/2014-03-27-jekyll-1-5-1-released.markdown +++ b/docs/_posts/2014-03-27-jekyll-1-5-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 1.5.1 Released' date: 2014-03-27 22:43:48 -0400 author: parkr diff --git a/docs/_posts/2014-05-06-jekyll-turns-2-0-0.markdown b/docs/_posts/2014-05-06-jekyll-turns-2-0-0.markdown index 82555514..af2a6774 100644 --- a/docs/_posts/2014-05-06-jekyll-turns-2-0-0.markdown +++ b/docs/_posts/2014-05-06-jekyll-turns-2-0-0.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll turns 2.0.0' author: parkr version: 2.0.0 diff --git a/docs/_posts/2014-05-08-jekyll-2-0-3-released.markdown b/docs/_posts/2014-05-08-jekyll-2-0-3-released.markdown index ac5e9d75..e98e32c8 100644 --- a/docs/_posts/2014-05-08-jekyll-2-0-3-released.markdown +++ b/docs/_posts/2014-05-08-jekyll-2-0-3-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 2.0.3 Released' date: 2014-05-08 22:43:17 -0400 author: parkr diff --git a/docs/_posts/2014-06-04-jekyll-stickers-1-dollar-stickermule.markdown b/docs/_posts/2014-06-04-jekyll-stickers-1-dollar-stickermule.markdown index 5ba126d2..8ef37c54 100644 --- a/docs/_posts/2014-06-04-jekyll-stickers-1-dollar-stickermule.markdown +++ b/docs/_posts/2014-06-04-jekyll-stickers-1-dollar-stickermule.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Pick Up your $1 Jekyll Sticker' date: 2014-06-04 15:46:53 -0400 author: parkr diff --git a/docs/_posts/2014-06-28-jekyll-turns-21-i-mean-2-1-0.markdown b/docs/_posts/2014-06-28-jekyll-turns-21-i-mean-2-1-0.markdown index 82d01a18..c3fd4bb6 100644 --- a/docs/_posts/2014-06-28-jekyll-turns-21-i-mean-2-1-0.markdown +++ b/docs/_posts/2014-06-28-jekyll-turns-21-i-mean-2-1-0.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll Turns 21! Err... I mean 2.1.0.' date: 2014-06-28 17:26:59 -0400 author: parkr diff --git a/docs/_posts/2014-07-01-jekyll-2-1-1-released.markdown b/docs/_posts/2014-07-01-jekyll-2-1-1-released.markdown index 81423539..c73a055d 100644 --- a/docs/_posts/2014-07-01-jekyll-2-1-1-released.markdown +++ b/docs/_posts/2014-07-01-jekyll-2-1-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 2.1.1 Released' date: 2014-07-01 20:16:43 -0400 author: parkr diff --git a/docs/_posts/2014-07-29-jekyll-2-2-0-released.markdown b/docs/_posts/2014-07-29-jekyll-2-2-0-released.markdown index ca7aee48..6b726f17 100644 --- a/docs/_posts/2014-07-29-jekyll-2-2-0-released.markdown +++ b/docs/_posts/2014-07-29-jekyll-2-2-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 2.2.0 Released' date: 2014-07-29 18:59:13 -0400 author: parkr diff --git a/docs/_posts/2014-08-10-jekyll-2-3-0-released.markdown b/docs/_posts/2014-08-10-jekyll-2-3-0-released.markdown index 63fe2b45..07afc3c0 100644 --- a/docs/_posts/2014-08-10-jekyll-2-3-0-released.markdown +++ b/docs/_posts/2014-08-10-jekyll-2-3-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 2.3.0 Released' date: 2014-08-10 20:38:34 -0400 author: parkr diff --git a/docs/_posts/2014-09-09-jekyll-2-4-0-released.markdown b/docs/_posts/2014-09-09-jekyll-2-4-0-released.markdown index e8dda676..11cb738e 100644 --- a/docs/_posts/2014-09-09-jekyll-2-4-0-released.markdown +++ b/docs/_posts/2014-09-09-jekyll-2-4-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'A Wild Jekyll 2.4.0 Appeared!' date: 2014-09-09 21:10:33 -0700 author: parkr diff --git a/docs/_posts/2014-11-06-jekylls-midlife-crisis-jekyll-turns-2-5-0.markdown b/docs/_posts/2014-11-06-jekylls-midlife-crisis-jekyll-turns-2-5-0.markdown index cc5de7c0..012b6155 100644 --- a/docs/_posts/2014-11-06-jekylls-midlife-crisis-jekyll-turns-2-5-0.markdown +++ b/docs/_posts/2014-11-06-jekylls-midlife-crisis-jekyll-turns-2-5-0.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll's Mid-Life Crisis (Or, Jekyll turns 2.5.0)" date: 2014-11-05 10:48:22 -0800 author: parkr diff --git a/docs/_posts/2014-11-08-jekyll-2-5-1-released.markdown b/docs/_posts/2014-11-08-jekyll-2-5-1-released.markdown index 3237e48d..2f6e3b51 100644 --- a/docs/_posts/2014-11-08-jekyll-2-5-1-released.markdown +++ b/docs/_posts/2014-11-08-jekyll-2-5-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 2.5.1 Released' date: 2014-11-09 09:47:52 -0800 author: parkr diff --git a/docs/_posts/2014-11-12-jekyll-2-5-2-released.markdown b/docs/_posts/2014-11-12-jekyll-2-5-2-released.markdown index 3eab8998..cff18248 100644 --- a/docs/_posts/2014-11-12-jekyll-2-5-2-released.markdown +++ b/docs/_posts/2014-11-12-jekyll-2-5-2-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 2.5.2 Released' date: 2014-11-12 18:49:08 -0800 author: parkr diff --git a/docs/_posts/2014-12-17-alfredxing-welcome-to-jekyll-core.md b/docs/_posts/2014-12-17-alfredxing-welcome-to-jekyll-core.md index 1951f0a4..51f55028 100644 --- a/docs/_posts/2014-12-17-alfredxing-welcome-to-jekyll-core.md +++ b/docs/_posts/2014-12-17-alfredxing-welcome-to-jekyll-core.md @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Alfred Xing has joined the Jekyll core team' date: 2014-12-17 11:16:21 -0800 author: parkr diff --git a/docs/_posts/2014-12-22-jekyll-2-5-3-released.markdown b/docs/_posts/2014-12-22-jekyll-2-5-3-released.markdown index 7743fd8e..491007cd 100644 --- a/docs/_posts/2014-12-22-jekyll-2-5-3-released.markdown +++ b/docs/_posts/2014-12-22-jekyll-2-5-3-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll Release for the Holidays! v2.5.3 Out' date: 2014-12-22 09:03:30 -0500 author: parkr diff --git a/docs/_posts/2015-01-20-jekyll-meet-and-greet.markdown b/docs/_posts/2015-01-20-jekyll-meet-and-greet.markdown index ed273f9d..eee8d5e7 100644 --- a/docs/_posts/2015-01-20-jekyll-meet-and-greet.markdown +++ b/docs/_posts/2015-01-20-jekyll-meet-and-greet.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll Meet & Greet at GitHub HQ" date: "2015-01-20 19:23:12 -0800" author: parkr diff --git a/docs/_posts/2015-01-24-jekyll-3-0-0-beta1-released.markdown b/docs/_posts/2015-01-24-jekyll-3-0-0-beta1-released.markdown index 9ba83b04..c63f184b 100644 --- a/docs/_posts/2015-01-24-jekyll-3-0-0-beta1-released.markdown +++ b/docs/_posts/2015-01-24-jekyll-3-0-0-beta1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.0.0.beta1 Released' date: 2015-01-24 00:42:31 -0800 author: parkr diff --git a/docs/_posts/2015-02-26-introducing-jekyll-talk.markdown b/docs/_posts/2015-02-26-introducing-jekyll-talk.markdown index 90863c12..468ae4c8 100644 --- a/docs/_posts/2015-02-26-introducing-jekyll-talk.markdown +++ b/docs/_posts/2015-02-26-introducing-jekyll-talk.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Join the Discussion at Jekyll Talk' date: 2015-02-26 21:06:51 -0800 author: alfredxing @@ -12,4 +11,4 @@ The forum was set up by [@envygeeks](https://github.com/envygeeks) to build a co There's already been a lot of interesting topics, including a [site showcase](https://talk.jekyllrb.com/t/showcase-sites-made-using-jekyll/18) and [a poll for Jekyll 3.0 priorities](https://talk.jekyllrb.com/t/poll-installation-priorities-for-3-0/106/9). -Come join the fun! \ No newline at end of file +Come join the fun! diff --git a/docs/_posts/2015-10-26-jekyll-3-0-released.markdown b/docs/_posts/2015-10-26-jekyll-3-0-released.markdown index e7cf9db4..37d075c4 100644 --- a/docs/_posts/2015-10-26-jekyll-3-0-released.markdown +++ b/docs/_posts/2015-10-26-jekyll-3-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.0 Released' date: 2015-10-26 15:37:30 -0700 author: parkr diff --git a/docs/_posts/2015-11-17-jekyll-3-0-1-released.markdown b/docs/_posts/2015-11-17-jekyll-3-0-1-released.markdown index 71412c6b..3eb3cb71 100644 --- a/docs/_posts/2015-11-17-jekyll-3-0-1-released.markdown +++ b/docs/_posts/2015-11-17-jekyll-3-0-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.0.1 Released' date: 2015-11-17 22:04:39 -0800 author: parkr diff --git a/docs/_posts/2016-01-20-jekyll-3-0-2-released.markdown b/docs/_posts/2016-01-20-jekyll-3-0-2-released.markdown index 88f8888f..c12cde34 100644 --- a/docs/_posts/2016-01-20-jekyll-3-0-2-released.markdown +++ b/docs/_posts/2016-01-20-jekyll-3-0-2-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.0.2 Released' date: 2016-01-20 14:08:18 -0800 author: parkr diff --git a/docs/_posts/2016-01-24-jekyll-3-1-0-released.markdown b/docs/_posts/2016-01-24-jekyll-3-1-0-released.markdown index 42768b9f..7e91aa1d 100644 --- a/docs/_posts/2016-01-24-jekyll-3-1-0-released.markdown +++ b/docs/_posts/2016-01-24-jekyll-3-1-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.1.0 Released' date: 2016-01-24 13:16:12 -0800 author: parkr diff --git a/docs/_posts/2016-01-28-jekyll-3-1-1-released.markdown b/docs/_posts/2016-01-28-jekyll-3-1-1-released.markdown index b5932b0a..cddfbf26 100644 --- a/docs/_posts/2016-01-28-jekyll-3-1-1-released.markdown +++ b/docs/_posts/2016-01-28-jekyll-3-1-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.1.1 Released' date: 2016-01-28 17:21:50 -0800 author: parkr diff --git a/docs/_posts/2016-02-08-jekyll-3-0-3-released.markdown b/docs/_posts/2016-02-08-jekyll-3-0-3-released.markdown index 0c260cc6..442dfeb9 100644 --- a/docs/_posts/2016-02-08-jekyll-3-0-3-released.markdown +++ b/docs/_posts/2016-02-08-jekyll-3-0-3-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.0.3 Released' date: 2016-02-08 10:39:08 -0800 author: parkr diff --git a/docs/_posts/2016-02-19-jekyll-3-1-2-released.markdown b/docs/_posts/2016-02-19-jekyll-3-1-2-released.markdown index 77544510..807621f6 100644 --- a/docs/_posts/2016-02-19-jekyll-3-1-2-released.markdown +++ b/docs/_posts/2016-02-19-jekyll-3-1-2-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.1.2 Released!' date: 2016-02-19 15:24:00 -0800 author: parkr diff --git a/docs/_posts/2016-03-10-making-it-easier-to-contribute-to-jekyll.md b/docs/_posts/2016-03-10-making-it-easier-to-contribute-to-jekyll.md index d735b682..9d806049 100644 --- a/docs/_posts/2016-03-10-making-it-easier-to-contribute-to-jekyll.md +++ b/docs/_posts/2016-03-10-making-it-easier-to-contribute-to-jekyll.md @@ -1,7 +1,6 @@ --- title: Making it easier to contribute to Jekyll description: We've made it easier to contribute to Jekyll by updating our contributing documentation and introducing Jekyll Affinity Teams, teams dedicated to specific aspects of the project. -layout: news_item author: benbalter categories: [community] --- diff --git a/docs/_posts/2016-04-19-jekyll-3-0-4-released.markdown b/docs/_posts/2016-04-19-jekyll-3-0-4-released.markdown index d2cc4ec6..9aa9b822 100644 --- a/docs/_posts/2016-04-19-jekyll-3-0-4-released.markdown +++ b/docs/_posts/2016-04-19-jekyll-3-0-4-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.0.4 Released' date: 2016-04-19 10:26:12 -0700 author: parkr diff --git a/docs/_posts/2016-04-19-jekyll-3-1-3-released.markdown b/docs/_posts/2016-04-19-jekyll-3-1-3-released.markdown index cd478e22..6b0892ac 100644 --- a/docs/_posts/2016-04-19-jekyll-3-1-3-released.markdown +++ b/docs/_posts/2016-04-19-jekyll-3-1-3-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.1.3 Released' date: 2016-04-19 10:26:16 -0700 author: parkr @@ -15,4 +14,3 @@ v3.1.3 is a patch release which fixes the follow two issues: Both of these issues have been resolved. For more information, check out [the full history](/docs/history/#v3-1-3). Happy Jekylling! - diff --git a/docs/_posts/2016-04-26-jekyll-3-0-5-released.markdown b/docs/_posts/2016-04-26-jekyll-3-0-5-released.markdown index 9696713a..5ac21545 100644 --- a/docs/_posts/2016-04-26-jekyll-3-0-5-released.markdown +++ b/docs/_posts/2016-04-26-jekyll-3-0-5-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.0.5 Released' date: 2016-04-26 17:40:44 -0700 author: parkr diff --git a/docs/_posts/2016-05-18-jekyll-3-1-4-released.markdown b/docs/_posts/2016-05-18-jekyll-3-1-4-released.markdown index 161d4746..738fc12e 100644 --- a/docs/_posts/2016-05-18-jekyll-3-1-4-released.markdown +++ b/docs/_posts/2016-05-18-jekyll-3-1-4-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.1.4 "Stability Sam" Released' date: 2016-05-18 16:50:37 -0700 author: parkr diff --git a/docs/_posts/2016-05-18-jekyll-3-1-5-released.markdown b/docs/_posts/2016-05-18-jekyll-3-1-5-released.markdown index c341b37b..0ca981a6 100644 --- a/docs/_posts/2016-05-18-jekyll-3-1-5-released.markdown +++ b/docs/_posts/2016-05-18-jekyll-3-1-5-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.1.5 Released' date: 2016-05-18 21:35:27 -0700 author: parkr diff --git a/docs/_posts/2016-05-19-jekyll-3-1-6-released.markdown b/docs/_posts/2016-05-19-jekyll-3-1-6-released.markdown index 45e7312f..e31951eb 100644 --- a/docs/_posts/2016-05-19-jekyll-3-1-6-released.markdown +++ b/docs/_posts/2016-05-19-jekyll-3-1-6-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.1.6 Released' date: 2016-05-19 12:48:14 -0700 author: parkr diff --git a/docs/_posts/2016-06-03-update-on-jekyll-s-google-summer-of-code-projects.markdown b/docs/_posts/2016-06-03-update-on-jekyll-s-google-summer-of-code-projects.markdown index 0f4ce2de..c3d01cdd 100644 --- a/docs/_posts/2016-06-03-update-on-jekyll-s-google-summer-of-code-projects.markdown +++ b/docs/_posts/2016-06-03-update-on-jekyll-s-google-summer-of-code-projects.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll's Google Summer of Code Project: The CMS You Always Wanted" date: "2016-06-03 13:21:02 -0700" author: parkr diff --git a/docs/_posts/2016-07-26-jekyll-3-2-0-released.markdown b/docs/_posts/2016-07-26-jekyll-3-2-0-released.markdown index 2e62cc32..4cf4b6f7 100644 --- a/docs/_posts/2016-07-26-jekyll-3-2-0-released.markdown +++ b/docs/_posts/2016-07-26-jekyll-3-2-0-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll turns 3.2' date: 2016-07-26 15:06:49 -0700 author: parkr diff --git a/docs/_posts/2016-08-02-jekyll-3-2-1-released.markdown b/docs/_posts/2016-08-02-jekyll-3-2-1-released.markdown index f4d17e04..f2bdaec8 100644 --- a/docs/_posts/2016-08-02-jekyll-3-2-1-released.markdown +++ b/docs/_posts/2016-08-02-jekyll-3-2-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.2.1 Released with Fix for Windows' date: 2016-08-02 13:20:11 -0700 author: parkr diff --git a/docs/_posts/2016-08-24-jekyll-admin-initial-release.markdown b/docs/_posts/2016-08-24-jekyll-admin-initial-release.markdown index 1f6fa154..e256a5c7 100644 --- a/docs/_posts/2016-08-24-jekyll-admin-initial-release.markdown +++ b/docs/_posts/2016-08-24-jekyll-admin-initial-release.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: "Jekyll Admin Initial Release" date: "2016-08-25 09:50:00 +0300" author: mertkahyaoglu diff --git a/docs/_posts/2016-10-06-jekyll-3-3-is-here.md b/docs/_posts/2016-10-06-jekyll-3-3-is-here.md index 0b51e31e..8c756ef7 100644 --- a/docs/_posts/2016-10-06-jekyll-3-3-is-here.md +++ b/docs/_posts/2016-10-06-jekyll-3-3-is-here.md @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.3 is here with better theme support, new URL filters, and tons more' date: 2016-10-06 11:10:38 -0700 author: parkr diff --git a/docs/_posts/2016-11-14-jekyll-3-3-1-released.markdown b/docs/_posts/2016-11-14-jekyll-3-3-1-released.markdown index a5a88376..0a357ea2 100644 --- a/docs/_posts/2016-11-14-jekyll-3-3-1-released.markdown +++ b/docs/_posts/2016-11-14-jekyll-3-3-1-released.markdown @@ -1,5 +1,4 @@ --- -layout: news_item title: 'Jekyll 3.3.1 Released' date: 2016-11-14 14:29:59 -0800 author: parkr diff --git a/rake/site.rake b/rake/site.rake index 51978aed..2fb4172a 100644 --- a/rake/site.rake +++ b/rake/site.rake @@ -92,7 +92,6 @@ namespace :site do File.open(filename, "wb") do |post| post.puts("---") - post.puts("layout: news_item") post.puts("title: 'Jekyll #{release} Released'") post.puts("date: #{Time.new.strftime('%Y-%m-%d %H:%M:%S %z')}") post.puts("author: ") From 0c9c236c4863c996043d7eed068a324d4e421bf9 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Mon, 9 Jan 2017 21:31:57 +0100 Subject: [PATCH 099/207] rubocup -a --- Rakefile | 68 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/Rakefile b/Rakefile index 58aecfaf..5353717e 100644 --- a/Rakefile +++ b/Rakefile @@ -1,13 +1,13 @@ -require 'rubygems' -require 'rake' -require 'rdoc' -require 'date' -require 'yaml' +require "rubygems" +require "rake" +require "rdoc" +require "date" +require "yaml" -$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), *%w[lib])) -require 'jekyll/version' +$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "lib")) +require "jekyll/version" -Dir.glob('rake/**.rake').each { |f| import f } +Dir.glob("rake/**.rake").each { |f| import f } ############################################################################# # @@ -36,21 +36,21 @@ def gemspec_file end def gem_file - "#{name}-#{Gem::Version.new(version).to_s}.gem" + "#{name}-#{Gem::Version.new(version)}.gem" end def normalize_bullets(markdown) - markdown.gsub(/\n\s{2}\*{1}/, "\n-") + markdown.gsub(%r!\n\s{2}\*{1}!, "\n-") end def linkify_prs(markdown) - markdown.gsub(/#(\d+)/) do |word| + markdown.gsub(%r!#(\d+)!) do |word| "[#{word}]({{ site.repository }}/issues/#{word.delete("#")})" end end def linkify_users(markdown) - markdown.gsub(/(@\w+)/) do |username| + markdown.gsub(%r!(@\w+)!) do |username| "[#{username}](https://github.com/#{username.delete("@")})" end end @@ -60,13 +60,13 @@ def linkify(markdown) end def liquid_escape(markdown) - markdown.gsub(/(`{[{%].+[}%]}`)/, "{% raw %}\\1{% endraw %}") + markdown.gsub(%r!(`{[{%].+[}%]}`)!, "{% raw %}\\1{% endraw %}") end def custom_release_header_anchors(markdown) - header_regexp = /^(\d{1,2})\.(\d{1,2})\.(\d{1,2}) \/ \d{4}-\d{2}-\d{2}/ - section_regexp = /^### \w+ \w+$/ - markdown.split(/^##\s/).map do |release_notes| + header_regexp = %r!^(\d{1,2})\.(\d{1,2})\.(\d{1,2}) \/ \d{4}-\d{2}-\d{2}! + section_regexp = %r!^### \w+ \w+$! + markdown.split(%r!^##\s!).map do |release_notes| _, major, minor, patch = *release_notes.match(header_regexp) release_notes .gsub(header_regexp, "\\0\n{: #v\\1-\\2-\\3}") @@ -75,11 +75,11 @@ def custom_release_header_anchors(markdown) end def sluffigy(header) - header.gsub(/#/, '').strip.downcase.gsub(/\s+/, '-') + header.delete("#").strip.downcase.gsub(%r!\s+!, "-") end def remove_head_from_history(markdown) - index = markdown =~ /^##\s+\d+\.\d+\.\d+/ + index = markdown =~ %r!^##\s+\d+\.\d+\.\d+! markdown[index..-1] end @@ -88,13 +88,17 @@ def converted_history(markdown) custom_release_header_anchors( liquid_escape( linkify( - normalize_bullets(markdown))))) + normalize_bullets(markdown) + ) + ) + ) + ) end def siteify_file(file, overrides_front_matter = {}) - abort "You seem to have misplaced your #{file} file. I can haz?" unless File.exists?(file) + abort "You seem to have misplaced your #{file} file. I can haz?" unless File.exist?(file) title = begin - File.read(file).match(/\A# (.*)$/)[1] + File.read(file).match(%r!\A# (.*)$!)[1] rescue File.basename(file, ".*").downcase.capitalize end @@ -115,7 +119,7 @@ def content_for(file) when "History.markdown" converted_history(contents) else - contents.gsub(/\A# .*\n\n?/, "") + contents.gsub(%r!\A# .*\n\n?!, "") end end @@ -128,23 +132,23 @@ end multitask :default => [:test, :features] task :spec => :test -require 'rake/testtask' +require "rake/testtask" Rake::TestTask.new(:test) do |test| - test.libs << 'lib' << 'test' - test.pattern = 'test/**/test_*.rb' + test.libs << "lib" << "test" + test.pattern = "test/**/test_*.rb" test.verbose = true end -require 'rdoc/task' +require "rdoc/task" Rake::RDocTask.new do |rdoc| - rdoc.rdoc_dir = 'rdoc' + rdoc.rdoc_dir = "rdoc" rdoc.title = "#{name} #{version}" - rdoc.rdoc_files.include('README*') - rdoc.rdoc_files.include('lib/**/*.rb') + rdoc.rdoc_files.include("README*") + rdoc.rdoc_files.include("lib/**/*.rb") end begin - require 'cucumber/rake/task' + require "cucumber/rake/task" Cucumber::Rake::Task.new(:features) do |t| t.profile = "travis" end @@ -152,9 +156,9 @@ begin t.profile = "html_report" end rescue LoadError - desc 'Cucumber rake task not available' + desc "Cucumber rake task not available" task :features do - abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin' + abort "Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin" end end From 8bf9c37cf5f03fe6975f462531959d4bc5978a5b Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Mon, 9 Jan 2017 21:32:11 +0100 Subject: [PATCH 100/207] rubocop -a --- jekyll.gemspec | 52 +++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 734df2e4..ca12fa0d 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -1,42 +1,42 @@ # coding: utf-8 -lib = File.expand_path('../lib', __FILE__) +lib = File.expand_path("../lib", __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require 'jekyll/version' +require "jekyll/version" Gem::Specification.new do |s| s.specification_version = 2 if s.respond_to? :specification_version= - s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version= - s.rubygems_version = '2.2.2' - s.required_ruby_version = '>= 2.0.0' + s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= + s.rubygems_version = "2.2.2" + s.required_ruby_version = ">= 2.0.0" - s.name = 'jekyll' + s.name = "jekyll" s.version = Jekyll::VERSION - s.license = 'MIT' + s.license = "MIT" - s.summary = 'A simple, blog aware, static site generator.' - s.description = 'Jekyll is a simple, blog aware, static site generator.' + s.summary = "A simple, blog aware, static site generator." + s.description = "Jekyll is a simple, blog aware, static site generator." - s.authors = ['Tom Preston-Werner'] - s.email = 'tom@mojombo.com' - s.homepage = 'https://github.com/jekyll/jekyll' + s.authors = ["Tom Preston-Werner"] + s.email = "tom@mojombo.com" + s.homepage = "https://github.com/jekyll/jekyll" all_files = `git ls-files -z`.split("\x0") - s.files = all_files.grep(%r{^(exe|lib)/|^.rubocop.yml$}) - s.executables = all_files.grep(%r{^exe/}) { |f| File.basename(f) } + s.files = all_files.grep(%r!^(exe|lib)/|^.rubocop.yml$!) + s.executables = all_files.grep(%r!^exe/!) { |f| File.basename(f) } s.bindir = "exe" - s.require_paths = ['lib'] + s.require_paths = ["lib"] - s.rdoc_options = ['--charset=UTF-8'] - s.extra_rdoc_files = %w[README.markdown LICENSE] + s.rdoc_options = ["--charset=UTF-8"] + s.extra_rdoc_files = %w(README.markdown LICENSE) - s.add_runtime_dependency('liquid', '~> 3.0') - s.add_runtime_dependency('kramdown', '~> 1.3') - s.add_runtime_dependency('mercenary', '~> 0.3.3') - s.add_runtime_dependency('safe_yaml', '~> 1.0') - s.add_runtime_dependency('colorator', '~> 1.0') - s.add_runtime_dependency('rouge', '~> 1.7') - s.add_runtime_dependency('jekyll-sass-converter', '~> 1.0') - s.add_runtime_dependency('jekyll-watch', '~> 1.1') + s.add_runtime_dependency("liquid", "~> 3.0") + s.add_runtime_dependency("kramdown", "~> 1.3") + s.add_runtime_dependency("mercenary", "~> 0.3.3") + s.add_runtime_dependency("safe_yaml", "~> 1.0") + s.add_runtime_dependency("colorator", "~> 1.0") + s.add_runtime_dependency("rouge", "~> 1.7") + s.add_runtime_dependency("jekyll-sass-converter", "~> 1.0") + s.add_runtime_dependency("jekyll-watch", "~> 1.1") s.add_runtime_dependency("pathutil", "~> 0.9") - s.add_runtime_dependency('addressable', '~> 2.4') + s.add_runtime_dependency("addressable", "~> 2.4") end From 10b96b26bc82bfbedfe4be4a3914b50b4532fb6e Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Mon, 9 Jan 2017 21:39:19 +0100 Subject: [PATCH 101/207] Sort dependencies --- jekyll.gemspec | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 734df2e4..b36bed9f 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -29,14 +29,14 @@ Gem::Specification.new do |s| s.rdoc_options = ['--charset=UTF-8'] s.extra_rdoc_files = %w[README.markdown LICENSE] - s.add_runtime_dependency('liquid', '~> 3.0') - s.add_runtime_dependency('kramdown', '~> 1.3') - s.add_runtime_dependency('mercenary', '~> 0.3.3') - s.add_runtime_dependency('safe_yaml', '~> 1.0') - s.add_runtime_dependency('colorator', '~> 1.0') - s.add_runtime_dependency('rouge', '~> 1.7') - s.add_runtime_dependency('jekyll-sass-converter', '~> 1.0') - s.add_runtime_dependency('jekyll-watch', '~> 1.1') + s.add_runtime_dependency("addressable", "~> 2.4") + s.add_runtime_dependency("colorator", "~> 1.0") + s.add_runtime_dependency("jekyll-sass-converter", "~> 1.0") + s.add_runtime_dependency("jekyll-watch", "~> 1.1") + s.add_runtime_dependency("kramdown", "~> 1.3") + s.add_runtime_dependency("liquid", "~> 3.0") + s.add_runtime_dependency("mercenary", "~> 0.3.3") s.add_runtime_dependency("pathutil", "~> 0.9") - s.add_runtime_dependency('addressable', '~> 2.4') + s.add_runtime_dependency("rouge", "~> 1.7") + s.add_runtime_dependency("safe_yaml", "~> 1.0") end From 335d9b3881fc5f8ef6ebf5ce3a392d9c80420e4b Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Mon, 9 Jan 2017 21:39:42 +0100 Subject: [PATCH 102/207] sort gems --- docs/_config.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/_config.yml b/docs/_config.yml index 32ae74bb..cc7476e2 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -28,14 +28,14 @@ twitter: logo: /img/logo-2x.png gems: - - jekyll-feed - - jekyll-redirect-from - - jemoji - - jekyll-sitemap - - jekyll-seo-tag - jekyll-avatar + - jekyll-feed - jekyll-mentions + - jekyll-redirect-from + - jekyll-seo-tag + - jekyll-sitemap + - jemoji exclude: - - README.md - .gitignore + - README.md From fb83ebadf61326bb628d6baa72b8db7711db6e6d Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 9 Jan 2017 14:10:03 -0800 Subject: [PATCH 103/207] Update history to reflect merge of #5745 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index b578b9bf..d5891406 100644 --- a/History.markdown +++ b/History.markdown @@ -41,6 +41,7 @@ * Bump to rake 12.0 (#5670) * Rubocop Gemfile (#5671) * update Classifier-Reborn to 2.1.0 (#5711) + * Rubocop: fix Rakefile and gemspec (#5745) ### Documentation From 47550935cb63d9432bb773fdd9e96ed926058e8d Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 9 Jan 2017 14:14:03 -0800 Subject: [PATCH 104/207] Update history to reflect merge of #5725 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index d5891406..8ff70c6b 100644 --- a/History.markdown +++ b/History.markdown @@ -42,6 +42,7 @@ * Rubocop Gemfile (#5671) * update Classifier-Reborn to 2.1.0 (#5711) * Rubocop: fix Rakefile and gemspec (#5745) + * Use `assert_nil` (#5725) ### Documentation From 4ef69b948c4d903047e4992cc68e5dfbc15b5717 Mon Sep 17 00:00:00 2001 From: yoostk Date: Tue, 10 Jan 2017 15:03:46 +0900 Subject: [PATCH 105/207] Fix a minor grammatical mistake on themes' document --- docs/_docs/themes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/themes.md b/docs/_docs/themes.md index c7d6d574..81a77d20 100644 --- a/docs/_docs/themes.md +++ b/docs/_docs/themes.md @@ -67,7 +67,7 @@ Add your template files in the corresponding folders, complete the `.gemspec` an Theme layouts and includes work just like they work in any Jekyll site. Place layouts in your theme's `/_layouts` folder, and place includes in your themes `/_includes` folder. -For example, if your theme has a `/_layouts/page.html` file, and a page has `layout: page` in its YAML front matter, Jekyll will first look to the site's `_layouts` folder for a the `page` layout, and if none exists, will use your theme's `page` layout. +For example, if your theme has a `/_layouts/page.html` file, and a page has `layout: page` in its YAML front matter, Jekyll will first look to the site's `_layouts` folder for the `page` layout, and if none exists, will use your theme's `page` layout. ### Assets From c48daa9d5b5768acdc0e30908844fc7ae604e1ef Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Tue, 10 Jan 2017 10:34:16 +0100 Subject: [PATCH 106/207] normalize whitespace --- jekyll.gemspec | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/jekyll.gemspec b/jekyll.gemspec index 4ddac2fa..71b5f31e 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -29,15 +29,14 @@ Gem::Specification.new do |s| s.rdoc_options = ["--charset=UTF-8"] s.extra_rdoc_files = %w(README.markdown LICENSE) - s.add_runtime_dependency("addressable", "~> 2.4") - s.add_runtime_dependency("colorator", "~> 1.0") + s.add_runtime_dependency("addressable", "~> 2.4") + s.add_runtime_dependency("colorator", "~> 1.0") s.add_runtime_dependency("jekyll-sass-converter", "~> 1.0") - s.add_runtime_dependency("jekyll-watch", "~> 1.1") - s.add_runtime_dependency("kramdown", "~> 1.3") - s.add_runtime_dependency("liquid", "~> 3.0") - s.add_runtime_dependency("mercenary", "~> 0.3.3") - s.add_runtime_dependency("pathutil", "~> 0.9") - s.add_runtime_dependency("rouge", "~> 1.7") - s.add_runtime_dependency("safe_yaml", "~> 1.0") - + s.add_runtime_dependency("jekyll-watch", "~> 1.1") + s.add_runtime_dependency("kramdown", "~> 1.3") + s.add_runtime_dependency("liquid", "~> 3.0") + s.add_runtime_dependency("mercenary", "~> 0.3.3") + s.add_runtime_dependency("pathutil", "~> 0.9") + s.add_runtime_dependency("rouge", "~> 1.7") + s.add_runtime_dependency("safe_yaml", "~> 1.0") end From f785d6f8d14ffb65588f4536a2ddc86bf8b3b6dc Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 10 Jan 2017 01:45:46 -0800 Subject: [PATCH 107/207] Update history to reflect merge of #5748 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 8ff70c6b..de38e96d 100644 --- a/History.markdown +++ b/History.markdown @@ -60,6 +60,7 @@ * Replace a dead link with a web-archived one (#5738) * Remove duplicate paragraph. (#5740) * Addition of a sample "typical post" (#5473) + * Fix a minor grammatical mistake on themes' document (#5748) ## 3.3.1 / 2016-11-14 From 0210022c757e6d931db508e160217c2088a39e64 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 10 Jan 2017 01:46:18 -0800 Subject: [PATCH 108/207] Update history to reflect merge of #5746 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index de38e96d..61315abe 100644 --- a/History.markdown +++ b/History.markdown @@ -24,6 +24,7 @@ * Use the current year for the LICENSE of theme (#5712) * Update License (#5713) * Use Addressable instead of URI to decode (#5726) + * Sort gems (#5746) ### Bug Fixes From faa67bcd62e3d55e07301c86f95d77267fe2082a Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 10 Jan 2017 12:12:55 -0500 Subject: [PATCH 109/207] include: fix 'no implicit conversion of nil to String' This is when either 'dir' or 'file' is nil. --- lib/jekyll/tags/include.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/jekyll/tags/include.rb b/lib/jekyll/tags/include.rb index 67461750..cf052197 100644 --- a/lib/jekyll/tags/include.rb +++ b/lib/jekyll/tags/include.rb @@ -112,8 +112,8 @@ eos def locate_include_file(context, file, safe) includes_dirs = tag_includes_dirs(context) includes_dirs.each do |dir| - path = File.join(dir, file) - return path if valid_include_file?(path, dir, safe) + path = File.join(dir.to_s, file.to_s) + return path if valid_include_file?(path, dir.to_s, safe) end raise IOError, "Could not locate the included file '#{file}' in any of "\ "#{includes_dirs}. Ensure it exists in one of those directories and, "\ @@ -163,7 +163,7 @@ eos end def valid_include_file?(path, dir, safe) - !(outside_site_source?(path, dir, safe) || !File.exist?(path)) + !(outside_site_source?(path, dir, safe) || !File.file?(path)) end def outside_site_source?(path, dir, safe) From 22368896fb6776766e82b746fb96bb55fcbbdd0d Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 10 Jan 2017 12:17:42 -0500 Subject: [PATCH 110/207] Rearrange some pieces of History.markdown. --- History.markdown | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/History.markdown b/History.markdown index 61315abe..887a2165 100644 --- a/History.markdown +++ b/History.markdown @@ -1,5 +1,20 @@ ## HEAD +### Minor Enhancements + + * Add connector param to `array_to_sentence_string` filter (#5597) + * Adds `group_by_exp` filter (#5513) + * Use the current year for the LICENSE of theme (#5712) + * Update License (#5713) + * Use Addressable instead of URI to decode (#5726) + +### Bug Fixes + + * Escaped regular expressions when using `post_url`. (#5605) + * fix date parsing in file names to be stricter (#5609) + * Add a module to re-define `ENV["TZ"]` in Windows (#5612) + * Use each instead of map to actually return nothing (#5668) + ### Site Enhancements * Remove instructions to install Jekyll 2 on Windows (#5582) @@ -16,22 +31,7 @@ * Add Jekyll-Post to list of plugins (#5705) * Add jekyll-numbered-headings (#5688) * Docs: move permalinks from documents into config (#5544) - -### Minor Enhancements - - * Add connector param to array_to_sentence_string filter (#5597) - * Adds group_by_exp filter (#5513) - * Use the current year for the LICENSE of theme (#5712) - * Update License (#5713) - * Use Addressable instead of URI to decode (#5726) - * Sort gems (#5746) - -### Bug Fixes - - * Escaped regular expressions when using post_url. (#5605) - * fix date parsing in file names to be stricter (#5609) - * Add a module to re-define `ENV["TZ"]` in Windows (#5612) - * Use each instead of map to actually return nothing (#5668) + * Sort gems in `docs/_config.yml` (#5746) ### Development Fixes @@ -44,6 +44,7 @@ * update Classifier-Reborn to 2.1.0 (#5711) * Rubocop: fix Rakefile and gemspec (#5745) * Use `assert_nil` (#5725) + * Sort gems in `jekyll.gemspec` (#5746) ### Documentation From 4f84b522b518d51864917fd1a70bbbc455039ac0 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 10 Jan 2017 12:05:59 -0800 Subject: [PATCH 111/207] Update history to reflect merge of #5621 [ci skip] --- History.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/History.markdown b/History.markdown index 887a2165..d7950127 100644 --- a/History.markdown +++ b/History.markdown @@ -64,6 +64,10 @@ * Addition of a sample "typical post" (#5473) * Fix a minor grammatical mistake on themes' document (#5748) +### -dev + + * Correct comments in data_reader.rb (#5621) + ## 3.3.1 / 2016-11-14 ### Minor Enhancements From c198b08ee87f7441eaf0ddc8a23014553860e3c8 Mon Sep 17 00:00:00 2001 From: Max Chadwick Date: Tue, 10 Jan 2017 22:50:30 -0500 Subject: [PATCH 112/207] Add jekyll-pre-commit to plugins list --- docs/_docs/plugins.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index 4a5e61cf..05fe1434 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -919,6 +919,7 @@ LESS.js files during generation. - [jekyll-migrate-permalink](https://github.com/mpchadwick/jekyll-migrate-permalink): Adds a `migrate-permalink` sub-command to help deal with side effects of changing your permalink. - [Jekyll-Post](https://github.com/robcrocombe/jekyll-post): A CLI tool to easily draft, edit, and publish Jekyll posts. - [jekyll-numbered-headings](https://github.com/muratayusuke/jekyll-numbered-headings): Adds ordered number to headings. +- [jekyll-pre-commit](https://github.com/mpchadwick/jekyll-pre-commit): A framework for running checks against your posts using a git pre-commit hook before you publish them. #### Editors From 07d161c2ce8707d7320fbaf09af898e075f4a240 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 11 Jan 2017 01:42:10 -0800 Subject: [PATCH 113/207] Update history to reflect merge of #5752 [ci skip] --- History.markdown | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/History.markdown b/History.markdown index d7950127..2d769ba8 100644 --- a/History.markdown +++ b/History.markdown @@ -62,11 +62,9 @@ * Replace a dead link with a web-archived one (#5738) * Remove duplicate paragraph. (#5740) * Addition of a sample "typical post" (#5473) - * Fix a minor grammatical mistake on themes' document (#5748) - -### -dev - + * Fix a minor grammatical mistake on themes' document ### -dev (#5748) * Correct comments in data_reader.rb (#5621) + * Add jekyll-pre-commit to plugins list (#5752) ## 3.3.1 / 2016-11-14 From d77ed5e608254123c6d0d0850338e6193ef38d84 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Wed, 11 Jan 2017 10:49:21 +0100 Subject: [PATCH 114/207] Add missing merge labels for jekyllbot --- docs/_docs/maintaining/merging-a-pull-request.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/_docs/maintaining/merging-a-pull-request.md b/docs/_docs/maintaining/merging-a-pull-request.md index 80ad6f7c..c7efe0b5 100644 --- a/docs/_docs/maintaining/merging-a-pull-request.md +++ b/docs/_docs/maintaining/merging-a-pull-request.md @@ -38,8 +38,9 @@ The categories match the H3's in the history/changelog file, and they are: 1. Major Enhancements (`+major`) – major updates or breaking changes to the code which necessitate a major version bump (v3 ~> v4) 2. Minor Enhancements (`+minor`) – minor updates (feature, enhancement) which necessitate a minor version bump (v3.1 ~> v3.2) 3. Bug Fixes (`+bug`) – corrections to code which do not change or add functionality, which necessitate a patch version bump (v3.1.0 ~> v3.1.1) -4. Site Enhancements (`+site`) – changes to the source of https://jekyllrb.com, found in `site/` +4. Site Enhancements (`+site` or `+doc`) – changes to the source or the documentation found in `docs/` and published on https://jekyllrb.com, 5. Development Fixes (`+dev`) – changes which do not affect user-facing functionality or documentation, such as test fixes or bumping internal dependencies +6. Forward Ports (`+port`) — forward-port changes, e.g. from v3.1.4. Once @jekyllbot has merged the pull request, you should see three things: From 02858fdf089bce0e4bb7901ef8e5b13d61e91c01 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 11 Jan 2017 12:05:56 -0500 Subject: [PATCH 115/207] include: improve boolean logic in #valid_include_file? --- lib/jekyll/tags/include.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/tags/include.rb b/lib/jekyll/tags/include.rb index cf052197..ca74087d 100644 --- a/lib/jekyll/tags/include.rb +++ b/lib/jekyll/tags/include.rb @@ -163,7 +163,7 @@ eos end def valid_include_file?(path, dir, safe) - !(outside_site_source?(path, dir, safe) || !File.file?(path)) + !outside_site_source?(path, dir, safe) && File.file?(path) end def outside_site_source?(path, dir, safe) From 8ae2673ebae7c9d2a7c75e3e3e95729cde04cdfc Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 11 Jan 2017 09:13:39 -0800 Subject: [PATCH 116/207] Update history to reflect merge of #5744 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 2d769ba8..bb10365f 100644 --- a/History.markdown +++ b/History.markdown @@ -32,6 +32,7 @@ * Add jekyll-numbered-headings (#5688) * Docs: move permalinks from documents into config (#5544) * Sort gems in `docs/_config.yml` (#5746) + * [site] Use defaults for docs and news-items (#5744) ### Development Fixes From 538cff15e9a9d68d7bf6c5727b8592d3cccaf332 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Wed, 11 Jan 2017 20:57:34 +0100 Subject: [PATCH 117/207] report @parkr feedback --- docs/_docs/maintaining/merging-a-pull-request.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/_docs/maintaining/merging-a-pull-request.md b/docs/_docs/maintaining/merging-a-pull-request.md index c7efe0b5..ed34adf1 100644 --- a/docs/_docs/maintaining/merging-a-pull-request.md +++ b/docs/_docs/maintaining/merging-a-pull-request.md @@ -38,9 +38,10 @@ The categories match the H3's in the history/changelog file, and they are: 1. Major Enhancements (`+major`) – major updates or breaking changes to the code which necessitate a major version bump (v3 ~> v4) 2. Minor Enhancements (`+minor`) – minor updates (feature, enhancement) which necessitate a minor version bump (v3.1 ~> v3.2) 3. Bug Fixes (`+bug`) – corrections to code which do not change or add functionality, which necessitate a patch version bump (v3.1.0 ~> v3.1.1) -4. Site Enhancements (`+site` or `+doc`) – changes to the source or the documentation found in `docs/` and published on https://jekyllrb.com, -5. Development Fixes (`+dev`) – changes which do not affect user-facing functionality or documentation, such as test fixes or bumping internal dependencies -6. Forward Ports (`+port`) — forward-port changes, e.g. from v3.1.4. +4. Documentation (`+doc`) - changes to the documentation found in `docs/_docs/` +5. Site Enhancements (`+site`) – changes to the source of [https://jekyllrb.com](https://jekyllrb.com) found in `docs/` +6. Development Fixes (`+dev`) – changes which do not affect user-facing functionality or documentation, such as test fixes or bumping internal dependencies +7. Forward Ports (`+port`) — bug fixes applied to a previous version of Jekyll pulled onto `master`, e.g. cherry-picked commits from `3-1-stable` to `master` Once @jekyllbot has merged the pull request, you should see three things: From 335c8fcf62bfb48c3555e0cd2a8a6d89fdfd1d7e Mon Sep 17 00:00:00 2001 From: BlueberryFoxtrot Date: Thu, 12 Jan 2017 17:28:32 +0100 Subject: [PATCH 118/207] Update installation.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Addition of *Running Jekyll on Ubuntu* section, to address Ubuntu stumbling block as per https://github.com/jekyll/jekyll/issues/5719. 2. Restructuring, and I hope I understood correctly when NodeJS/Python are/aren't required. 3. Gentler wording – it's probably not a good idea to tell punters who hit this page because they ran into trouble that installing Jekyll *is* easy and straight-forward; it *ought to be* straight-forward. (There's always the potential for pain and confusion if not all dependencies are in place.) --- docs/_docs/installation.md | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/docs/_docs/installation.md b/docs/_docs/installation.md index d264997d..bbc35fab 100644 --- a/docs/_docs/installation.md +++ b/docs/_docs/installation.md @@ -10,16 +10,31 @@ encountered and how we might make the process easier. ### Requirements -Installing Jekyll is easy and straight-forward, but there are a few -requirements you’ll need to make sure your system has before you start. +Installing Jekyll ought to be straight-forward if all requirements are met. +Before you start, make sure your system has the following: -- [Ruby](https://www.ruby-lang.org/en/downloads/) (including development +- Linux, Unix, or macOS +- [Ruby](https://www.ruby-lang.org/en/downloads/) (including all development headers, v1.9.3 or above for Jekyll 2 and v2 or above for Jekyll 3) - [RubyGems](https://rubygems.org/pages/download) -- Linux, Unix, or macOS -- [NodeJS](https://nodejs.org/), or another JavaScript runtime (Jekyll 2 and -earlier, for CoffeeScript support). -- [Python 2.7](https://www.python.org/downloads/) (for Jekyll 2 and earlier) + +#### Only required for Jekyll 2 and earlier +- [NodeJS](https://nodejs.org/), or another JavaScript runtime (for CoffeeScript support). +- [Python 2.7](https://www.python.org/downloads/) + +
+
Running Jekyll on Ubuntu
+

+ Users of Jekyll on Ubuntu have reported encountering + Could not locate Gemfile or .bundle/ directory error messages at the + bundle exec jekyll serve step in the Quick-start guide. + The likely cause is that all installation requirements have not been fully met. + Recent stock Ubuntu distributions require the installation of both the ruby and ruby-all-dev + packages, e.g. via sudo apt-get install ruby ruby-all-dev (RubyGems should be included in ruby). + The ruby-all-dev .deb package in particular contains development header files whose absence causes + the above error message. +

+
Running Jekyll on Windows
From 2fc4fdfe79223d7869417efb8c26ededaedda06c Mon Sep 17 00:00:00 2001 From: BlueberryFoxtrot Date: Thu, 12 Jan 2017 17:39:21 +0100 Subject: [PATCH 119/207] Update quickstart.md --- docs/_docs/quickstart.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index 984275f7..e84f87be 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -3,7 +3,7 @@ title: Quick-start guide permalink: /docs/quickstart/ --- -If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGems](https://rubygems.org/pages/download) installed (see Jekyll's [requirements](/docs/installation/#requirements/)), you can create a new Jekyll site by doing the following: +If you already have a full [Ruby](https://www.ruby-lang.org/en/downloads/) development environment with all headers and [RubyGems](https://rubygems.org/pages/download) installed (see Jekyll's [requirements](/docs/installation/#requirements/)), you can create a new Jekyll site by doing the following: ```sh # Install Jekyll and Bundler gems through RubyGems @@ -21,6 +21,8 @@ If you already have [Ruby](https://www.ruby-lang.org/en/downloads/) and [RubyGem # Now browse to http://localhost:4000 ``` +If you encounter any unexpected errors during the above, please refer to the already-mentioned [requirements](/docs/installation/#requirements/) page, as you might be missing development headers or other prerequisites. + ## About Bundler `gem install jekyll bundler` installs the [jekyll](https://rubygems.org/gems/jekyll/) and [bundler](https://rubygems.org/gems/bundler) gems through [RubyGems](https://rubygems.org/). You need only to install the gems one time — not every time you create a new Jekyll project. Here are some additional details: From 1d885911bce091a8d8f89df410896809ec6e8bd4 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Thu, 12 Jan 2017 17:52:29 -0600 Subject: [PATCH 120/207] Rubocop: Require consistent comma in multiline literals --- .rubocop.yml | 2 + features/support/formatter.rb | 2 +- features/support/helpers.rb | 4 +- lib/jekyll/commands/doctor.rb | 2 +- lib/jekyll/commands/serve.rb | 12 +-- lib/jekyll/commands/serve/servlet.rb | 2 +- lib/jekyll/configuration.rb | 10 +- .../converters/markdown/kramdown_parser.rb | 2 +- .../converters/markdown/redcarpet_parser.rb | 2 +- lib/jekyll/document.rb | 6 +- lib/jekyll/drops/jekyll_drop.rb | 2 +- lib/jekyll/entry_filter.rb | 2 +- lib/jekyll/filters/grouping_filters.rb | 2 +- lib/jekyll/hooks.rb | 14 +-- lib/jekyll/log_adapter.rb | 2 +- lib/jekyll/page.rb | 4 +- lib/jekyll/plugin.rb | 2 +- lib/jekyll/readers/data_reader.rb | 2 +- lib/jekyll/readers/post_reader.rb | 2 +- lib/jekyll/regenerator.rb | 2 +- lib/jekyll/static_file.rb | 6 +- lib/jekyll/tags/highlight.rb | 4 +- lib/jekyll/theme_builder.rb | 2 +- lib/jekyll/utils/ansi.rb | 2 +- test/helper.rb | 12 +-- test/test_collections.rb | 18 ++-- test/test_commands_serve.rb | 12 +-- test/test_configuration.rb | 50 +++++----- test/test_doctor_command.rb | 4 +- test/test_document.rb | 94 +++++++++---------- test/test_drop.rb | 2 +- test/test_entry_filter.rb | 2 +- test/test_excerpt.rb | 4 +- test/test_filters.rb | 78 +++++++-------- test/test_front_matter_defaults.rb | 58 ++++++------ test/test_kramdown.rb | 24 ++--- test/test_layout_reader.rb | 2 +- test/test_liquid_renderer.rb | 2 +- test/test_page.rb | 6 +- test/test_plugin_manager.rb | 8 +- test/test_rdiscount.rb | 4 +- test/test_redcarpet.rb | 4 +- test/test_regenerator.rb | 12 +-- test/test_related_posts.rb | 2 +- test/test_sass.rb | 2 +- test/test_site.rb | 8 +- test/test_static_file.rb | 6 +- test/test_tags.rb | 54 +++++------ 48 files changed, 281 insertions(+), 279 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 0324c412..67f212ae 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -127,5 +127,7 @@ Style/StringLiterals: EnforcedStyle: double_quotes Style/StringLiteralsInInterpolation: EnforcedStyle: double_quotes +Style/TrailingCommaInLiteral: + EnforcedStyleForMultiline: consistent_comma Style/UnneededCapitalW: Enabled: false diff --git a/features/support/formatter.rb b/features/support/formatter.rb index 22237010..79d14664 100644 --- a/features/support/formatter.rb +++ b/features/support/formatter.rb @@ -16,7 +16,7 @@ module Jekyll :pending => "\u203D".yellow, :undefined => "\u2718".red, :passed => "\u2714".green, - :skipped => "\u203D".blue + :skipped => "\u203D".blue, }.freeze # diff --git a/features/support/helpers.rb b/features/support/helpers.rb index 1340808a..b8044a7c 100644 --- a/features/support/helpers.rb +++ b/features/support/helpers.rb @@ -142,7 +142,7 @@ def location(folder, direction) end [before || ".", - after || "."] + after || ".",] end # @@ -160,7 +160,7 @@ def seconds_agnostic_datetime(datetime = Time.now) [ Regexp.escape(date), "#{time}:\\d{2}", - Regexp.escape(zone) + Regexp.escape(zone), ] \ .join("\\ ") end diff --git a/lib/jekyll/commands/doctor.rb b/lib/jekyll/commands/doctor.rb index c7f387df..59004c96 100644 --- a/lib/jekyll/commands/doctor.rb +++ b/lib/jekyll/commands/doctor.rb @@ -35,7 +35,7 @@ module Jekyll fsnotify_buggy?(site), !deprecated_relative_permalinks(site), !conflicting_urls(site), - !urls_only_differ_by_case(site) + !urls_only_differ_by_case(site), ].all? end diff --git a/lib/jekyll/commands/serve.rb b/lib/jekyll/commands/serve.rb index e0da4807..16913595 100644 --- a/lib/jekyll/commands/serve.rb +++ b/lib/jekyll/commands/serve.rb @@ -10,9 +10,9 @@ module Jekyll "ssl_key" => ["--ssl-key [KEY]", "X.509 (SSL) Private Key."], "port" => ["-P", "--port [PORT]", "Port to listen on"], "show_dir_listing" => ["--show-dir-listing", - "Show a directory listing instead of loading your index file."], + "Show a directory listing instead of loading your index file.",], "skip_initial_build" => ["skip_initial_build", "--skip-initial-build", - "Skips the initial site build which occurs before the server is started."] + "Skips the initial site build which occurs before the server is started.",], }.freeze # @@ -88,7 +88,7 @@ module Jekyll index.rhtml index.cgi index.xml - ) + ), } opts[:DirectoryIndex] = [] if opts[:JekyllOptions]["show_dir_listing"] @@ -116,8 +116,8 @@ module Jekyll WEBrick::Config::FileHandler.merge({ :FancyIndexing => true, :NondisclosureName => [ - ".ht*", "~*" - ] + ".ht*", "~*", + ], }) end @@ -139,7 +139,7 @@ module Jekyll :prefix => ssl_enabled ? "https" : "http", :address => address, :port => port, - :baseurl => baseurl ? "#{baseurl}/" : "" + :baseurl => baseurl ? "#{baseurl}/" : "", }) end diff --git a/lib/jekyll/commands/serve/servlet.rb b/lib/jekyll/commands/serve/servlet.rb index d0dd22af..3ae5cf32 100644 --- a/lib/jekyll/commands/serve/servlet.rb +++ b/lib/jekyll/commands/serve/servlet.rb @@ -6,7 +6,7 @@ module Jekyll class Servlet < WEBrick::HTTPServlet::FileHandler DEFAULTS = { "Cache-Control" => "private, max-age=0, proxy-revalidate, " \ - "no-store, no-cache, must-revalidate" + "no-store, no-cache, must-revalidate", }.freeze def initialize(server, root, callbacks) diff --git a/lib/jekyll/configuration.rb b/lib/jekyll/configuration.rb index 8dc1807d..27e245e4 100644 --- a/lib/jekyll/configuration.rb +++ b/lib/jekyll/configuration.rb @@ -58,15 +58,15 @@ module Jekyll "defaults" => [], "liquid" => { - "error_mode" => "warn" + "error_mode" => "warn", }, "rdiscount" => { - "extensions" => [] + "extensions" => [], }, "redcarpet" => { - "extensions" => [] + "extensions" => [], }, "kramdown" => { @@ -76,8 +76,8 @@ module Jekyll "smart_quotes" => "lsquo,rsquo,ldquo,rdquo", "input" => "GFM", "hard_wrap" => false, - "footnote_nr" => 1 - } + "footnote_nr" => 1, + }, }.map { |k, v| [k, v.freeze] }].freeze class << self diff --git a/lib/jekyll/converters/markdown/kramdown_parser.rb b/lib/jekyll/converters/markdown/kramdown_parser.rb index dd71c6c1..a7252f1a 100644 --- a/lib/jekyll/converters/markdown/kramdown_parser.rb +++ b/lib/jekyll/converters/markdown/kramdown_parser.rb @@ -11,7 +11,7 @@ module Jekyll "line_numbers" => "inline", "line_number_start" => 1, "tab_width" => 4, - "wrap" => "div" + "wrap" => "div", }.freeze def initialize(config) diff --git a/lib/jekyll/converters/markdown/redcarpet_parser.rb b/lib/jekyll/converters/markdown/redcarpet_parser.rb index b5ec99f5..aa170feb 100644 --- a/lib/jekyll/converters/markdown/redcarpet_parser.rb +++ b/lib/jekyll/converters/markdown/redcarpet_parser.rb @@ -21,7 +21,7 @@ class Jekyll::Converters::Markdown::RedcarpetParser code, { :lexer => lang, - :options => { :encoding => "utf-8" } + :options => { :encoding => "utf-8" }, } ), lang diff --git a/lib/jekyll/document.rb b/lib/jekyll/document.rb index ad5884ef..fecd5828 100644 --- a/lib/jekyll/document.rb +++ b/lib/jekyll/document.rb @@ -196,7 +196,7 @@ module Jekyll @url = URL.new({ :template => url_template, :placeholders => url_placeholders, - :permalink => permalink + :permalink => permalink, }).to_s end @@ -469,14 +469,14 @@ module Jekyll "category", "categories" ) - ).map(&:to_s).flatten.uniq + ).map(&:to_s).flatten.uniq, }) end private def populate_tags merge_data!({ - "tags" => Utils.pluralized_array_from_hash(data, "tag", "tags").flatten + "tags" => Utils.pluralized_array_from_hash(data, "tag", "tags").flatten, }) end diff --git a/lib/jekyll/drops/jekyll_drop.rb b/lib/jekyll/drops/jekyll_drop.rb index 50163d74..e3d2eb38 100644 --- a/lib/jekyll/drops/jekyll_drop.rb +++ b/lib/jekyll/drops/jekyll_drop.rb @@ -20,7 +20,7 @@ module Jekyll def to_h @to_h ||= { "version" => version, - "environment" => environment + "environment" => environment, } end diff --git a/lib/jekyll/entry_filter.rb b/lib/jekyll/entry_filter.rb index 5f3431d8..e4187d42 100644 --- a/lib/jekyll/entry_filter.rb +++ b/lib/jekyll/entry_filter.rb @@ -2,7 +2,7 @@ module Jekyll class EntryFilter attr_reader :site SPECIAL_LEADING_CHARACTERS = [ - ".", "_", "#", "~" + ".", "_", "#", "~", ].freeze def initialize(site, base_directory = nil) diff --git a/lib/jekyll/filters/grouping_filters.rb b/lib/jekyll/filters/grouping_filters.rb index a16901d9..e7a904a4 100644 --- a/lib/jekyll/filters/grouping_filters.rb +++ b/lib/jekyll/filters/grouping_filters.rb @@ -54,7 +54,7 @@ module Jekyll array << { "name" => item.first, "items" => item.last, - "size" => item.last.size + "size" => item.last.size, } end end diff --git a/lib/jekyll/hooks.rb b/lib/jekyll/hooks.rb index 9083b27a..5f21b5f6 100644 --- a/lib/jekyll/hooks.rb +++ b/lib/jekyll/hooks.rb @@ -6,7 +6,7 @@ module Jekyll PRIORITY_MAP = { :low => 10, :normal => 20, - :high => 30 + :high => 30, }.freeze # initial empty hooks @@ -17,26 +17,26 @@ module Jekyll :post_read => [], :pre_render => [], :post_render => [], - :post_write => [] + :post_write => [], }, :pages => { :post_init => [], :pre_render => [], :post_render => [], - :post_write => [] + :post_write => [], }, :posts => { :post_init => [], :pre_render => [], :post_render => [], - :post_write => [] + :post_write => [], }, :documents => { :post_init => [], :pre_render => [], :post_render => [], - :post_write => [] - } + :post_write => [], + }, } # map of all hooks and their priorities @@ -64,7 +64,7 @@ module Jekyll :post_init => [], :pre_render => [], :post_render => [], - :post_write => [] + :post_write => [], } unless @registry[owner][event] diff --git a/lib/jekyll/log_adapter.rb b/lib/jekyll/log_adapter.rb index 70173b91..965f3295 100644 --- a/lib/jekyll/log_adapter.rb +++ b/lib/jekyll/log_adapter.rb @@ -6,7 +6,7 @@ module Jekyll :debug => ::Logger::DEBUG, :info => ::Logger::INFO, :warn => ::Logger::WARN, - :error => ::Logger::ERROR + :error => ::Logger::ERROR, }.freeze # Public: Create a new instance of a log writer diff --git a/lib/jekyll/page.rb b/lib/jekyll/page.rb index 7619966d..324a867d 100644 --- a/lib/jekyll/page.rb +++ b/lib/jekyll/page.rb @@ -98,7 +98,7 @@ module Jekyll @url ||= URL.new({ :template => template, :placeholders => url_placeholders, - :permalink => permalink + :permalink => permalink, }).to_s end @@ -108,7 +108,7 @@ module Jekyll { :path => @dir, :basename => basename, - :output_ext => output_ext + :output_ext => output_ext, } end diff --git a/lib/jekyll/plugin.rb b/lib/jekyll/plugin.rb index bcc1bf7e..4680be32 100644 --- a/lib/jekyll/plugin.rb +++ b/lib/jekyll/plugin.rb @@ -5,7 +5,7 @@ module Jekyll :highest => 100, :lowest => -100, :normal => 0, - :high => 10 + :high => 10, }.freeze # diff --git a/lib/jekyll/readers/data_reader.rb b/lib/jekyll/readers/data_reader.rb index 6744ae05..1083d62b 100644 --- a/lib/jekyll/readers/data_reader.rb +++ b/lib/jekyll/readers/data_reader.rb @@ -54,7 +54,7 @@ module Jekyll when ".csv" CSV.read(path, { :headers => true, - :encoding => site.config["encoding"] + :encoding => site.config["encoding"], }).map(&:to_hash) else SafeYAML.load_file(path) diff --git a/lib/jekyll/readers/post_reader.rb b/lib/jekyll/readers/post_reader.rb index 123709e7..70688875 100644 --- a/lib/jekyll/readers/post_reader.rb +++ b/lib/jekyll/readers/post_reader.rb @@ -57,7 +57,7 @@ module Jekyll path = @site.in_source_dir(File.join(dir, magic_dir, entry)) Document.new(path, { :site => @site, - :collection => @site.posts + :collection => @site.posts, }) end.reject(&:nil?) end diff --git a/lib/jekyll/regenerator.rb b/lib/jekyll/regenerator.rb index 4d89da2e..09ff309a 100644 --- a/lib/jekyll/regenerator.rb +++ b/lib/jekyll/regenerator.rb @@ -40,7 +40,7 @@ module Jekyll metadata[path] = { "mtime" => File.mtime(path), - "deps" => [] + "deps" => [], } cache[path] = true end diff --git a/lib/jekyll/static_file.rb b/lib/jekyll/static_file.rb index 927a9b47..53b945d4 100644 --- a/lib/jekyll/static_file.rb +++ b/lib/jekyll/static_file.rb @@ -101,7 +101,7 @@ module Jekyll "name" => name, "extname" => extname, "modified_time" => modified_time, - "path" => File.join("", relative_path) + "path" => File.join("", relative_path), } end @@ -112,7 +112,7 @@ module Jekyll @collection.relative_directory.size..relative_path.size], :output_ext => "", :name => "", - :title => "" + :title => "", } end @@ -125,7 +125,7 @@ module Jekyll else ::Jekyll::URL.new({ :template => @collection.url_template, - :placeholders => placeholders + :placeholders => placeholders, }) end.to_s.gsub(%r!/$!, "") end diff --git a/lib/jekyll/tags/highlight.rb b/lib/jekyll/tags/highlight.rb index 43b0c62f..86b9171b 100644 --- a/lib/jekyll/tags/highlight.rb +++ b/lib/jekyll/tags/highlight.rb @@ -54,7 +54,7 @@ eos [:hl_lines, opts.fetch(:hl_lines, nil)], [:linenos, opts.fetch(:linenos, nil)], [:encoding, opts.fetch(:encoding, "utf-8")], - [:cssclass, opts.fetch(:cssclass, nil)] + [:cssclass, opts.fetch(:cssclass, nil)], ].reject { |f| f.last.nil? }] else opts @@ -125,7 +125,7 @@ eos def add_code_tag(code) code_attributes = [ "class=\"language-#{@lang.to_s.tr("+", "-")}\"", - "data-lang=\"#{@lang}\"" + "data-lang=\"#{@lang}\"", ].join(" ") "
"\
         "#{code.chomp}
" diff --git a/lib/jekyll/theme_builder.rb b/lib/jekyll/theme_builder.rb index 68a5eeab..f1c97e37 100644 --- a/lib/jekyll/theme_builder.rb +++ b/lib/jekyll/theme_builder.rb @@ -28,7 +28,7 @@ class Jekyll::ThemeBuilder def template_file(filename) [ root.join("theme_template", "#{filename}.erb"), - root.join("theme_template", filename.to_s) + root.join("theme_template", filename.to_s), ].find(&:exist?) end diff --git a/lib/jekyll/utils/ansi.rb b/lib/jekyll/utils/ansi.rb index 4be163c5..8bdd2322 100644 --- a/lib/jekyll/utils/ansi.rb +++ b/lib/jekyll/utils/ansi.rb @@ -17,7 +17,7 @@ module Jekyll :yellow => 33, :white => 37, :blue => 34, - :cyan => 36 + :cyan => 36, }.freeze # Strip ANSI from the current string. It also strips cursor stuff, diff --git a/test/helper.rb b/test/helper.rb index 0c6935a0..e33ddae7 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -46,7 +46,7 @@ include Jekyll Minitest::Reporters.use! [ Minitest::Reporters::DefaultReporter.new( :color => true - ) + ), ] module Minitest::Assertions @@ -107,9 +107,9 @@ class JekyllUnitTest < Minitest::Test site = fixture_site({ "collections" => { "methods" => { - "output" => true - } - } + "output" => true, + }, + }, }) site.read matching_doc = site.collections["methods"].docs.find do |doc| @@ -133,10 +133,10 @@ class JekyllUnitTest < Minitest::Test def site_configuration(overrides = {}) full_overrides = build_configs(overrides, build_configs({ "destination" => dest_dir, - "incremental" => false + "incremental" => false, })) Configuration.from(full_overrides.merge({ - "source" => source_dir + "source" => source_dir, })) end diff --git a/test/test_collections.rb b/test/test_collections.rb index 0dca8443..0607208b 100644 --- a/test/test_collections.rb +++ b/test/test_collections.rb @@ -91,9 +91,9 @@ class TestCollections < JekyllUnitTest @site = fixture_site({ "collections" => { "methods" => { - "permalink" => "/awesome/:path/" - } - } + "permalink" => "/awesome/:path/", + }, + }, }) @site.process @collection = @site.collections["methods"] @@ -107,7 +107,7 @@ class TestCollections < JekyllUnitTest context "with a collection" do setup do @site = fixture_site({ - "collections" => ["methods"] + "collections" => ["methods"], }) @site.process @collection = @site.collections["methods"] @@ -158,9 +158,9 @@ class TestCollections < JekyllUnitTest "collections" => { "methods" => { "foo" => "bar", - "baz" => "whoo" - } - } + "baz" => "whoo", + }, + }, }) @site.process @collection = @site.collections["methods"] @@ -175,7 +175,7 @@ class TestCollections < JekyllUnitTest setup do @site = fixture_site({ "collections" => ["methods"], - "safe" => true + "safe" => true, }) @site.process @collection = @site.collections["methods"] @@ -198,7 +198,7 @@ class TestCollections < JekyllUnitTest setup do @site = fixture_site({ "collections" => ["with.dots"], - "safe" => true + "safe" => true, }) @site.process @collection = @site.collections["with.dots"] diff --git a/test/test_commands_serve.rb b/test/test_commands_serve.rb index 143dc2a5..fa0f7f67 100644 --- a/test/test_commands_serve.rb +++ b/test/test_commands_serve.rb @@ -86,12 +86,12 @@ class TestCommandsServe < JekyllUnitTest "config" => %w(_config.yml _development.yml), "serving" => true, "watch" => false, # for not having guard output when running the tests - "url" => "http://localhost:4000" + "url" => "http://localhost:4000", } expect(Jekyll::Commands::Serve).to receive(:process).with(custom_options) @merc.execute(:serve, { "config" => %w(_config.yml _development.yml), - "watch" => false }) + "watch" => false, }) end context "in development environment" do @@ -113,7 +113,7 @@ class TestCommandsServe < JekyllUnitTest "port" => "9999", "url" => "https://jekyllrb.com/", "ssl_cert" => "foo", - "ssl_key" => "bar" + "ssl_key" => "bar", }) assert_equal 1, Jekyll.sites.count @@ -146,13 +146,13 @@ class TestCommandsServe < JekyllUnitTest should "raise if enabling without key or cert" do assert_raises RuntimeError do custom_opts({ - "ssl_key" => "foo" + "ssl_key" => "foo", }) end assert_raises RuntimeError do custom_opts({ - "ssl_key" => "foo" + "ssl_key" => "foo", }) end end @@ -166,7 +166,7 @@ class TestCommandsServe < JekyllUnitTest "ssl_cert" => "foo", "source" => "bar", "enable_ssl" => true, - "ssl_key" => "bar" + "ssl_key" => "bar", }) assert result[:SSLEnable] diff --git a/test/test_configuration.rb b/test/test_configuration.rb index 696fc3e9..febc0cbe 100644 --- a/test/test_configuration.rb +++ b/test/test_configuration.rb @@ -4,7 +4,7 @@ require "colorator" class TestConfiguration < JekyllUnitTest test_config = { "source" => new(nil).source_dir, - "destination" => dest_dir + "destination" => dest_dir, } context ".from" do @@ -34,8 +34,8 @@ class TestConfiguration < JekyllUnitTest { "posts" => { "output" => true, - "permalink" => "/:categories/:year/:month/:day/:title:output_ext" - } + "permalink" => "/:categories/:year/:month/:day/:title:output_ext", + }, } ) end @@ -85,8 +85,8 @@ class TestConfiguration < JekyllUnitTest { "posts" => { "output" => true, - "permalink" => "/:categories/:year/:month/:day/:title/" - } + "permalink" => "/:categories/:year/:month/:day/:title/", + }, } ) @@ -109,14 +109,14 @@ class TestConfiguration < JekyllUnitTest :permalink => "date", "baseurl" => "/", :include => [".htaccess"], - :source => "./" + :source => "./", }] @string_keys = Configuration[{ "markdown" => "kramdown", "permalink" => "date", "baseurl" => "/", "include" => [".htaccess"], - "source" => "./" + "source" => "./", }] end should "stringify symbol keys" do @@ -132,7 +132,7 @@ class TestConfiguration < JekyllUnitTest @no_override = {} @one_config_file = { "config" => "config.yml" } @multiple_files = { - "config" => %w(config/site.yml config/deploy.toml configuration.yml) + "config" => %w(config/site.yml config/deploy.toml configuration.yml), } end @@ -205,7 +205,7 @@ class TestConfiguration < JekyllUnitTest "pygments" => true, "plugins" => true, "layouts" => true, - "data_source" => true + "data_source" => true, }] end should "unset 'auto' and 'watch'" do @@ -255,7 +255,7 @@ class TestConfiguration < JekyllUnitTest setup do @config = proc do |val| Configuration[{ - "paginate" => val + "paginate" => val, }] end end @@ -327,7 +327,7 @@ class TestConfiguration < JekyllUnitTest :default => source_dir("_config.yml"), :other => source_dir("_config.live.yml"), :toml => source_dir("_config.dev.toml"), - :empty => "" + :empty => "", } end @@ -372,7 +372,7 @@ class TestConfiguration < JekyllUnitTest Jekyll.logger.log_level = :warn assert_equal \ site_configuration({ "baseurl" => "/you-beautiful-blog-you", - "title" => "My magnificent site, wut" }), + "title" => "My magnificent site, wut", }), Jekyll.configuration(test_config.merge({ "config" => [@paths[:toml]] })) Jekyll.logger.log_level = :info end @@ -435,9 +435,9 @@ class TestConfiguration < JekyllUnitTest "docs" => {}, "posts" => { "output" => true, - "permalink" => "/:categories/:year/:month/:day/:title:output_ext" - } - } + "permalink" => "/:categories/:year/:month/:day/:title:output_ext", + }, + }, }) end @@ -449,9 +449,9 @@ class TestConfiguration < JekyllUnitTest "collections" => { "posts" => { "output" => true, - "permalink" => "/:categories/:year/:month/:day/:title:output_ext" - } - } + "permalink" => "/:categories/:year/:month/:day/:title:output_ext", + }, + }, }) end @@ -461,9 +461,9 @@ class TestConfiguration < JekyllUnitTest "collections" => { "posts" => { "output" => true, - "permalink" => "/:categories/:year/:month/:day/:title:output_ext" - } - } + "permalink" => "/:categories/:year/:month/:day/:title:output_ext", + }, + }, }) end @@ -471,16 +471,16 @@ class TestConfiguration < JekyllUnitTest posts_permalink = "/:year/:title/" conf = Configuration[default_configuration].tap do |c| c["collections"] = { - "posts" => { "permalink" => posts_permalink } + "posts" => { "permalink" => posts_permalink }, } end assert_equal conf.add_default_collections, conf.merge({ "collections" => { "posts" => { "output" => true, - "permalink" => posts_permalink - } - } + "permalink" => posts_permalink, + }, + }, }) end end diff --git a/test/test_doctor_command.rb b/test/test_doctor_command.rb index 652175b9..88614402 100644 --- a/test/test_doctor_command.rb +++ b/test/test_doctor_command.rb @@ -10,7 +10,7 @@ class TestDoctorCommand < JekyllUnitTest should "return success on a valid site/page" do @site = Site.new(Jekyll.configuration({ "source" => File.join(source_dir, "/_urls_differ_by_case_valid"), - "destination" => dest_dir + "destination" => dest_dir, })) @site.process output = capture_stderr do @@ -23,7 +23,7 @@ class TestDoctorCommand < JekyllUnitTest should "return warning for pages only differing by case" do @site = Site.new(Jekyll.configuration({ "source" => File.join(source_dir, "/_urls_differ_by_case_invalid"), - "destination" => dest_dir + "destination" => dest_dir, })) @site.process output = capture_stderr do diff --git a/test/test_document.rb b/test/test_document.rb index 7c9df18c..f274dd53 100644 --- a/test/test_document.rb +++ b/test/test_document.rb @@ -8,7 +8,7 @@ class TestDocument < JekyllUnitTest context "a document in a collection" do setup do @site = fixture_site({ - "collections" => ["methods"] + "collections" => ["methods"], }) @site.process @document = @site.collections["methods"].docs.detect do |d| @@ -118,10 +118,10 @@ class TestDocument < JekyllUnitTest "scope" => { "path"=>"", "type"=>"slides" }, "values" => { "nested" => { - "key" => "myval" - } - } - }] + "key" => "myval", + }, + }, + },], }) @site.process @document = @site.collections["slides"].docs.select { |d| d.is_a?(Document) }.first @@ -143,10 +143,10 @@ class TestDocument < JekyllUnitTest "values" => { "nested" => { "test1" => "default1", - "test2" => "default1" - } - } - }] + "test2" => "default1", + }, + }, + },], }) @site.process @document = @site.collections["slides"].docs[1] @@ -170,10 +170,10 @@ class TestDocument < JekyllUnitTest "scope" => { "path"=>"_slides", "type"=>"slides" }, "values" => { "nested" => { - "key" => "value123" - } - } - }] + "key" => "value123", + }, + }, + },], }) @site.process @document = @site.collections["slides"].docs.first @@ -194,10 +194,10 @@ class TestDocument < JekyllUnitTest "scope" => { "path"=>"somepath", "type"=>"slides" }, "values" => { "nested" => { - "key" => "myval" - } - } - }] + "key" => "myval", + }, + }, + },], }) @site.process @document = @site.collections["slides"].docs.first @@ -213,7 +213,7 @@ class TestDocument < JekyllUnitTest context "a document in a collection with a custom permalink" do setup do @site = fixture_site({ - "collections" => ["slides"] + "collections" => ["slides"], }) @site.process @document = @site.collections["slides"].docs[2] @@ -235,10 +235,10 @@ class TestDocument < JekyllUnitTest "collections" => { "slides" => { "output" => true, - "permalink" => "/slides/test/:name" - } + "permalink" => "/slides/test/:name", + }, }, - "permalink" => "pretty" + "permalink" => "pretty", }) @site.process @document = @site.collections["slides"].docs[0] @@ -263,9 +263,9 @@ class TestDocument < JekyllUnitTest @site = fixture_site({ "collections" => { "slides" => { - "output" => true - } - } + "output" => true, + }, + }, }) @site.permalink_style = :pretty @site.process @@ -287,9 +287,9 @@ class TestDocument < JekyllUnitTest @site = fixture_site({ "collections" => { "slides" => { - "output" => true - } - } + "output" => true, + }, + }, }) @site.permalink_style = :pretty @site.process @@ -307,9 +307,9 @@ class TestDocument < JekyllUnitTest @site = fixture_site({ "collections" => { "slides" => { - "output" => true - } - } + "output" => true, + }, + }, }) @site.process @document = @site.collections["slides"].docs[6] @@ -339,9 +339,9 @@ class TestDocument < JekyllUnitTest "collections" => { "slides" => { "output" => true, - "permalink" => "/slides/:title" - } - } + "permalink" => "/slides/:title", + }, + }, }) @site.process @document = @site.collections["slides"].docs[3] @@ -381,8 +381,8 @@ class TestDocument < JekyllUnitTest context "document with a permalink with dots & a trailing slash" do setup do @site = fixture_site({ "collections" => { - "with.dots" => { "output" => true } - } }) + "with.dots" => { "output" => true }, + }, }) @site.process @document = @site.collections["with.dots"].docs.last @dest_file = dest_dir("with.dots", "permalink.with.slash.tho", "index.html") @@ -406,9 +406,9 @@ class TestDocument < JekyllUnitTest @site = fixture_site({ "collections" => { "slides" => { - "output" => true - } - } + "output" => true, + }, + }, }) @site.process @files = @site.collections["slides"].docs @@ -436,9 +436,9 @@ class TestDocument < JekyllUnitTest @site = fixture_site({ "collections" => { "slides" => { - "output" => true - } - } + "output" => true, + }, + }, }) @site.process @document = @site.collections["slides"].files.find do |doc| @@ -469,9 +469,9 @@ class TestDocument < JekyllUnitTest @site = fixture_site({ "collections" => { "methods" => { - "output" => true - } - } + "output" => true, + }, + }, }) @site.process @document = @site.collections["methods"].docs.find do |doc| @@ -498,9 +498,9 @@ class TestDocument < JekyllUnitTest @site = fixture_site({ "collections" => { "methods" => { - "output" => true - } - } + "output" => true, + }, + }, }) @site.process @document = @site.collections["methods"].docs.find do |doc| diff --git a/test/test_drop.rb b/test/test_drop.rb index 199e94ab..80b0d0ff 100644 --- a/test/test_drop.rb +++ b/test/test_drop.rb @@ -4,7 +4,7 @@ class TestDrop < JekyllUnitTest context "a document drop" do setup do @site = fixture_site({ - "collections" => ["methods"] + "collections" => ["methods"], }) @site.process @document = @site.collections["methods"].docs.detect do |d| diff --git a/test/test_entry_filter.rb b/test/test_entry_filter.rb index f65badc6..7f32653c 100644 --- a/test/test_entry_filter.rb +++ b/test/test_entry_filter.rb @@ -17,7 +17,7 @@ class TestEntryFilter < JekyllUnitTest should "allow regexp filtering" do files = %w(README.md) @site.exclude = [ - %r!README! + %r!README!, ] assert_empty @site.reader.filter_entries( diff --git a/test/test_excerpt.rb b/test/test_excerpt.rb index 0b7e540f..e0960f69 100644 --- a/test/test_excerpt.rb +++ b/test/test_excerpt.rb @@ -4,13 +4,13 @@ class TestExcerpt < JekyllUnitTest def setup_post(file) Document.new(@site.in_source_dir(File.join("_posts", file)), { :site => @site, - :collection => @site.posts + :collection => @site.posts, }).tap(&:read) end def do_render(document) @site.layouts = { - "default" => Layout.new(@site, source_dir("_layouts"), "simple.html") + "default" => Layout.new(@site, source_dir("_layouts"), "simple.html"), } document.output = Jekyll::Renderer.new(@site, document, @site.site_payload).run end diff --git a/test/test_filters.rb b/test/test_filters.rb index e5dedfae..71639ad7 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -29,7 +29,7 @@ class TestFilters < JekyllUnitTest @filter = make_filter_mock({ "timezone" => "UTC", "url" => "http://example.com", - "baseurl" => "/base" + "baseurl" => "/base", }) @sample_time = Time.utc(2013, 3, 27, 11, 22, 33) @sample_date = Date.parse("2013-03-27") @@ -39,7 +39,7 @@ class TestFilters < JekyllUnitTest @array_of_objects = [ { "color" => "red", "size" => "large" }, { "color" => "red", "size" => "medium" }, - { "color" => "blue", "size" => "medium" } + { "color" => "blue", "size" => "medium" }, ] end @@ -332,7 +332,7 @@ class TestFilters < JekyllUnitTest page_url = "about/my_favorite_page/" filter = make_filter_mock({ "url" => "http://example.com", - "baseurl" => "base" + "baseurl" => "base", }) assert_equal "http://example.com/base/#{page_url}", filter.absolute_url(page_url) end @@ -341,7 +341,7 @@ class TestFilters < JekyllUnitTest page_url = "about/my_favorite_page/" filter = make_filter_mock({ "url" => "", - "baseurl" => "base" + "baseurl" => "base", }) assert_equal "/base/#{page_url}", filter.absolute_url(page_url) end @@ -350,7 +350,7 @@ class TestFilters < JekyllUnitTest page_url = "about/my_favorite_page/" filter = make_filter_mock({ "url" => nil, - "baseurl" => "base" + "baseurl" => "base", }) assert_equal "/base/#{page_url}", filter.absolute_url(page_url) end @@ -359,7 +359,7 @@ class TestFilters < JekyllUnitTest page_url = "about/my_favorite_page/" filter = make_filter_mock({ "url" => "http://example.com", - "baseurl" => nil + "baseurl" => nil, }) assert_equal "http://example.com/#{page_url}", filter.absolute_url(page_url) end @@ -368,7 +368,7 @@ class TestFilters < JekyllUnitTest page_url = "" filter = make_filter_mock({ "url" => "http://example.com", - "baseurl" => "/base" + "baseurl" => "/base", }) assert_equal "http://example.com/base", filter.absolute_url(page_url) end @@ -377,7 +377,7 @@ class TestFilters < JekyllUnitTest page_url = "" filter = make_filter_mock({ "url" => "http://ümlaut.example.org/", - "baseurl" => nil + "baseurl" => nil, }) assert_equal "http://xn--mlaut-jva.example.org/", filter.absolute_url(page_url) end @@ -409,7 +409,7 @@ class TestFilters < JekyllUnitTest page_url = "about/my_favorite_page/" filter = make_filter_mock({ "url" => "http://example.com", - "baseurl" => nil + "baseurl" => nil, }) assert_equal "/#{page_url}", filter.relative_url(page_url) end @@ -418,7 +418,7 @@ class TestFilters < JekyllUnitTest page_url = "" filter = make_filter_mock({ "url" => "http://example.com", - "baseurl" => "/base" + "baseurl" => "/base", }) assert_equal "/base", filter.relative_url(page_url) end @@ -451,7 +451,7 @@ class TestFilters < JekyllUnitTest "excerpt" => "

This should be published.

\n", "draft" => false, "categories" => [ - "publish_test" + "publish_test", ], "layout" => "default", "title" => "Publish", @@ -459,7 +459,7 @@ class TestFilters < JekyllUnitTest "date" => "2008-02-02 00:00:00 +0000", "slug" => "published", "ext" => ".markdown", - "tags" => [] + "tags" => [], } actual = JSON.parse(@filter.jsonify(@filter.site.docs_to_write.first.to_liquid)) @@ -475,7 +475,7 @@ class TestFilters < JekyllUnitTest actual = @filter.jsonify(@filter.site.to_liquid) assert_equal JSON.parse(actual)["jekyll"], { "environment" => "development", - "version" => Jekyll::VERSION + "version" => Jekyll::VERSION, } end @@ -491,7 +491,7 @@ class TestFilters < JekyllUnitTest "name" => name, :v => 1, :thing => M.new({ :kay => "jewelers" }), - :stuff => true + :stuff => true, } end end @@ -503,21 +503,21 @@ class TestFilters < JekyllUnitTest "v" => 1, "thing" => [ { - "kay" => "jewelers" - } + "kay" => "jewelers", + }, ], - "stuff" => true + "stuff" => true, }, { "name" => "Smathers", "v" => 1, "thing" => [ { - "kay" => "jewelers" - } + "kay" => "jewelers", + }, ], - "stuff" => true - } + "stuff" => true, + }, ] result = @filter.jsonify([T.new("Jeremiah"), T.new("Smathers")]) assert_equal expected, JSON.parse(result) @@ -533,32 +533,32 @@ class TestFilters < JekyllUnitTest "v" => 1, "thing" => [ { - "kay" => "jewelers" - } + "kay" => "jewelers", + }, ], - "stuff" => true + "stuff" => true, }, { "name" => 1, "v" => 1, "thing" => [ { - "kay" => "jewelers" - } + "kay" => "jewelers", + }, ], - "stuff" => true + "stuff" => true, }, { "name" => 2, "v" => 1, "thing" => [ { - "kay" => "jewelers" - } + "kay" => "jewelers", + }, ], - "stuff" => true - } - ] + "stuff" => true, + }, + ], } result = @filter.jsonify(my_hash) assert_equal expected, JSON.parse(result) @@ -633,7 +633,7 @@ class TestFilters < JekyllUnitTest hash = { "a" => { "tags"=>%w(x y) }, "b" => { "tags"=>["x"] }, - "c" => { "tags"=>%w(y z) } + "c" => { "tags"=>%w(y z) }, } assert_equal 2, @filter.where(hash, "tags", "x").length end @@ -642,7 +642,7 @@ class TestFilters < JekyllUnitTest hash = { "a" => { "tags"=>%w(x y) }, "b" => { "tags"=>"x" }, - "c" => { "tags"=>%w(y z) } + "c" => { "tags"=>%w(y z) }, } assert_equal 2, @filter.where(hash, "tags", "x").length end @@ -651,7 +651,7 @@ class TestFilters < JekyllUnitTest hash = { "a" => { "category"=>"bear" }, "b" => { "category"=>"wolf" }, - "c" => { "category"=>%w(bear lion) } + "c" => { "category"=>%w(bear lion) }, } assert_equal 0, @filter.where(hash, "category", "ear").length end @@ -660,7 +660,7 @@ class TestFilters < JekyllUnitTest hash = { "The Words" => { "rating" => 1.2, "featured" => false }, "Limitless" => { "rating" => 9.2, "featured" => true }, - "Hustle" => { "rating" => 4.7, "featured" => true } + "Hustle" => { "rating" => 4.7, "featured" => true }, } results = @filter.where(hash, "featured", "true") @@ -704,7 +704,7 @@ class TestFilters < JekyllUnitTest hash = { "The Words" => { "rating" => 1.2, "featured" => false }, "Limitless" => { "rating" => 9.2, "featured" => true }, - "Hustle" => { "rating" => 4.7, "featured" => true } + "Hustle" => { "rating" => 4.7, "featured" => true }, } results = @filter.where_exp(hash, "item", "item.featured == true") @@ -725,7 +725,7 @@ class TestFilters < JekyllUnitTest { "id" => "a", "groups" => [1, 2] }, { "id" => "b", "groups" => [2, 3] }, { "id" => "c" }, - { "id" => "d", "groups" => [1, 3] } + { "id" => "d", "groups" => [1, 3] }, ] should "filter with the contains operator over arrays" do results = @filter.where_exp(objects, "obj", "obj.groups contains 1") @@ -807,7 +807,7 @@ class TestFilters < JekyllUnitTest items = [ { "version"=>"1.0", "result"=>"slow" }, { "version"=>"1.1.5", "result"=>"medium" }, - { "version"=>"2.7.3", "result"=>"fast" } + { "version"=>"2.7.3", "result"=>"fast" }, ] result = @filter.group_by_exp(items, "item", "item.version | split: '.' | first") diff --git a/test/test_front_matter_defaults.rb b/test/test_front_matter_defaults.rb index 30c713ac..0d066c11 100644 --- a/test/test_front_matter_defaults.rb +++ b/test/test_front_matter_defaults.rb @@ -7,12 +7,12 @@ class TestFrontMatterDefaults < JekyllUnitTest "defaults" => [{ "scope" => { "path" => "contacts", - "type" => "page" + "type" => "page", }, "values" => { - "key" => "val" - } - }] + "key" => "val", + }, + },], }) @site.process @affected = @site.pages.find { |page| page.relative_path == "contacts/bar.html" } @@ -30,12 +30,12 @@ class TestFrontMatterDefaults < JekyllUnitTest @site = fixture_site({ "defaults" => [{ "scope" => { - "path" => "index.html" + "path" => "index.html", }, "values" => { - "key" => "val" - } - }] + "key" => "val", + }, + },], }) @site.process @@ -54,12 +54,12 @@ class TestFrontMatterDefaults < JekyllUnitTest @site = fixture_site({ "defaults" => [{ "scope" => { - "path" => "win" + "path" => "win", }, "values" => { - "key" => "val" - } - }] + "key" => "val", + }, + },], }) @site.process @@ -78,12 +78,12 @@ class TestFrontMatterDefaults < JekyllUnitTest @site = fixture_site({ "defaults" => [{ "scope" => { - "type" => "page" + "type" => "page", }, "values" => { - "key" => "val" - } - }] + "key" => "val", + }, + },], }) @site.process @@ -103,12 +103,12 @@ class TestFrontMatterDefaults < JekyllUnitTest @site = fixture_site({ "defaults" => [{ "scope" => { - "type" => "pages" + "type" => "pages", }, "values" => { - "key" => "val" - } - }] + "key" => "val", + }, + },], }) @site.process @affected = @site.pages @@ -129,9 +129,9 @@ class TestFrontMatterDefaults < JekyllUnitTest "scope" => { }, "values" => { - "key" => "val" - } - }] + "key" => "val", + }, + },], }) @site.process @affected = @site.pages @@ -149,9 +149,9 @@ class TestFrontMatterDefaults < JekyllUnitTest @site = fixture_site({ "defaults" => [{ "values" => { - "key" => "val" - } - }] + "key" => "val", + }, + },], }) @site.process @affected = @site.pages @@ -171,9 +171,9 @@ class TestFrontMatterDefaults < JekyllUnitTest "destination" => dest_dir, "defaults" => [{ "values" => { - "date" => "2015-01-01 00:00:01" - } - }] + "date" => "2015-01-01 00:00:01", + }, + },], })) end diff --git a/test/test_kramdown.rb b/test/test_kramdown.rb index 0a6332f8..d8f886a4 100644 --- a/test/test_kramdown.rb +++ b/test/test_kramdown.rb @@ -16,9 +16,9 @@ class TestKramdown < JekyllUnitTest "syntax_highlighter" => "rouge", "syntax_highlighter_opts" => { - "bold_every" => 8, "css" => :class - } - } + "bold_every" => 8, "css" => :class, + }, + }, } @config = Jekyll.configuration(@config) @@ -43,8 +43,8 @@ class TestKramdown < JekyllUnitTest override = { "highlighter" => nil, "kramdown" => { - "smart_quotes" => "lsaquo,rsaquo,laquo,raquo" - } + "smart_quotes" => "lsaquo,rsaquo,laquo,raquo", + }, } markdown = Converters::Markdown.new(Utils.deep_merge_hashes(@config, override)) @@ -70,8 +70,8 @@ class TestKramdown < JekyllUnitTest "highlighter" => nil, "markdown" => "kramdown", "kramdown" => { - "syntax_highlighter" => :coderay - } + "syntax_highlighter" => :coderay, + }, } markdown = Converters::Markdown.new(Utils.deep_merge_hashes(@config, override)) @@ -89,8 +89,8 @@ class TestKramdown < JekyllUnitTest override = { "markdown" => "kramdown", "kramdown" => { - "enable_coderay" => true - } + "enable_coderay" => true, + }, } @config.delete("highlighter") @@ -115,9 +115,9 @@ class TestKramdown < JekyllUnitTest "kramdown" => { "syntax_highlighter" => "coderay", "coderay" => { - "hello" => "world" - } - } + "hello" => "world", + }, + }, })) expect(Kramdown::Document).to receive(:new) do |arg1, hash| diff --git a/test/test_layout_reader.rb b/test/test_layout_reader.rb index 133cd6f2..1d32fa57 100644 --- a/test/test_layout_reader.rb +++ b/test/test_layout_reader.rb @@ -4,7 +4,7 @@ class TestLayoutReader < JekyllUnitTest context "reading layouts" do setup do config = Jekyll::Configuration::DEFAULTS.merge({ "source" => source_dir, - "destination" => dest_dir }) + "destination" => dest_dir, }) @site = fixture_site(config) end diff --git a/test/test_liquid_renderer.rb b/test/test_liquid_renderer.rb index 7d429c52..6ba29299 100644 --- a/test/test_liquid_renderer.rb +++ b/test/test_liquid_renderer.rb @@ -16,7 +16,7 @@ class TestLiquidRenderer < JekyllUnitTest expected = [ %r!^Filename\s+|\s+Count\s+|\s+Bytes\s+|\s+Time$!, %r!^-+\++-+\++-+\++-+$!, - %r!^_posts/2010-01-09-date-override\.markdown\s+|\s+\d+\s+|\s+\d+\.\d{2}K\s+|\s+\d+\.\d{3}$! + %r!^_posts/2010-01-09-date-override\.markdown\s+|\s+\d+\s+|\s+\d+\.\d{2}K\s+|\s+\d+\.\d{3}$!, ] # rubocop:enable Metrics/LineLength diff --git a/test/test_page.rb b/test/test_page.rb index 259de185..431c57a6 100644 --- a/test/test_page.rb +++ b/test/test_page.rb @@ -12,7 +12,7 @@ class TestPage < JekyllUnitTest def do_render(page) layouts = { - "default" => Layout.new(@site, source_dir("_layouts"), "simple.html") + "default" => Layout.new(@site, source_dir("_layouts"), "simple.html"), } page.render(layouts, @site.site_payload) end @@ -23,7 +23,7 @@ class TestPage < JekyllUnitTest @site = Site.new(Jekyll.configuration({ "source" => source_dir, "destination" => dest_dir, - "skip_config_files" => true + "skip_config_files" => true, })) end @@ -90,7 +90,7 @@ class TestPage < JekyllUnitTest :permalink => "/properties/", :published => nil, :title => "Properties Page", - :url => "/properties/" + :url => "/properties/", } attrs.each do |attr, val| diff --git a/test/test_plugin_manager.rb b/test/test_plugin_manager.rb index c625c3a8..702df593 100644 --- a/test/test_plugin_manager.rb +++ b/test/test_plugin_manager.rb @@ -68,7 +68,7 @@ class TestPluginManager < JekyllUnitTest should "require plugin files" do site = double({ :safe => false, :config => { "plugins_dir" => "_plugins" }, - :in_source_dir => "/tmp/" }) + :in_source_dir => "/tmp/", }) plugin_manager = PluginManager.new(site) expect(Jekyll::External).to receive(:require_with_graceful_fail) @@ -98,9 +98,9 @@ class TestPluginManager < JekyllUnitTest should "call site's in_source_dir" do site = double({ :config => { - "plugins_dir" => Jekyll::Configuration::DEFAULTS["plugins_dir"] + "plugins_dir" => Jekyll::Configuration::DEFAULTS["plugins_dir"], }, - :in_source_dir => "/tmp/" + :in_source_dir => "/tmp/", }) plugin_manager = PluginManager.new(site) @@ -132,7 +132,7 @@ class TestPluginManager < JekyllUnitTest should "print no deprecation warning if jekyll-paginate is present" do site = double({ - :config => { "paginate" => true, "gems" => ["jekyll-paginate"] } + :config => { "paginate" => true, "gems" => ["jekyll-paginate"] }, }) plugin_manager = PluginManager.new(site) diff --git a/test/test_rdiscount.rb b/test/test_rdiscount.rb index 9390aaed..32289a64 100644 --- a/test/test_rdiscount.rb +++ b/test/test_rdiscount.rb @@ -13,8 +13,8 @@ class TestRdiscount < JekyllUnitTest "markdown" => "rdiscount", "rdiscount" => { "toc_token" => "{:toc}", - "extensions" => %w(smart generate_toc) - } + "extensions" => %w(smart generate_toc), + }, } @markdown = Converters::Markdown.new config diff --git a/test/test_redcarpet.rb b/test/test_redcarpet.rb index 140fabbe..4e979f4d 100644 --- a/test/test_redcarpet.rb +++ b/test/test_redcarpet.rb @@ -12,8 +12,8 @@ class TestRedcarpet < JekyllUnitTest @config = { "markdown" => "redcarpet", "redcarpet" => { - "extensions" => %w(smart strikethrough filter_html) - } + "extensions" => %w(smart strikethrough filter_html), + }, } @markdown = Converters::Markdown.new @config diff --git a/test/test_regenerator.rb b/test/test_regenerator.rb index 03920c83..9e1559d4 100644 --- a/test/test_regenerator.rb +++ b/test/test_regenerator.rb @@ -8,10 +8,10 @@ class TestRegenerator < JekyllUnitTest @site = fixture_site({ "collections" => { "methods" => { - "output" => true - } + "output" => true, + }, }, - "incremental" => true + "incremental" => true, }) @site.read @@ -92,7 +92,7 @@ class TestRegenerator < JekyllUnitTest setup do FileUtils.rm_rf(source_dir(".jekyll-metadata")) @site = fixture_site({ - "incremental" => true + "incremental" => true, }) @site.read @@ -129,7 +129,7 @@ class TestRegenerator < JekyllUnitTest @site = Site.new(Jekyll.configuration({ "source" => source_dir, "destination" => dest_dir, - "incremental" => true + "incremental" => true, })) @site.process @@ -311,7 +311,7 @@ class TestRegenerator < JekyllUnitTest @site = Site.new(Jekyll.configuration({ "source" => source_dir, "destination" => dest_dir, - "incremental" => false + "incremental" => false, })) @site.process diff --git a/test/test_related_posts.rb b/test/test_related_posts.rb index ef7265ef..2d616550 100644 --- a/test/test_related_posts.rb +++ b/test/test_related_posts.rb @@ -28,7 +28,7 @@ class TestRelatedPosts < JekyllUnitTest allow_any_instance_of(Jekyll::RelatedPosts).to receive(:display) @site = fixture_site({ - "lsi" => true + "lsi" => true, }) @site.reset diff --git a/test/test_sass.rb b/test/test_sass.rb index f5241790..3a9df0ae 100644 --- a/test/test_sass.rb +++ b/test/test_sass.rb @@ -5,7 +5,7 @@ class TestSass < JekyllUnitTest setup do @site = Jekyll::Site.new(Jekyll.configuration({ "source" => source_dir, - "destination" => dest_dir + "destination" => dest_dir, })) @site.process @test_css_file = dest_dir("css/main.css") diff --git a/test/test_site.rb b/test/test_site.rb index 81da363d..bbf42d25 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -20,7 +20,7 @@ class TestSite < JekyllUnitTest should "have an array for plugins if passed as an array" do site = Site.new(site_configuration({ - "plugins_dir" => ["/tmp/plugins", "/tmp/otherplugins"] + "plugins_dir" => ["/tmp/plugins", "/tmp/otherplugins"], })) array = if Utils::Platforms.windows? ["C:/tmp/plugins", "C:/tmp/otherplugins"] @@ -485,7 +485,7 @@ class TestSite < JekyllUnitTest context "manipulating the Jekyll environment" do setup do @site = Site.new(site_configuration({ - "incremental" => false + "incremental" => false, })) @site.process @page = @site.pages.find { |p| p.name == "environment.html" } @@ -499,7 +499,7 @@ class TestSite < JekyllUnitTest setup do ENV["JEKYLL_ENV"] = "production" @site = Site.new(site_configuration({ - "incremental" => false + "incremental" => false, })) @site.process @page = @site.pages.find { |p| p.name == "environment.html" } @@ -565,7 +565,7 @@ class TestSite < JekyllUnitTest context "incremental build" do setup do @site = Site.new(site_configuration({ - "incremental" => true + "incremental" => true, })) @site.read end diff --git a/test/test_static_file.rb b/test/test_static_file.rb index 2be800a6..dd3515f6 100644 --- a/test/test_static_file.rb +++ b/test/test_static_file.rb @@ -95,8 +95,8 @@ class TestStaticFile < JekyllUnitTest should "use the _config.yml defaults to determine writability" do defaults = [{ "scope" => { "path" => "private" }, - "values" => { "published" => false } - }] + "values" => { "published" => false }, + },] static_file = setup_static_file_with_defaults( "root", "private/dir/subdir", @@ -146,7 +146,7 @@ class TestStaticFile < JekyllUnitTest "name" => "static_file.txt", "extname" => ".txt", "modified_time" => @static_file.modified_time, - "path" => "/static_file.txt" + "path" => "/static_file.txt", } assert_equal expected, @static_file.to_liquid end diff --git a/test/test_tags.rb b/test/test_tags.rb index fd6dcb97..a636abf6 100644 --- a/test/test_tags.rb +++ b/test/test_tags.rb @@ -17,7 +17,7 @@ class TestTags < JekyllUnitTest info = { :filters => [Jekyll::Filters], :registers => { :site => site } } @converter = site.converters.find { |c| c.class == converter_class } payload = { "highlighter_prefix" => @converter.highlighter_prefix, - "highlighter_suffix" => @converter.highlighter_suffix } + "highlighter_suffix" => @converter.highlighter_suffix, } @result = Liquid::Template.parse(content).render!(payload, info) @result = @converter.convert(@result) @@ -487,7 +487,7 @@ CONTENT end create_post(@content, { - "markdown" => "rdiscount" + "markdown" => "rdiscount", }) end @@ -517,7 +517,7 @@ CONTENT end create_post(@content, { - "markdown" => "redcarpet" + "markdown" => "redcarpet", }) end @@ -541,7 +541,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end @@ -567,7 +567,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end @@ -596,7 +596,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end @@ -628,7 +628,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end @@ -664,7 +664,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end end @@ -683,7 +683,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end end @@ -703,7 +703,7 @@ CONTENT create_post(content, { "source" => source_dir, "destination" => dest_dir, - "read_all" => true + "read_all" => true, }) end @@ -737,7 +737,7 @@ CONTENT "source" => source_dir, "destination" => dest_dir, "collections" => { "methods" => { "output" => true } }, - "read_collections" => true + "read_collections" => true, }) end @@ -764,7 +764,7 @@ CONTENT "source" => source_dir, "destination" => dest_dir, "collections" => { "methods" => { "output" => true } }, - "read_collections" => true + "read_collections" => true, }) end @@ -796,7 +796,7 @@ CONTENT "source" => source_dir, "destination" => dest_dir, "collections" => { "methods" => { "output" => true } }, - "read_collections" => true + "read_collections" => true, }) end end @@ -820,7 +820,7 @@ CONTENT "source" => source_dir, "destination" => dest_dir, "read_posts" => true, - "safe" => true + "safe" => true, }) end @result ||= "" @@ -842,7 +842,7 @@ CONTENT "source" => source_dir, "destination" => dest_dir, "read_posts" => true, - "safe" => true + "safe" => true, }) end assert_match( @@ -868,7 +868,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end @@ -896,7 +896,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end @@ -913,7 +913,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end end @@ -932,7 +932,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end @@ -959,7 +959,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end @@ -982,7 +982,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end @@ -1004,7 +1004,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end @@ -1030,7 +1030,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end assert_match( @@ -1125,7 +1125,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end assert_match "Could not locate the included file 'missing.html' in any of " \ @@ -1150,7 +1150,7 @@ CONTENT "permalink" => "pretty", "source" => source_dir, "destination" => dest_dir, - "read_posts" => true + "read_posts" => true, }) end assert_equal( @@ -1180,7 +1180,7 @@ CONTENT "source" => source_dir, "destination" => dest_dir, "read_posts" => true, - "safe" => true + "safe" => true, }) end @result ||= "" @@ -1202,7 +1202,7 @@ CONTENT "source" => source_dir, "destination" => dest_dir, "read_posts" => true, - "safe" => true + "safe" => true, }) end assert_match( From 27ed81547b12d28a60c51961b82a5723981feb7d Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Thu, 12 Jan 2017 16:41:16 -0800 Subject: [PATCH 121/207] Update history to reflect merge of #5761 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index bb10365f..60c9cf21 100644 --- a/History.markdown +++ b/History.markdown @@ -46,6 +46,7 @@ * Rubocop: fix Rakefile and gemspec (#5745) * Use `assert_nil` (#5725) * Sort gems in `jekyll.gemspec` (#5746) + * Rubocop: Require consistent comma in multiline literals (#5761) ### Documentation From a66fd1fa042752d421e248244ebeed27f7ea0459 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 13 Jan 2017 04:59:14 -0500 Subject: [PATCH 122/207] Update history to reflect merge of #5758 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 60c9cf21..5980801b 100644 --- a/History.markdown +++ b/History.markdown @@ -67,6 +67,7 @@ * Fix a minor grammatical mistake on themes' document ### -dev (#5748) * Correct comments in data_reader.rb (#5621) * Add jekyll-pre-commit to plugins list (#5752) + * Update quickstart.md (#5758) ## 3.3.1 / 2016-11-14 From b9ae94387f4b51ddb41dd543515fbfebef59f71f Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sat, 14 Jan 2017 00:01:33 -0500 Subject: [PATCH 123/207] Update history to reflect merge of #5750 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 5980801b..2c6b5c7a 100644 --- a/History.markdown +++ b/History.markdown @@ -14,6 +14,7 @@ * fix date parsing in file names to be stricter (#5609) * Add a module to re-define `ENV["TZ"]` in Windows (#5612) * Use each instead of map to actually return nothing (#5668) + * include: fix 'no implicit conversion of nil to String' (#5750) ### Site Enhancements From 59cbdf5935541e0088f086ef07770f2d3f595d3c Mon Sep 17 00:00:00 2001 From: Purplecarrot Date: Sat, 14 Jan 2017 10:36:55 +0000 Subject: [PATCH 124/207] Correct minor typo --- docs/_docs/github-pages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/github-pages.md b/docs/_docs/github-pages.md index cc738704..886dea88 100644 --- a/docs/_docs/github-pages.md +++ b/docs/_docs/github-pages.md @@ -138,7 +138,7 @@ looking at right now is contained in the [docs folder]({{ site.repository }}/tree/master/docs) of the same repository. Please refer to GitHub official documentation on -[user, organization and projets pages](https://help.github.com/articles/user-organization-and-project-pages/) +[user, organization and project pages](https://help.github.com/articles/user-organization-and-project-pages/) to see more detailed examples.
From 7d5f961dbacac7af9d58cb4d900eadb84d26494d Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sat, 14 Jan 2017 07:41:25 -0500 Subject: [PATCH 125/207] Update history to reflect merge of #5764 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 2c6b5c7a..216c887b 100644 --- a/History.markdown +++ b/History.markdown @@ -69,6 +69,7 @@ * Correct comments in data_reader.rb (#5621) * Add jekyll-pre-commit to plugins list (#5752) * Update quickstart.md (#5758) + * Correct minor typo (#5764) ## 3.3.1 / 2016-11-14 From 44324828b4b4b807f8a99fab365d6b29234f045f Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Sat, 14 Jan 2017 20:00:36 +0100 Subject: [PATCH 126/207] bump Rubocop to latest version --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index eda95e5e..ea65fdcc 100644 --- a/Gemfile +++ b/Gemfile @@ -25,7 +25,7 @@ group :test do gem "nokogiri" gem "rspec" gem "rspec-mocks" - gem "rubocop", "~> 0.44.1" + gem "rubocop", "~> 0.46" gem "test-theme", :path => File.expand_path("./test/fixtures/test-theme", File.dirname(__FILE__)) gem "jruby-openssl" if RUBY_ENGINE == "jruby" From 5d52074d2d05c2178bb6791b60c5eafb6a7ea320 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Sat, 14 Jan 2017 20:01:41 +0100 Subject: [PATCH 127/207] appease Rubocop --- test/source/_plugins/dummy.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/source/_plugins/dummy.rb b/test/source/_plugins/dummy.rb index bfd46e1c..fd11d0e1 100644 --- a/test/source/_plugins/dummy.rb +++ b/test/source/_plugins/dummy.rb @@ -2,7 +2,6 @@ module Jekyll class Dummy < Generator priority :high - def generate(site) - end + def generate(site) end end end From 39b7af373264efeff89af59c23708366bce1b672 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Sat, 14 Jan 2017 20:05:11 +0100 Subject: [PATCH 128/207] exclude rake tasks and gemspec from metrics exclude from BlockLength and LineLength metrics --- .rubocop.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index 67f212ae..87d24743 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -22,6 +22,8 @@ Metrics/BlockLength: Exclude: - test/**/*.rb - lib/jekyll/configuration.rb + - rake/*.rake + - jekyll.gemspec Metrics/ClassLength: Exclude: - !ruby/regexp /features\/.*.rb$/ @@ -32,6 +34,8 @@ Metrics/CyclomaticComplexity: Metrics/LineLength: Exclude: - !ruby/regexp /features\/.*.rb/ + - Rakefile + - rake/*.rake Max: 90 Severity: warning Metrics/MethodLength: From 6f8bf2e9501b2e2752effd07bd9cd781194a38a8 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Sat, 14 Jan 2017 20:11:30 +0100 Subject: [PATCH 129/207] appease rubocop --- rake/docs.rake | 2 +- rake/release.rake | 2 +- rake/site.rake | 26 +++++++++++++------------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/rake/docs.rake b/rake/docs.rake index aec162b5..fcae4f20 100644 --- a/rake/docs.rake +++ b/rake/docs.rake @@ -7,7 +7,7 @@ namespace :docs do desc "Release #{docs_name} v#{version}" task :release => :build do - unless `git branch` =~ /^\* master$/ + unless `git branch` =~ %r!^\* master$! puts "You must be on the master branch to release!" exit! end diff --git a/rake/release.rake b/rake/release.rake index a78690d8..832b5bb3 100644 --- a/rake/release.rake +++ b/rake/release.rake @@ -6,7 +6,7 @@ desc "Release #{name} v#{version}" task :release => :build do - unless `git branch` =~ /^\* master$/ + unless `git branch` =~ %r!^\* master$! puts "You must be on the master branch to release!" exit! end diff --git a/rake/site.rake b/rake/site.rake index 2fb4172a..63b04fc8 100644 --- a/rake/site.rake +++ b/rake/site.rake @@ -13,7 +13,7 @@ namespace :site do require "jekyll" browser_launched = false - Jekyll::Hooks.register :site, :post_write do |site| + Jekyll::Hooks.register :site, :post_write do |_site| next if browser_launched browser_launched = true Jekyll.logger.info "Opening in browser..." @@ -26,7 +26,7 @@ namespace :site do "source" => File.expand_path(docs_folder), "destination" => File.expand_path("#{docs_folder}/_site"), "watch" => true, - "serving" => true + "serving" => true, } Jekyll::Commands::Build.process(options) Jekyll::Commands::Serve.process(options) @@ -38,7 +38,7 @@ namespace :site do Jekyll::Commands::Build.process({ "profile" => true, "source" => File.expand_path(docs_folder), - "destination" => File.expand_path("#{docs_folder}/_site") + "destination" => File.expand_path("#{docs_folder}/_site"), }) end task :build => :generate @@ -48,7 +48,7 @@ namespace :site do Dir.chdir("#{docs_folder}/_sass") do sh 'curl "https://necolas.github.io/normalize.css/latest/normalize.css" -o "normalize.scss"' sh 'sass "normalize.scss":"_normalize.scss" --style compressed' - rm ['normalize.scss', Dir.glob('*.map')].flatten + rm ["normalize.scss", Dir.glob("*.map")].flatten end end @@ -60,40 +60,40 @@ namespace :site do desc "Create a nicely formatted history page for the jekyll site based on the repo history." task :history do - siteify_file('History.markdown', { "title" => "History" }) + siteify_file("History.markdown", { "title" => "History" }) end desc "Copy the Code of Conduct" task :conduct do front_matter = { "redirect_from" => "/conduct/index.html", - "editable" => false + "editable" => false, } - siteify_file('CONDUCT.markdown', front_matter) + siteify_file("CONDUCT.markdown", front_matter) end desc "Copy the contributing file" task :contributing do - siteify_file('.github/CONTRIBUTING.markdown', "title" => "Contributing") + siteify_file(".github/CONTRIBUTING.markdown", "title" => "Contributing") end desc "Write the site latest_version.txt file" task :version_file do - File.open("#{docs_folder}/latest_version.txt", 'wb') { |f| f.puts(version) } unless version =~ /(beta|rc|alpha)/i + File.open("#{docs_folder}/latest_version.txt", "wb") { |f| f.puts(version) } unless version =~ %r!(beta|rc|alpha)!i end namespace :releases do desc "Create new release post" - task :new, :version do |t, args| + task :new, :version do |_t, args| raise "Specify a version: rake site:releases:new['1.2.3']" unless args.version - today = Time.new.strftime('%Y-%m-%d') + today = Time.new.strftime("%Y-%m-%d") release = args.version.to_s - filename = "#{docs_folder}/_posts/#{today}-jekyll-#{release.split('.').join('-')}-released.markdown" + filename = "#{docs_folder}/_posts/#{today}-jekyll-#{release.split(".").join("-")}-released.markdown" File.open(filename, "wb") do |post| post.puts("---") post.puts("title: 'Jekyll #{release} Released'") - post.puts("date: #{Time.new.strftime('%Y-%m-%d %H:%M:%S %z')}") + post.puts("date: #{Time.new.strftime("%Y-%m-%d %H:%M:%S %z")}") post.puts("author: ") post.puts("version: #{release}") post.puts("categories: [release]") From becdcb5164cbba419abbd0d2f3650ef798d2c393 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 15 Jan 2017 03:47:06 -0500 Subject: [PATCH 130/207] Update history to reflect merge of #5765 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 216c887b..eafd41c4 100644 --- a/History.markdown +++ b/History.markdown @@ -48,6 +48,7 @@ * Use `assert_nil` (#5725) * Sort gems in `jekyll.gemspec` (#5746) * Rubocop: Require consistent comma in multiline literals (#5761) + * Bump rubocop (#5765) ### Documentation From ecd04badf05094cf65062635248cacebce139a38 Mon Sep 17 00:00:00 2001 From: Florian Thomas Date: Sun, 15 Jan 2017 20:35:10 +0100 Subject: [PATCH 131/207] throw IncludeTagError if error occurs in included file fixes #5756 --- features/rendering.feature | 9 +++++++++ lib/jekyll/tags/include.rb | 8 ++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/features/rendering.feature b/features/rendering.feature index 5031ef06..fbe9ce57 100644 --- a/features/rendering.feature +++ b/features/rendering.feature @@ -12,6 +12,15 @@ Feature: Rendering Then I should get a non-zero exit-status And I should see "Liquid Exception" in the build output + Scenario: When receiving bad Liquid in included file + Given I have a _includes directory + And I have a "_includes/invalid.html" file that contains "{% INVALID %}" + And I have a "index.html" page with layout "simple" that contains "{% include invalid.html %}" + And I have a simple layout that contains "{{ content }}" + When I run jekyll build + Then I should get a non-zero exit-status + And I should see "Liquid Exception.*Unknown tag 'INVALID' in.*_includes/invalid\.html" in the build output + Scenario: Render Liquid and place in layout Given I have a "index.html" page with layout "simple" that contains "Hi there, Jekyll {{ jekyll.environment }}!" And I have a simple layout that contains "{{ content }}Ahoy, indeed!" diff --git a/lib/jekyll/tags/include.rb b/lib/jekyll/tags/include.rb index ca74087d..08843047 100644 --- a/lib/jekyll/tags/include.rb +++ b/lib/jekyll/tags/include.rb @@ -155,10 +155,14 @@ eos if cached_partial.key?(path) cached_partial[path] else - cached_partial[path] = context.registers[:site] + unparsed_file = context.registers[:site] .liquid_renderer .file(path) - .parse(read_file(path, context)) + begin + cached_partial[path] = unparsed_file.parse(read_file(path, context)) + rescue Liquid::SyntaxError => ex + raise IncludeTagError.new(ex.message, path) + end end end From a30d81ceb899ea33308503743603dace74d2ac98 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Mon, 16 Jan 2017 10:26:08 +0100 Subject: [PATCH 132/207] bump Rubocop to v47 --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index ea65fdcc..f04f7969 100644 --- a/Gemfile +++ b/Gemfile @@ -25,7 +25,7 @@ group :test do gem "nokogiri" gem "rspec" gem "rspec-mocks" - gem "rubocop", "~> 0.46" + gem "rubocop", "~> 0.47" gem "test-theme", :path => File.expand_path("./test/fixtures/test-theme", File.dirname(__FILE__)) gem "jruby-openssl" if RUBY_ENGINE == "jruby" From d790477d6dda77c0bea900f2739a076a2b894912 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Mon, 16 Jan 2017 10:43:07 +0100 Subject: [PATCH 133/207] Add security rules --- .rubocop.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index 87d24743..4193f4b4 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -48,6 +48,14 @@ Metrics/ParameterLists: Max: 4 Metrics/PerceivedComplexity: Max: 8 +Security/MarshalLoad: + Exclude: + - !ruby/regexp /test\/.*.rb$/ + - lib/jekyll/regenerator.rb +Security/YAMLLoad: + Exclude: + - !ruby/regexp /features\/.*.rb/ + - !ruby/regexp /test\/.*.rb$/ Style/Alias: Enabled: false Style/AlignArray: From 55993c6c5d5cf2b2ad3d5e5b12b365d4ca9d715c Mon Sep 17 00:00:00 2001 From: Dmitrii Evdokimov Date: Mon, 16 Jan 2017 17:53:04 +0300 Subject: [PATCH 134/207] Fix a markdown link to look properly on the web --- docs/_docs/windows.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/_docs/windows.md b/docs/_docs/windows.md index 62fb69b4..ce7e78c1 100644 --- a/docs/_docs/windows.md +++ b/docs/_docs/windows.md @@ -15,7 +15,8 @@ A quick way to install Jekyll is to follow the [installation instructions by Dav 2. Install Ruby via Chocolatey: `choco install ruby -y` 3. Reopen a command prompt and install Jekyll: `gem install jekyll` -Updates in the infrastructure of Ruby may cause SSL errors when attempting to use `gem install` with versions of the RubyGems package older than 2.6. (The RubyGems package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update the RubyGems package using the directions [here.][ssl-certificate-update] +Updates in the infrastructure of Ruby may cause SSL errors when attempting to use `gem install` with versions of the RubyGems package older than 2.6. (The RubyGems package installed via the Chocolatey tool is version 2.3) If you have installed an older version, you can update the RubyGems package using the directions [here][ssl-certificate-update]. + [ssl-certificate-update]: http://guides.rubygems.org/ssl-certificate-update/#installing-using-update-packages For a more conventional way of installing Jekyll you can follow this [complete guide to install Jekyll 3 on Windows by Sverrir Sigmundarson][windows-installjekyll3]. From 036dd3ccc96365ea97797dc61387aac167c54742 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 16 Jan 2017 11:05:25 -0500 Subject: [PATCH 135/207] Update history to reflect merge of #5769 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index eafd41c4..0d537420 100644 --- a/History.markdown +++ b/History.markdown @@ -71,6 +71,7 @@ * Add jekyll-pre-commit to plugins list (#5752) * Update quickstart.md (#5758) * Correct minor typo (#5764) + * Fix a markdown link to look properly on the web (#5769) ## 3.3.1 / 2016-11-14 From 9d70bbba44cc2c62ac96a579050f163b52dc1672 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 16 Jan 2017 16:00:07 -0500 Subject: [PATCH 136/207] Update history to reflect merge of #5768 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 0d537420..c6694c36 100644 --- a/History.markdown +++ b/History.markdown @@ -49,6 +49,7 @@ * Sort gems in `jekyll.gemspec` (#5746) * Rubocop: Require consistent comma in multiline literals (#5761) * Bump rubocop (#5765) + * New rubocop security checks (#5768) ### Documentation From 567a7952dd0a506b04e2e50a1ac29715bc48aa6d Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 16 Jan 2017 16:25:09 -0500 Subject: [PATCH 137/207] test/helper: fix flaky plugin path test by initializing Configuration::DEFAULTS at start of tests If we do a Dir.chdir before Configuration::DEFAULTS is initialized, then its source and destination values will not be what we expect. We expect that Dir.pwd should stay as the root of the repo but there are some errant calls to Dir.chdir without a block that are still not yet cleaned up. --- test/helper.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/helper.rb b/test/helper.rb index 0c6935a0..fcbb7166 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -30,6 +30,11 @@ require "minitest/profile" require "rspec/mocks" require_relative "../lib/jekyll.rb" +# The default "source" and "destination" values depend on Dir.pwd, +# which changes when we use Dir.chdir without a block. Initialize +# it here so it has Dir.pwd = root of this repo. +Jekyll::Configuration::DEFAULTS + Jekyll.logger = Logger.new(StringIO.new) unless jruby? From aa7e47a30d4db30e644c54fc939ecd526db3c161 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 16 Jan 2017 16:43:25 -0500 Subject: [PATCH 138/207] Remove calls to Dir.chdir without a block. This removes the necessity to initialize Jekyll::Configuration::DEFAULTS manually. --- test/helper.rb | 11 +++++------ test/test_static_file.rb | 15 ++++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/test/helper.rb b/test/helper.rb index fcbb7166..28c37ecf 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -30,11 +30,6 @@ require "minitest/profile" require "rspec/mocks" require_relative "../lib/jekyll.rb" -# The default "source" and "destination" values depend on Dir.pwd, -# which changes when we use Dir.chdir without a block. Initialize -# it here so it has Dir.pwd = root of this repo. -Jekyll::Configuration::DEFAULTS - Jekyll.logger = Logger.new(StringIO.new) unless jruby? @@ -67,6 +62,10 @@ module Minitest::Assertions end module DirectoryHelpers + def root_dir(*subdirs) + File.join(File.dirname(File.dirname(__FILE__)), *subdirs) + end + def dest_dir(*subdirs) test_dir("dest", *subdirs) end @@ -76,7 +75,7 @@ module DirectoryHelpers end def test_dir(*subdirs) - File.join(File.dirname(__FILE__), *subdirs) + root_dir("test", *subdirs) end end diff --git a/test/test_static_file.rb b/test/test_static_file.rb index 2be800a6..c45dcd78 100644 --- a/test/test_static_file.rb +++ b/test/test_static_file.rb @@ -16,33 +16,34 @@ class TestStaticFile < JekyllUnitTest end def setup_static_file(base, dir, name) - StaticFile.new(@site, base, dir, name) + Dir.chdir(@site.source) { StaticFile.new(@site, base, dir, name) } end def setup_static_file_with_collection(base, dir, name, metadata) site = fixture_site("collections" => { "foo" => metadata }) - StaticFile.new(site, base, dir, name, site.collections["foo"]) + Dir.chdir(site.source) do + StaticFile.new(site, base, dir, name, site.collections["foo"]) + end end def setup_static_file_with_defaults(base, dir, name, defaults) site = fixture_site("defaults" => defaults) - StaticFile.new(site, base, dir, name) + Dir.chdir(site.source) do + StaticFile.new(site, base, dir, name) + end end context "A StaticFile" do setup do clear_dest - @old_pwd = Dir.pwd - Dir.chdir source_dir @site = fixture_site @filename = "static_file.txt" make_dummy_file(@filename) - @static_file = setup_static_file(nil, nil, @filename) + @static_file = setup_static_file(@site.source, "", @filename) end teardown do remove_dummy_file(@filename) if File.exist?(source_dir(@filename)) - Dir.chdir @old_pwd end should "have a source file path" do From 448b6ba08ee419f4dd55b9a0ee0d036089077b48 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 16 Jan 2017 17:03:42 -0500 Subject: [PATCH 139/207] Update history to reflect merge of #5779 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index c6694c36..dfea615e 100644 --- a/History.markdown +++ b/History.markdown @@ -50,6 +50,7 @@ * Rubocop: Require consistent comma in multiline literals (#5761) * Bump rubocop (#5765) * New rubocop security checks (#5768) + * test/helper: fix flaky plugin path test by removing calls to Dir.chdir without a block (#5779) ### Documentation From e509cf2139d1a7ee11090b09721344608ecf48f6 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 16 Jan 2017 18:38:35 -0500 Subject: [PATCH 140/207] Update history to reflect merge of #5767 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index dfea615e..49783093 100644 --- a/History.markdown +++ b/History.markdown @@ -7,6 +7,7 @@ * Use the current year for the LICENSE of theme (#5712) * Update License (#5713) * Use Addressable instead of URI to decode (#5726) + * throw IncludeTagError if error occurs in included file (#5767) ### Bug Fixes From 9a5307c3f9c568dec3703a3f30e6c68f0a751597 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 16 Jan 2017 19:17:45 -0500 Subject: [PATCH 141/207] Don't include the theme's includes_path if it is nil. --- lib/jekyll/site.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 5797df77..3bbeaef3 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -435,7 +435,7 @@ module Jekyll private def configure_include_paths @includes_load_paths = Array(in_source_dir(config["includes_dir"].to_s)) - @includes_load_paths << theme.includes_path if self.theme + @includes_load_paths << theme.includes_path if self.theme && theme.includes_path end private From cd8836cf6efe15d4da4c668e8df1a9bfdac71861 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Tue, 17 Jan 2017 02:34:15 +0100 Subject: [PATCH 142/207] bump htmlproofer --- Gemfile | 2 +- script/proof | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index f04f7969..4ead30a9 100644 --- a/Gemfile +++ b/Gemfile @@ -88,7 +88,7 @@ end group :site do if ENV["PROOF"] - gem "html-proofer", "~> 2.0" + gem "html-proofer", "~> 3.4" end gem "jekyll-avatar" diff --git a/script/proof b/script/proof index 1dd63a28..664e778d 100755 --- a/script/proof +++ b/script/proof @@ -32,4 +32,4 @@ bundle exec jekyll build -s $SOURCE -d $DESTINATION --trace # 3. msg "Proofing..." -time bundle exec htmlproof ./$DESTINATION --url-ignore $INGORE_HREFS $@ +time bundle exec htmlproofer ./$DESTINATION --url-ignore $INGORE_HREFS $@ From c39414a17b43399243190a31df7dfe24eeb3d945 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Tue, 17 Jan 2017 02:59:57 +0100 Subject: [PATCH 143/207] use latest jemoji gem --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index f04f7969..97364a11 100644 --- a/Gemfile +++ b/Gemfile @@ -95,5 +95,5 @@ group :site do gem "jekyll-mentions" gem "jekyll-seo-tag" gem "jekyll-sitemap" - gem "jemoji", "0.5.1" + gem "jemoji" end From 67ab1596064eef6a2eb9c1dcc4367915c3efe1b7 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 16 Jan 2017 21:38:56 -0500 Subject: [PATCH 144/207] Update history to reflect merge of #5691 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 49783093..f8433c83 100644 --- a/History.markdown +++ b/History.markdown @@ -35,6 +35,7 @@ * Docs: move permalinks from documents into config (#5544) * Sort gems in `docs/_config.yml` (#5746) * [site] Use defaults for docs and news-items (#5744) + * Improve collections docs (#5691) ### Development Fixes From 5460e711765c99a638a125b1cbaca698ea813297 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 16 Jan 2017 21:48:20 -0500 Subject: [PATCH 145/207] Update history to reflect merge of #5731 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index f8433c83..d03a2f6e 100644 --- a/History.markdown +++ b/History.markdown @@ -36,6 +36,7 @@ * Sort gems in `docs/_config.yml` (#5746) * [site] Use defaults for docs and news-items (#5744) * Improve collections docs (#5691) + * Fix #5730: add gcc and make to the list of requirements (#5731) ### Development Fixes From 4ea770e99565f611359f4699e50fd7b9dcb2face Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 17 Jan 2017 03:22:44 -0500 Subject: [PATCH 146/207] Update history to reflect merge of #5782 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index d03a2f6e..f6f73787 100644 --- a/History.markdown +++ b/History.markdown @@ -54,6 +54,7 @@ * Bump rubocop (#5765) * New rubocop security checks (#5768) * test/helper: fix flaky plugin path test by removing calls to Dir.chdir without a block (#5779) + * Use latest jemoji gem (#5782) ### Documentation From 9c729033959bf7ef74372a22eb19e67900881aa9 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 17 Jan 2017 03:24:08 -0500 Subject: [PATCH 147/207] Update history to reflect merge of #5781 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index f6f73787..25aa3c5a 100644 --- a/History.markdown +++ b/History.markdown @@ -55,6 +55,7 @@ * New rubocop security checks (#5768) * test/helper: fix flaky plugin path test by removing calls to Dir.chdir without a block (#5779) * Use latest jemoji gem (#5782) + * Bump htmlproofer (#5781) ### Documentation From b9dedb34774382099b89eff7aa8bb85ed5e39ed5 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 17 Jan 2017 03:34:05 -0500 Subject: [PATCH 148/207] Update history to reflect merge of #5312 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 25aa3c5a..faee4627 100644 --- a/History.markdown +++ b/History.markdown @@ -79,6 +79,7 @@ * Update quickstart.md (#5758) * Correct minor typo (#5764) * Fix a markdown link to look properly on the web (#5769) + * [docs] Info about the help command usage (#5312) ## 3.3.1 / 2016-11-14 From bfb6cf1ca95b57afcacc2e77126774179b14ba92 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Tue, 17 Jan 2017 14:35:33 +0530 Subject: [PATCH 149/207] bump rubies --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6ff7022c..30eb1fc5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,10 +5,10 @@ language: ruby sudo: false rvm: - - &ruby1 2.3.1 - - &ruby2 2.2.5 + - &ruby1 2.3.3 + - &ruby2 2.2.6 - &ruby3 2.1.9 - - &jruby jruby-9.1.2.0 + - &jruby jruby-9.1.7.0 matrix: include: From 39c4054cd1aa5346ff0e6f547bcdb15485998e3a Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 17 Jan 2017 04:34:19 -0500 Subject: [PATCH 150/207] Update history to reflect merge of #5784 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index faee4627..f2c2abda 100644 --- a/History.markdown +++ b/History.markdown @@ -56,6 +56,7 @@ * test/helper: fix flaky plugin path test by removing calls to Dir.chdir without a block (#5779) * Use latest jemoji gem (#5782) * Bump htmlproofer (#5781) + * Bump rubies we test against (#5784) ### Documentation From e1f4d92d023cdbb960eff4a9943bd7930ee50690 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Tue, 17 Jan 2017 18:22:28 +0100 Subject: [PATCH 151/207] add missing class --- docs/_docs/quickstart.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index b21d084d..3d126787 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -37,15 +37,14 @@ If you encounter any unexpected errors during the above, please refer to the alr `jekyll new ` installs a new Jekyll site at the path specified (relative to current directory). In this case, Jekyll will be installed in a directory called `myblog`. Here are some additional details: -* To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. +* To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. * `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) * By default, the Jekyll site installed by `jekyll new` uses a gem-based theme called [Minima](https://github.com/jekyll/minima). With [gem-based themes](../themes), some of the directories and files are stored in the theme-gem, hidden from your immediate view. * To learn about other parameters you can include with `jekyll new`, type `jekyll new --help`. When in doubt, use the help command to remind you of all available options and usage, it also works with the new, build and serve subcommands, e.g. jekyll help new or jekyll help build. -{: .info } +{: .note .info } ## Next steps Building a Jekyll site with the default theme is just the first step. The real magic happens when you start creating blog posts, using the front matter to control templates and layouts, and taking advantage of all the awesome configuration options Jekyll makes available. - From 2052280ccd026b0c8711e026ed513a4783566308 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 17 Jan 2017 14:56:00 -0500 Subject: [PATCH 152/207] Update history to reflect merge of #5791 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index f2c2abda..5971b779 100644 --- a/History.markdown +++ b/History.markdown @@ -37,6 +37,7 @@ * [site] Use defaults for docs and news-items (#5744) * Improve collections docs (#5691) * Fix #5730: add gcc and make to the list of requirements (#5731) + * Add missing class (#5791) ### Development Fixes From ad8fb9b927908f52565efbf59e3a4198bfd8c82c Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 17 Jan 2017 16:19:26 -0500 Subject: [PATCH 153/207] Add theme_dir() helper func --- test/helper.rb | 4 ++++ test/test_theme.rb | 9 ++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/test/helper.rb b/test/helper.rb index bb9e5a29..ca60f79f 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -74,6 +74,10 @@ module DirectoryHelpers test_dir("source", *subdirs) end + def theme_dir(*subdirs) + test_dir("fixtures", "test-theme", *subdirs) + end + def test_dir(*subdirs) root_dir("test", *subdirs) end diff --git a/test/test_theme.rb b/test/test_theme.rb index ab1eff43..3d557dc8 100644 --- a/test/test_theme.rb +++ b/test/test_theme.rb @@ -3,7 +3,6 @@ require "helper" class TestTheme < JekyllUnitTest def setup @theme = Theme.new("test-theme") - @expected_root = File.expand_path "./fixtures/test-theme", File.dirname(__FILE__) end context "initializing" do @@ -13,7 +12,7 @@ class TestTheme < JekyllUnitTest end should "know the theme root" do - assert_equal @expected_root, @theme.root + assert_equal theme_dir, @theme.root end should "know the theme version" do @@ -36,13 +35,13 @@ class TestTheme < JekyllUnitTest context "path generation" do [:assets, :_layouts, :_includes, :_sass].each do |folder| should "know the #{folder} path" do - expected = File.expand_path(folder.to_s, @expected_root) + expected = theme_dir(folder.to_s) assert_equal expected, @theme.public_send("#{folder.to_s.tr("_", "")}_path") end end should "generate folder paths" do - expected = File.expand_path("./_sass", @expected_root) + expected = theme_dir("_sass") assert_equal expected, @theme.send(:path_for, :_sass) end @@ -58,7 +57,7 @@ class TestTheme < JekyllUnitTest # no support for symlinks on Windows skip_if_windows "Jekyll does not currently support symlinks on Windows." - expected = File.expand_path("./_layouts", @expected_root) + expected = theme_dir("_layouts") assert_equal expected, @theme.send(:path_for, :_symlink) end end From e0d63c8aa90acd4608cfc34b2dbf2e34c6c7483f Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 17 Jan 2017 16:19:47 -0500 Subject: [PATCH 154/207] Add test to ensure that if the includes dir isn't in the theme that it won't break the site --- test/test_site.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/test_site.rb b/test/test_site.rb index bbf42d25..cee08dfd 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -49,6 +49,17 @@ class TestSite < JekyllUnitTest site = Site.new(site_configuration({ "baseurl" => "/blog" })) assert_equal "/blog", site.baseurl end + + should "only include theme includes_path if the path exists" do + site = fixture_site({ "theme" => "test-theme" }) + assert_equal [source_dir("_includes"), theme_dir("_includes")], site.includes_load_paths + + allow(File).to receive(:directory?).with(theme_dir("_sass")).and_return(true) + allow(File).to receive(:directory?).with(theme_dir("_layouts")).and_return(true) + allow(File).to receive(:directory?).with(theme_dir("_includes")).and_return(false) + site = fixture_site({ "theme" => "test-theme" }) + assert_equal [source_dir("_includes")], site.includes_load_paths + end end context "creating sites" do setup do From 023476049befdd61dd9ffabbc3e871034bc3cd9c Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 17 Jan 2017 16:21:28 -0500 Subject: [PATCH 155/207] Remove superfluous self. --- lib/jekyll/site.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 3bbeaef3..87ea719b 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -435,7 +435,7 @@ module Jekyll private def configure_include_paths @includes_load_paths = Array(in_source_dir(config["includes_dir"].to_s)) - @includes_load_paths << theme.includes_path if self.theme && theme.includes_path + @includes_load_paths << theme.includes_path if theme && theme.includes_path end private From 130159dda4c1c567edc7ce2104a82f0e090b7048 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 17 Jan 2017 17:05:14 -0500 Subject: [PATCH 156/207] Fix rubocop error. --- test/test_site.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/test_site.rb b/test/test_site.rb index cee08dfd..65032ebd 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -52,7 +52,8 @@ class TestSite < JekyllUnitTest should "only include theme includes_path if the path exists" do site = fixture_site({ "theme" => "test-theme" }) - assert_equal [source_dir("_includes"), theme_dir("_includes")], site.includes_load_paths + assert_equal [source_dir("_includes"), theme_dir("_includes")], + site.includes_load_paths allow(File).to receive(:directory?).with(theme_dir("_sass")).and_return(true) allow(File).to receive(:directory?).with(theme_dir("_layouts")).and_return(true) From a9c7e14d6079e8cfee9adfd7e54e11954e9c0ba1 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 17 Jan 2017 18:59:39 -0500 Subject: [PATCH 157/207] Update history to reflect merge of #5780 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 5971b779..dcf5a619 100644 --- a/History.markdown +++ b/History.markdown @@ -16,6 +16,7 @@ * Add a module to re-define `ENV["TZ"]` in Windows (#5612) * Use each instead of map to actually return nothing (#5668) * include: fix 'no implicit conversion of nil to String' (#5750) + * Don't include the theme's includes_path if it is nil. (#5780) ### Site Enhancements From 0b4a097a40bafd278116a7833f87ae1b6cbdc81a Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 17 Jan 2017 20:20:36 -0500 Subject: [PATCH 158/207] Update history to reflect merge of #5753 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index dcf5a619..55a65c5e 100644 --- a/History.markdown +++ b/History.markdown @@ -83,6 +83,7 @@ * Correct minor typo (#5764) * Fix a markdown link to look properly on the web (#5769) * [docs] Info about the help command usage (#5312) + * Add missing merge labels for jekyllbot (#5753) ## 3.3.1 / 2016-11-14 From 402eb0dfa548ffbbd11a9b9a1fffa90a0ee40b04 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 17 Jan 2017 20:21:49 -0500 Subject: [PATCH 159/207] Update history to reflect merge of #5542 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 55a65c5e..26abb879 100644 --- a/History.markdown +++ b/History.markdown @@ -17,6 +17,7 @@ * Use each instead of map to actually return nothing (#5668) * include: fix 'no implicit conversion of nil to String' (#5750) * Don't include the theme's includes_path if it is nil. (#5780) + * test double slash when input = '/' (#5542) ### Site Enhancements From 0599c2242570d82230f60b70ffa49d8f363f0e1c Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 18 Jan 2017 14:15:13 -0500 Subject: [PATCH 160/207] Update history to reflect merge of #5640 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 26abb879..36e70cb6 100644 --- a/History.markdown +++ b/History.markdown @@ -8,6 +8,7 @@ * Update License (#5713) * Use Addressable instead of URI to decode (#5726) * throw IncludeTagError if error occurs in included file (#5767) + * Write Jekyll::Utils::Exec.run for running shell commands. (#5640) ### Bug Fixes From b6bc85ec7cf70dfdde262eb15b0723b191ad21d0 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 18 Jan 2017 14:16:08 -0500 Subject: [PATCH 161/207] Correct 2 Style/TrailingCommaInLiteral rubocop offenses in test_filters.rb --- test/test_filters.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_filters.rb b/test/test_filters.rb index 8b31a171..d18b57e3 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -377,7 +377,7 @@ class TestFilters < JekyllUnitTest page_url = "/" filter = make_filter_mock({ "url" => "http://example.com", - "baseurl" => "/base" + "baseurl" => "/base", }) assert_equal "http://example.com/base/", filter.absolute_url(page_url) end @@ -386,7 +386,7 @@ class TestFilters < JekyllUnitTest page_url = "/" filter = make_filter_mock({ "url" => "http://example.com", - "baseurl" => nil + "baseurl" => nil, }) assert_equal "http://example.com/", filter.absolute_url(page_url) end From b2d93913d09740494d5bfedea9a9f459acdf9353 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 18 Jan 2017 15:36:13 -0500 Subject: [PATCH 162/207] Update history to reflect merge of #5694 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 36e70cb6..e9df1fb4 100644 --- a/History.markdown +++ b/History.markdown @@ -41,6 +41,7 @@ * Improve collections docs (#5691) * Fix #5730: add gcc and make to the list of requirements (#5731) * Add missing class (#5791) + * Improve template docs (#5694) ### Development Fixes From b7f44e6ecace7521614942d631345b504ad146bf Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 18 Jan 2017 16:54:21 -0500 Subject: [PATCH 163/207] Queue up a 3.4 deploy with unfinished release post. --- History.markdown | 2 +- docs/_docs/history.md | 95 +++++++++++++++++++ .../2017-01-18-jekyll-3-4-0-released.markdown | 16 ++++ docs/latest_version.txt | 2 +- lib/jekyll/version.rb | 2 +- 5 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown diff --git a/History.markdown b/History.markdown index 36e70cb6..8ad3e2ae 100644 --- a/History.markdown +++ b/History.markdown @@ -1,4 +1,4 @@ -## HEAD +## 3.4.0 / 2016-01-20 ### Minor Enhancements diff --git a/docs/_docs/history.md b/docs/_docs/history.md index 03767126..a31266bc 100644 --- a/docs/_docs/history.md +++ b/docs/_docs/history.md @@ -4,6 +4,101 @@ permalink: "/docs/history/" note: This file is autogenerated. Edit /History.markdown instead. --- +## 3.4.0 / 2016-01-20 +{: #v3-4-0} + +### Minor Enhancements +{: #minor-enhancements-v3-4-0} + +- Add connector param to `array_to_sentence_string` filter ([#5597]({{ site.repository }}/issues/5597)) +- Adds `group_by_exp` filter ([#5513]({{ site.repository }}/issues/5513)) +- Use the current year for the LICENSE of theme ([#5712]({{ site.repository }}/issues/5712)) +- Update License ([#5713]({{ site.repository }}/issues/5713)) +- Use Addressable instead of URI to decode ([#5726]({{ site.repository }}/issues/5726)) +- throw IncludeTagError if error occurs in included file ([#5767]({{ site.repository }}/issues/5767)) +- Write Jekyll::Utils::Exec.run for running shell commands. ([#5640]({{ site.repository }}/issues/5640)) + +### Bug Fixes +{: #bug-fixes-v3-4-0} + +- Escaped regular expressions when using `post_url`. ([#5605]({{ site.repository }}/issues/5605)) +- fix date parsing in file names to be stricter ([#5609]({{ site.repository }}/issues/5609)) +- Add a module to re-define `ENV["TZ"]` in Windows ([#5612]({{ site.repository }}/issues/5612)) +- Use each instead of map to actually return nothing ([#5668]({{ site.repository }}/issues/5668)) +- include: fix 'no implicit conversion of nil to String' ([#5750]({{ site.repository }}/issues/5750)) +- Don't include the theme's includes_path if it is nil. ([#5780]({{ site.repository }}/issues/5780)) +- test double slash when input = '/' ([#5542]({{ site.repository }}/issues/5542)) + +### Site Enhancements +{: #site-enhancements-v3-4-0} + +- Remove instructions to install Jekyll 2 on Windows ([#5582]({{ site.repository }}/issues/5582)) +- Fix example URL inconsistency ([#5592]({{ site.repository }}/issues/5592)) +- Replace backticks within HTML blocks with HTML tags ([#5435]({{ site.repository }}/issues/5435)) +- Add jekyll-migrate-permalink ([#5600]({{ site.repository }}/issues/5600)) +- Fix bad config YAML in collections example ([#5587]({{ site.repository }}/issues/5587)) +- Bring documentation on 'Directory Structure' up-to-date ([#5573]({{ site.repository }}/issues/5573)) +- Use only the used Font Awesome icons. ([#5530]({{ site.repository }}/issues/5530)) +- Switch to `https` when possible. ([#5611]({{ site.repository }}/issues/5611)) +- Update `_font-awesome.scss` to move .woff file before .ttf ([#5614]({{ site.repository }}/issues/5614)) +- Update documentation on updating FontAwesome Iconset ([#5655]({{ site.repository }}/issues/5655)) +- Improve quickstart docs ([#5689]({{ site.repository }}/issues/5689)) +- Add Jekyll-Post to list of plugins ([#5705]({{ site.repository }}/issues/5705)) +- Add jekyll-numbered-headings ([#5688]({{ site.repository }}/issues/5688)) +- Docs: move permalinks from documents into config ([#5544]({{ site.repository }}/issues/5544)) +- Sort gems in `docs/_config.yml` ([#5746]({{ site.repository }}/issues/5746)) +- [site] Use defaults for docs and news-items ([#5744]({{ site.repository }}/issues/5744)) +- Improve collections docs ([#5691]({{ site.repository }}/issues/5691)) +- Fix [#5730]({{ site.repository }}/issues/5730): add gcc and make to the list of requirements ([#5731]({{ site.repository }}/issues/5731)) +- Add missing class ([#5791]({{ site.repository }}/issues/5791)) + +### Development Fixes +{: #development-fixes-v3-4-0} + +- clean unit-test names in `test/test_tags.rb` ([#5608]({{ site.repository }}/issues/5608)) +- Add cucumber feature to test for bonafide theme gems ([#5384]({{ site.repository }}/issues/5384)) +- Use `assert_nil` instead of `assert_equal nil` ([#5652]({{ site.repository }}/issues/5652)) +- Rubocop -a on lib/jekyll ([#5666]({{ site.repository }}/issues/5666)) +- Bump to rake 12.0 ([#5670]({{ site.repository }}/issues/5670)) +- Rubocop Gemfile ([#5671]({{ site.repository }}/issues/5671)) +- update Classifier-Reborn to 2.1.0 ([#5711]({{ site.repository }}/issues/5711)) +- Rubocop: fix Rakefile and gemspec ([#5745]({{ site.repository }}/issues/5745)) +- Use `assert_nil` ([#5725]({{ site.repository }}/issues/5725)) +- Sort gems in `jekyll.gemspec` ([#5746]({{ site.repository }}/issues/5746)) +- Rubocop: Require consistent comma in multiline literals ([#5761]({{ site.repository }}/issues/5761)) +- Bump rubocop ([#5765]({{ site.repository }}/issues/5765)) +- New rubocop security checks ([#5768]({{ site.repository }}/issues/5768)) +- test/helper: fix flaky plugin path test by removing calls to Dir.chdir without a block ([#5779]({{ site.repository }}/issues/5779)) +- Use latest jemoji gem ([#5782]({{ site.repository }}/issues/5782)) +- Bump htmlproofer ([#5781]({{ site.repository }}/issues/5781)) +- Bump rubies we test against ([#5784]({{ site.repository }}/issues/5784)) + +### Documentation + +- Fixed typo ([#5632]({{ site.repository }}/issues/5632)) +- use backticks for Gemfile for consistency since in the next sentence … ([#5641]({{ site.repository }}/issues/5641)) +- Update Core team list in the README file ([#5643]({{ site.repository }}/issues/5643)) +- Improve Permalinks documentation. ([#5653]({{ site.repository }}/issues/5653)) +- Fix typo in Variables doc page ([#5657]({{ site.repository }}/issues/5657)) +- Fix a couple of typos in the docs ([#5658]({{ site.repository }}/issues/5658)) +- Update windows.md ([#5683]({{ site.repository }}/issues/5683)) +- Improve permalinks docs ([#5693]({{ site.repository }}/issues/5693)) +- Document --unpublished build option ([#5720]({{ site.repository }}/issues/5720)) +- Improve pages docs ([#5692]({{ site.repository }}/issues/5692)) +- Added new includes.md topic to docs ([#5696]({{ site.repository }}/issues/5696)) +- Replace a dead link with a web-archived one ([#5738]({{ site.repository }}/issues/5738)) +- Remove duplicate paragraph. ([#5740]({{ site.repository }}/issues/5740)) +- Addition of a sample "typical post" ([#5473]({{ site.repository }}/issues/5473)) +- Fix a minor grammatical mistake on themes' document ### -dev ([#5748]({{ site.repository }}/issues/5748)) +- Correct comments in data_reader.rb ([#5621]({{ site.repository }}/issues/5621)) +- Add jekyll-pre-commit to plugins list ([#5752]({{ site.repository }}/issues/5752)) +- Update quickstart.md ([#5758]({{ site.repository }}/issues/5758)) +- Correct minor typo ([#5764]({{ site.repository }}/issues/5764)) +- Fix a markdown link to look properly on the web ([#5769]({{ site.repository }}/issues/5769)) +- [docs] Info about the help command usage ([#5312]({{ site.repository }}/issues/5312)) +- Add missing merge labels for jekyllbot ([#5753]({{ site.repository }}/issues/5753)) + + ## 3.3.1 / 2016-11-14 {: #v3-3-1} diff --git a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown new file mode 100644 index 00000000..ca9745d7 --- /dev/null +++ b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown @@ -0,0 +1,16 @@ +--- +title: 'Jekyll turns 3.4.0' +date: 2017-01-18 14:19:13 -0500 +author: parkr +version: 3.4.0 +categories: [release] +--- + +Hey there! We have a quick updated of Jekyll for you to enjoy this January. +Packed full of bug fixes as usual, thanks to the tireless efforts of our +exceptional Jekyll community. Three changes to call out: + +1. If you're a big fan of [`where_by_exp`](/docs/filters/), you'll be an +even bigger fan of [`group_by_exp`](/docs/filters/). +2. Using a custom timezone in Jekyll on Windows? Yeah, sorry that hasn't ever worked + properly. We made the internals possible diff --git a/docs/latest_version.txt b/docs/latest_version.txt index bea438e9..18091983 100644 --- a/docs/latest_version.txt +++ b/docs/latest_version.txt @@ -1 +1 @@ -3.3.1 +3.4.0 diff --git a/lib/jekyll/version.rb b/lib/jekyll/version.rb index a01e787a..4babc208 100644 --- a/lib/jekyll/version.rb +++ b/lib/jekyll/version.rb @@ -1,3 +1,3 @@ module Jekyll - VERSION = "3.3.1".freeze + VERSION = "3.4.0".freeze end From 60ba3fc0c982f771c75f59d2f4d2061d0bc1ef8f Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Thu, 19 Jan 2017 08:55:04 -0500 Subject: [PATCH 164/207] Update history to reflect merge of #5736 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index e9df1fb4..b813f405 100644 --- a/History.markdown +++ b/History.markdown @@ -87,6 +87,7 @@ * Fix a markdown link to look properly on the web (#5769) * [docs] Info about the help command usage (#5312) * Add missing merge labels for jekyllbot (#5753) + * Fix broken links in documentation (#5736) ## 3.3.1 / 2016-11-14 From 63dfe080db91334dab01276e70b33e77430a2e41 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Thu, 19 Jan 2017 22:06:37 +0100 Subject: [PATCH 165/207] bump rdoc to v5.0 --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 7a786c9b..0abcbe4a 100644 --- a/Gemfile +++ b/Gemfile @@ -69,7 +69,7 @@ group :jekyll_optional_dependencies do gem "jekyll-redirect-from" gem "kramdown", "~> 1.9" gem "mime-types", "~> 3.0" - gem "rdoc", "~> 4.2" + gem "rdoc", "~> 5.0" gem "toml", "~> 0.1.0" platform :ruby, :mswin, :mingw, :x64_mingw do From 6ec2145c0ccf949e0d1ef0ca7d0aa4acbdb05c4c Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Thu, 19 Jan 2017 22:15:07 +0100 Subject: [PATCH 166/207] bump codeclimate-test-reporter to v1.0.5 --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 7a786c9b..9b0a2c18 100644 --- a/Gemfile +++ b/Gemfile @@ -18,7 +18,7 @@ end # group :test do - gem "codeclimate-test-reporter", "~> 0.6.0" + gem "codeclimate-test-reporter", "~> 1.0.5" gem "cucumber", "~> 2.1" gem "jekyll_test_plugin" gem "jekyll_test_plugin_malicious" From 5ed22d0b3eb4dbabfdf458fa5ad288983f29e8d7 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Thu, 19 Jan 2017 22:39:39 +0100 Subject: [PATCH 167/207] Now we must execute SimpleCov --- test/helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/helper.rb b/test/helper.rb index 94bad2cc..74f2682e 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -10,8 +10,8 @@ def jruby? end if ENV["CI"] - require "codeclimate-test-reporter" - CodeClimate::TestReporter.start + require "simplecov" + SimpleCov.start else require File.expand_path("../simplecov_custom_profile", __FILE__) SimpleCov.start "gem" do From 4ed4c430445dd58f0991f322cded2e38feecf1b6 Mon Sep 17 00:00:00 2001 From: Tunghsiao Liu Date: Fri, 20 Jan 2017 15:14:23 +0800 Subject: [PATCH 168/207] Add `match_regex` and `replace_regex` filters --- docs/_docs/plugins.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index 9034cb20..09bb2feb 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -803,6 +803,8 @@ LESS.js files during generation. - [jekyll-typogrify](https://github.com/myles/jekyll-typogrify): A Jekyll plugin that brings the functions of [typogruby](http://avdgaag.github.io/typogruby/). - [Jekyll Email Protect](https://github.com/vwochnik/jekyll-email-protect): Email protection liquid filter for Jekyll - [Jekyll Uglify Filter](https://github.com/mattg/jekyll-uglify-filter): A Liquid filter that runs your JavaScript through UglifyJS. +- [match_regex](https://github.com/sparanoid/match_regex): A Liquid filter to perform regex match. +- [replace_regex](https://github.com/sparanoid/replace_regex): A Liquid filter to perform regex replace. #### Tags From 4804806266e9fade7c3de6bf0d3064bc013e29fd Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 20 Jan 2017 03:42:02 -0500 Subject: [PATCH 169/207] Update history to reflect merge of #5799 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index b813f405..883cb845 100644 --- a/History.markdown +++ b/History.markdown @@ -88,6 +88,7 @@ * [docs] Info about the help command usage (#5312) * Add missing merge labels for jekyllbot (#5753) * Fix broken links in documentation (#5736) + * Docs: add `match_regex` and `replace_regex` filters (#5799) ## 3.3.1 / 2016-11-14 From 12201d4f1bf057abdbad544a7a49c64b539691f0 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Fri, 20 Jan 2017 09:49:34 +0100 Subject: [PATCH 170/207] update excluded paths --- .codeclimate.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.codeclimate.yml b/.codeclimate.yml index cd70c7de..b3d26d65 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -23,7 +23,7 @@ exclude_paths: - features/**/* - script/**/* - - site/**/* + - docs/**/* - spec/**/* - test/**/* - vendor/**/* From 9fe73be1013639b6721b4bffb787d8e62cbf12bd Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 20 Jan 2017 13:59:19 -0500 Subject: [PATCH 171/207] Update history to reflect merge of #5797 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 883cb845..8b63ad60 100644 --- a/History.markdown +++ b/History.markdown @@ -62,6 +62,7 @@ * Use latest jemoji gem (#5782) * Bump htmlproofer (#5781) * Bump rubies we test against (#5784) + * Bump rdoc to v5.0 (#5797) ### Documentation From eb54e270f91892e4df6d3252cfa896b5ff9afdf5 Mon Sep 17 00:00:00 2001 From: Ajay Karwal Date: Sat, 21 Jan 2017 00:17:14 +0000 Subject: [PATCH 172/207] Added note about --blank flag Added instructions about installing Jekyll with a blank slate using the --blank flag. --- docs/_docs/quickstart.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_docs/quickstart.md b/docs/_docs/quickstart.md index 50df76cf..a8a2ae98 100644 --- a/docs/_docs/quickstart.md +++ b/docs/_docs/quickstart.md @@ -40,6 +40,7 @@ If you encounter any unexpected errors during the above, please refer to the alr * To install the Jekyll site into the directory you're currently in, run `jekyll new .` If the existing directory isn't empty, you can pass the `--force` option with `jekyll new . --force`. * `jekyll new` automatically initiates `bundle install` to install the dependencies required. (If you don't want Bundler to install the gems, use `jekyll new myblog --skip-bundle`.) * By default, the Jekyll site installed by `jekyll new` uses a gem-based theme called [Minima](https://github.com/jekyll/minima). With [gem-based themes](../themes), some of the directories and files are stored in the theme-gem, hidden from your immediate view. +* We recommend setting up Jekyll with a gem-based theme but if you want to start with a blank slate, use `jekyll new myblog --blank` * To learn about other parameters you can include with `jekyll new`, type `jekyll new --help`. When in doubt, use the help command to remind you of all available options and usage, it also works with the new, build and serve subcommands, e.g. jekyll help new or jekyll help build. From f7186c86c4b365fbd13a5b9602033eb34bf83f08 Mon Sep 17 00:00:00 2001 From: Josh Habdas Date: Sun, 22 Jan 2017 22:33:21 +0800 Subject: [PATCH 173/207] Got that diaper money? --- docs/_docs/plugins.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index 09bb2feb..d9e5fe33 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -805,6 +805,7 @@ LESS.js files during generation. - [Jekyll Uglify Filter](https://github.com/mattg/jekyll-uglify-filter): A Liquid filter that runs your JavaScript through UglifyJS. - [match_regex](https://github.com/sparanoid/match_regex): A Liquid filter to perform regex match. - [replace_regex](https://github.com/sparanoid/replace_regex): A Liquid filter to perform regex replace. +- [Jekyll Money](https://rubygems.org/gems/jekyll-money): A Jekyll plugin for dealing with money. Because we all have to at some point. #### Tags From c1b542e066f656f81a3fc138b0b73871c4852d9b Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Sun, 22 Jan 2017 12:00:29 -0500 Subject: [PATCH 174/207] Update history to reflect merge of #5810 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 8b63ad60..64cc144c 100644 --- a/History.markdown +++ b/History.markdown @@ -90,6 +90,7 @@ * Add missing merge labels for jekyllbot (#5753) * Fix broken links in documentation (#5736) * Docs: add `match_regex` and `replace_regex` filters (#5799) + * Got that diaper money? (#5810) ## 3.3.1 / 2016-11-14 From 03722f022e4a0858aabfe85d7b06b369c942786d Mon Sep 17 00:00:00 2001 From: Nicolas Hoizey Date: Sun, 22 Jan 2017 22:12:58 +0100 Subject: [PATCH 175/207] Add mention of classifier-reborn for LSI classifier-reborn is mandatory for LSI since Jekyll 3.0 --- docs/_docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/configuration.md b/docs/_docs/configuration.md index e4c35b8a..2542b85f 100644 --- a/docs/_docs/configuration.md +++ b/docs/_docs/configuration.md @@ -233,7 +233,7 @@ class="flag">flags (specified on the command-line) that control them.

LSI

-

Produce an index for related posts.

+

Produce an index for related posts. The classifier-reborn plugin must be used.

lsi: BOOL

From e6392ea6dd56af288de3b6602868455414eba92a Mon Sep 17 00:00:00 2001 From: Nicolas Hoizey Date: Mon, 23 Jan 2017 10:06:24 +0100 Subject: [PATCH 176/207] Update configuration.md --- docs/_docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/configuration.md b/docs/_docs/configuration.md index 2542b85f..3f3bfd25 100644 --- a/docs/_docs/configuration.md +++ b/docs/_docs/configuration.md @@ -233,7 +233,7 @@ class="flag">flags (specified on the command-line) that control them.

LSI

-

Produce an index for related posts. The classifier-reborn plugin must be used.

+

Produce an index for related posts. Requires the classifier-reborn plugin.

lsi: BOOL

From 2a2602cf61af9b83c43b60470dc89d1817557a64 Mon Sep 17 00:00:00 2001 From: Josh Habdas Date: Mon, 23 Jan 2017 17:59:25 +0800 Subject: [PATCH 177/207] Add jekyll-ga plug-in --- docs/_docs/plugins.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_docs/plugins.md b/docs/_docs/plugins.md index 09bb2feb..f0cdb345 100644 --- a/docs/_docs/plugins.md +++ b/docs/_docs/plugins.md @@ -753,6 +753,7 @@ LESS.js files during generation. - [Jekyll::Paginate::Category](https://github.com/midnightSuyama/jekyll-paginate-category): Pagination Generator for Jekyll Category. - [AMP-Jekyll by Juuso Mikkonen](https://github.com/juusaw/amp-jekyll): Generate [Accelerated Mobile Pages](https://www.ampproject.org) of Jekyll posts. - [Jekyll Art Gallery plugin](https://github.com/alexivkin/Jekyll-Art-Gallery-Plugin): An advanced art/photo gallery generation plugin for creating galleries from a set of image folders. Supports image tagging, thumbnails, sorting, image rotation, post-processing (remove EXIF, add watermark), multiple collections and much more. +- [jekyll-ga](https://github.com/developmentseed/jekyll-ga): A Jekyll plugin that downloads Google Analytics data and adds it to posts. Useful for making a site that lists "most popular" content. [Read the introduction](https://developmentseed.org/blog/google-analytics-jekyll-plugin/) post on the developmentSEED blog. #### Converters From 2a56e9ce0d5eaf3581bf0bf4e134241731785974 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 23 Jan 2017 11:53:13 -0500 Subject: [PATCH 178/207] Update history to reflect merge of #5812 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 64cc144c..776fd40b 100644 --- a/History.markdown +++ b/History.markdown @@ -91,6 +91,7 @@ * Fix broken links in documentation (#5736) * Docs: add `match_regex` and `replace_regex` filters (#5799) * Got that diaper money? (#5810) + * Sort content by popularity using Google Analytics (#5812) ## 3.3.1 / 2016-11-14 From 2662319641fe0b4a902d448407ef8bb860d4d53b Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Mon, 23 Jan 2017 19:58:20 +0100 Subject: [PATCH 179/207] typo --- docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown index ca9745d7..6950277e 100644 --- a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown +++ b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown @@ -6,7 +6,7 @@ version: 3.4.0 categories: [release] --- -Hey there! We have a quick updated of Jekyll for you to enjoy this January. +Hey there! We have a quick update of Jekyll for you to enjoy this January. Packed full of bug fixes as usual, thanks to the tireless efforts of our exceptional Jekyll community. Three changes to call out: From 3a3ceff1509b0391952252c6121db614387dd88e Mon Sep 17 00:00:00 2001 From: Ricardo N Feliciano Date: Thu, 19 Jan 2017 19:29:09 -0500 Subject: [PATCH 180/207] Rework CI doc to include multiple providers. --- docs/_docs/continuous-integration.md | 240 +----------------- docs/_docs/continuous-integration/circleci.md | 92 +++++++ .../_docs/continuous-integration/travis-ci.md | 230 +++++++++++++++++ docs/img/circleci-badge.svg | 14 + docs/img/travis-ci-badge.png | Bin 0 -> 26749 bytes 5 files changed, 350 insertions(+), 226 deletions(-) create mode 100644 docs/_docs/continuous-integration/circleci.md create mode 100644 docs/_docs/continuous-integration/travis-ci.md create mode 100644 docs/img/circleci-badge.svg create mode 100644 docs/img/travis-ci-badge.png diff --git a/docs/_docs/continuous-integration.md b/docs/_docs/continuous-integration.md index c2e8a31f..79477645 100644 --- a/docs/_docs/continuous-integration.md +++ b/docs/_docs/continuous-integration.md @@ -1,232 +1,20 @@ --- title: Continuous Integration -permalink: /docs/continuous-integration/ --- -You can easily test your website build against one or more versions of Ruby. -The following guide will show you how to set up a free build environment on -[Travis][0], with [GitHub][1] integration for pull requests. Paid -alternatives exist for private repositories. +Continuous Integration (CI) enables you to publish your Jekyll generated website with confidence by automating the quality assurance and deployment processes. You can quickly get started using CI with one of the providers below: -[0]: https://travis-ci.org/ -[1]: https://github.com/ - -## 1. Enabling Travis and GitHub - -Enabling Travis builds for your GitHub repository is pretty simple: - -1. Go to your profile on travis-ci.org: https://travis-ci.org/profile/username -2. Find the repository for which you're interested in enabling builds. -3. Click the slider on the right so it says "ON" and is a dark grey. -4. Optionally configure the build by clicking on the gear icon. Further - configuration happens in your `.travis.yml` file. More details on that - below. - -## 2. The Test Script - -The simplest test script simply runs `jekyll build` and ensures that Jekyll -doesn't fail to build the site. It doesn't check the resulting site, but it -does ensure things are built properly. - -When testing Jekyll output, there is no better tool than [html-proofer][2]. -This tool checks your resulting site to ensure all links and images exist. -Utilize it either with the convenient `htmlproofer` command-line executable, -or write a Ruby script which utilizes the gem. - -Save the commands you want to run and succeed in a file: `./script/cibuild` - -### The HTML Proofer Executable - -```sh -#!/usr/bin/env bash -set -e # halt script on error - -bundle exec jekyll build -bundle exec htmlproofer ./_site -``` - -Some options can be specified via command-line switches. Check out the -`html-proofer` README for more information about these switches, or run -`htmlproofer --help` locally. - -For example to avoid testing external sites, use this command: - -```sh -$ bundle exec htmlproofer ./_site --disable-external -``` - -### The HTML Proofer Library - -You can also invoke `html-proofer` in Ruby scripts (e.g. in a Rakefile): - -```ruby -#!/usr/bin/env ruby - -require 'html-proofer' -HTMLProofer.check_directory("./_site").run -``` - -Options are given as a second argument to `.new`, and are encoded in a -symbol-keyed Ruby Hash. For more information about the configuration options, -check out `html-proofer`'s README file. - -[2]: https://github.com/gjtorikian/html-proofer - -## 3. Configuring Your Travis Builds - -This file is used to configure your Travis builds. Because Jekyll is built -with Ruby and requires RubyGems to install, we use the Ruby language build -environment. Below is a sample `.travis.yml` file, followed by -an explanation of each line. - -**Note:** You will need a Gemfile as well, [Travis will automatically install](https://docs.travis-ci.com/user/languages/ruby/#Dependency-Management) the dependencies based on the referenced gems: - -```ruby -source "https://rubygems.org" - -gem "jekyll" -gem "html-proofer" -``` - -Your `.travis.yml` file should look like this: - -```yaml -language: ruby -rvm: -- 2.2.5 - -before_script: - - chmod +x ./script/cibuild # or do this locally and commit - -# Assume bundler is being used, therefore -# the `install` step will run `bundle install` by default. -script: ./script/cibuild - -# branch whitelist, only for GitHub Pages -branches: - only: - - gh-pages # test the gh-pages branch - - /pages-(.*)/ # test every branch which starts with "pages-" - -env: - global: - - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer - -sudo: false # route your build to the container-based infrastructure for a faster build -``` - -Ok, now for an explanation of each line: - -```yaml -language: ruby -``` - -This line tells Travis to use a Ruby build container. It gives your script -access to Bundler, RubyGems, and a Ruby runtime. - -```yaml -rvm: -- 2.2.5 -``` - -RVM is a popular Ruby Version Manager (like rbenv, chruby, etc). This -directive tells Travis the Ruby version to use when running your test -script. - -```yaml -before_script: - - chmod +x ./script/cibuild -``` - -The build script file needs to have the *executable* attribute set or -Travis will fail with a permission denied error. You can also run this -locally and commit the permissions directly, thus rendering this step -irrelevant. - -```yaml -script: ./script/cibuild -``` - -Travis allows you to run any arbitrary shell script to test your site. One -convention is to put all scripts for your project in the `script` -directory, and to call your test script `cibuild`. This line is completely -customizable. If your script won't change much, you can write your test -incantation here directly: - -```yaml -install: gem install jekyll html-proofer -script: jekyll build && htmlproofer ./_site -``` - -The `script` directive can be absolutely any valid shell command. - -```yaml -# branch whitelist, only for GitHub Pages -branches: - only: - - gh-pages # test the gh-pages branch - - /pages-(.*)/ # test every branch which starts with "pages-" -``` - -You want to ensure the Travis builds for your site are being run only on -the branch or branches which contain your site. One means of ensuring this -isolation is including a branch whitelist in your Travis configuration -file. By specifying the `gh-pages` branch, you will ensure the associated -test script (discussed above) is only executed on site branches. If you use -a pull request flow for proposing changes, you may wish to enforce a -convention for your builds such that all branches containing edits are -prefixed, exemplified above with the `/pages-(.*)/` regular expression. - -The `branches` directive is completely optional. Travis will build from every -push to any branch of your repo if leave it out. - -```yaml -env: - global: - - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer -``` - -Using `html-proofer`? You'll want this environment variable. Nokogiri, used -to parse HTML files in your compiled site, comes bundled with libraries -which it must compile each time it is installed. Luckily, you can -dramatically decrease the install time of Nokogiri by setting the -environment variable `NOKOGIRI_USE_SYSTEM_LIBRARIES` to `true`. - -
-
Be sure to exclude vendor from your - _config.yml
-

Travis bundles all gems in the vendor directory on its build - servers, which Jekyll will mistakenly read and explode on.

+ - -```yaml -exclude: [vendor] -``` - -By default you should supply the `sudo: false` command to Travis. This command -explicitly tells Travis to run your build on Travis's [container-based - infrastructure](https://docs.travis-ci.com/user/workers/container-based-infrastructure/#Routing-your-build-to-container-based-infrastructure). Running on the container-based infrastructure can often times -speed up your build. If you have any trouble with your build, or if your build -does need `sudo` access, modify the line to `sudo: required`. - -```yaml -sudo: false -``` - -### Troubleshooting - -**Travis error:** *"You are trying to install in deployment mode after changing -your Gemfile. Run bundle install elsewhere and add the updated Gemfile.lock -to version control."* - -**Workaround:** Either run `bundle install` locally and commit your changes to -`Gemfile.lock`, or remove the `Gemfile.lock` file from your repository and add -an entry in the `.gitignore` file to avoid it from being checked in again. - -### Questions? - -This entire guide is open-source. Go ahead and [edit it][3] if you have a -fix or [ask for help][4] if you run into trouble and need some help. - -[3]: https://github.com/jekyll/jekyll/edit/master/docs/_docs/continuous-integration.md -[4]: https://jekyllrb.com/help/ diff --git a/docs/_docs/continuous-integration/circleci.md b/docs/_docs/continuous-integration/circleci.md new file mode 100644 index 00000000..ccd2d933 --- /dev/null +++ b/docs/_docs/continuous-integration/circleci.md @@ -0,0 +1,92 @@ +--- +title: "CircleCI" +--- + +Building, testing, and deploying your Jekyll-generated website can quickly be done with [CircleCI][0], a continuous integration & delivery tool. CircleCI supports [GitHub][1] and [Bitbucket][2], and you can get started for free using an open-source or private repository. + +[0]: https://circleci.com/ +[1]: https://github.com/ +[2]: https://bitbucket.org/ + +## Follow Your Project on CircleCI + +To start building your project on CircleCI, all you need to do is 'follow' your project from CircleCI's website: + +1. Visit the 'Add Projects' page: +1. From the GitHub or Bitbucket tab on the left, choose a user or organization. +1. Find your project in the list and click 'Build project' on the right. +1. The first build will start on its own. You can start telling CircleCI how to build your project by creating a [circle.yml][3] file in the root of your repository. + +[3]: https://circleci.com/docs/configuration/ + +## Dependencies + +The easiest way to manage dependencies for a Jekyll project (with or without CircleCI) is via a [Gemfile][4]. You'd want to have Jekyll, any Jekyll plugins, [HTML Proofer](#html-proofer), and any other gems that you are using in the `Gemfile`. Don't forget to version `Gemfile.lock` as well. Here's an example `Gemfile`: + +[4]: http://bundler.io/gemfile.html + +```yaml +source 'https://rubygems.org' + +ruby '2.4.0' + +gem 'jekyll' +gem 'html-proofer' +``` + +CircleCI detects when `Gemfile` is present is will automatically run `bundle install` for you in the `dependencies` phase. + +## Testing + +The most basic test that can be run is simply seeing if `jekyll build` actually works. This is a blocker, a dependency if you will, for other tests you might run on the generate site. So we'll run Jekyll, via Bundler, in the `dependencies` phase. + +``` +dependencies: + post: + - bundle exec jekyll build +``` + +### HTML Proofer + +With your site built, it's useful to run tests to check for valid HTML, broken links, etc. There's a few tools out there but [HTML Proofer][5] is popular amongst Jekyll users. We'll run it in the `test` phase with a few preferred flags. Check out the `html-proofer` [README][6] for all available flags, or run `htmlproofer --help` locally. + +[5]: https://github.com/gjtorikian/html-proofer +[6]: https://github.com/gjtorikian/html-proofer/blob/master/README.md#configuration + +```yaml +test: + post: + - bundle exec htmlproofer ./_site --check-html --disable-external +``` + +## Complete Example circle.yml File + +When you put it all together, here's an example of what that `circle.yml` file could look like: + +``` +machine: + environment: + NOKOGIRI_USE_SYSTEM_LIBRARIES: true # speeds up installation of html-proofer + +dependencies: + post: + - bundle exec jekyll build + +test: + post: + - bundle exec htmlproofer ./_site --allow-hash-href --check-favicon --check-html --disable-external + +deployment: + prod: + branch: master + commands: + - rsync -va --delete ./_site username@my-website:/var/html +``` + +## Questions? + +This entire guide is open-source. Go ahead and [edit it][7] if you have a fix or [ask for help][8] if you run into trouble and need some help. CircleCI also has an [online community][9] for help. + +[7]: https://github.com/jekyll/jekyll/edit/master/docs/_docs/continuous-integration/circleci.md +[8]: https://jekyllrb.com/help/ +[9]: https://discuss.circleci.com diff --git a/docs/_docs/continuous-integration/travis-ci.md b/docs/_docs/continuous-integration/travis-ci.md new file mode 100644 index 00000000..caff2f64 --- /dev/null +++ b/docs/_docs/continuous-integration/travis-ci.md @@ -0,0 +1,230 @@ +--- +title: "Travis CI" +--- + +You can easily test your website build against one or more versions of Ruby. +The following guide will show you how to set up a free build environment on +[Travis][0], with [GitHub][1] integration for pull requests. + +[0]: https://travis-ci.org/ +[1]: https://github.com/ + +## 1. Enabling Travis and GitHub + +Enabling Travis builds for your GitHub repository is pretty simple: + +1. Go to your profile on travis-ci.org: https://travis-ci.org/profile/username +2. Find the repository for which you're interested in enabling builds. +3. Click the slider on the right so it says "ON" and is a dark grey. +4. Optionally configure the build by clicking on the gear icon. Further + configuration happens in your `.travis.yml` file. More details on that + below. + +## 2. The Test Script + +The simplest test script simply runs `jekyll build` and ensures that Jekyll +doesn't fail to build the site. It doesn't check the resulting site, but it +does ensure things are built properly. + +When testing Jekyll output, there is no better tool than [html-proofer][2]. +This tool checks your resulting site to ensure all links and images exist. +Utilize it either with the convenient `htmlproofer` command-line executable, +or write a Ruby script which utilizes the gem. + +Save the commands you want to run and succeed in a file: `./script/cibuild` + +### The HTML Proofer Executable + +```sh +#!/usr/bin/env bash +set -e # halt script on error + +bundle exec jekyll build +bundle exec htmlproofer ./_site +``` + +Some options can be specified via command-line switches. Check out the +`html-proofer` README for more information about these switches, or run +`htmlproofer --help` locally. + +For example to avoid testing external sites, use this command: + +```sh +$ bundle exec htmlproofer ./_site --disable-external +``` + +### The HTML Proofer Library + +You can also invoke `html-proofer` in Ruby scripts (e.g. in a Rakefile): + +```ruby +#!/usr/bin/env ruby + +require 'html-proofer' +HTMLProofer.check_directory("./_site").run +``` + +Options are given as a second argument to `.new`, and are encoded in a +symbol-keyed Ruby Hash. For more information about the configuration options, +check out `html-proofer`'s README file. + +[2]: https://github.com/gjtorikian/html-proofer + +## 3. Configuring Your Travis Builds + +This file is used to configure your Travis builds. Because Jekyll is built +with Ruby and requires RubyGems to install, we use the Ruby language build +environment. Below is a sample `.travis.yml` file, followed by +an explanation of each line. + +**Note:** You will need a Gemfile as well, [Travis will automatically install](https://docs.travis-ci.com/user/languages/ruby/#Dependency-Management) the dependencies based on the referenced gems: + +```ruby +source "https://rubygems.org" + +gem "jekyll" +gem "html-proofer" +``` + +Your `.travis.yml` file should look like this: + +```yaml +language: ruby +rvm: +- 2.2.5 + +before_script: + - chmod +x ./script/cibuild # or do this locally and commit + +# Assume bundler is being used, therefore +# the `install` step will run `bundle install` by default. +script: ./script/cibuild + +# branch whitelist, only for GitHub Pages +branches: + only: + - gh-pages # test the gh-pages branch + - /pages-(.*)/ # test every branch which starts with "pages-" + +env: + global: + - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer + +sudo: false # route your build to the container-based infrastructure for a faster build +``` + +Ok, now for an explanation of each line: + +```yaml +language: ruby +``` + +This line tells Travis to use a Ruby build container. It gives your script +access to Bundler, RubyGems, and a Ruby runtime. + +```yaml +rvm: +- 2.2.5 +``` + +RVM is a popular Ruby Version Manager (like rbenv, chruby, etc). This +directive tells Travis the Ruby version to use when running your test +script. + +```yaml +before_script: + - chmod +x ./script/cibuild +``` + +The build script file needs to have the *executable* attribute set or +Travis will fail with a permission denied error. You can also run this +locally and commit the permissions directly, thus rendering this step +irrelevant. + +```yaml +script: ./script/cibuild +``` + +Travis allows you to run any arbitrary shell script to test your site. One +convention is to put all scripts for your project in the `script` +directory, and to call your test script `cibuild`. This line is completely +customizable. If your script won't change much, you can write your test +incantation here directly: + +```yaml +install: gem install jekyll html-proofer +script: jekyll build && htmlproofer ./_site +``` + +The `script` directive can be absolutely any valid shell command. + +```yaml +# branch whitelist, only for GitHub Pages +branches: + only: + - gh-pages # test the gh-pages branch + - /pages-(.*)/ # test every branch which starts with "pages-" +``` + +You want to ensure the Travis builds for your site are being run only on +the branch or branches which contain your site. One means of ensuring this +isolation is including a branch whitelist in your Travis configuration +file. By specifying the `gh-pages` branch, you will ensure the associated +test script (discussed above) is only executed on site branches. If you use +a pull request flow for proposing changes, you may wish to enforce a +convention for your builds such that all branches containing edits are +prefixed, exemplified above with the `/pages-(.*)/` regular expression. + +The `branches` directive is completely optional. Travis will build from every +push to any branch of your repo if leave it out. + +```yaml +env: + global: + - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer +``` + +Using `html-proofer`? You'll want this environment variable. Nokogiri, used +to parse HTML files in your compiled site, comes bundled with libraries +which it must compile each time it is installed. Luckily, you can +dramatically decrease the install time of Nokogiri by setting the +environment variable `NOKOGIRI_USE_SYSTEM_LIBRARIES` to `true`. + +
+
Be sure to exclude vendor from your + _config.yml
+

Travis bundles all gems in the vendor directory on its build + servers, which Jekyll will mistakenly read and explode on.

+
+ +```yaml +exclude: [vendor] +``` + +By default you should supply the `sudo: false` command to Travis. This command +explicitly tells Travis to run your build on Travis's [container-based + infrastructure](https://docs.travis-ci.com/user/workers/container-based-infrastructure/#Routing-your-build-to-container-based-infrastructure). Running on the container-based infrastructure can often times +speed up your build. If you have any trouble with your build, or if your build +does need `sudo` access, modify the line to `sudo: required`. + +```yaml +sudo: false +``` + +### Troubleshooting + +**Travis error:** *"You are trying to install in deployment mode after changing +your Gemfile. Run bundle install elsewhere and add the updated Gemfile.lock +to version control."* + +**Workaround:** Either run `bundle install` locally and commit your changes to +`Gemfile.lock`, or remove the `Gemfile.lock` file from your repository and add +an entry in the `.gitignore` file to avoid it from being checked in again. + +### Questions? + +This entire guide is open-source. Go ahead and [edit it][3] if you have a +fix or [ask for help][4] if you run into trouble and need some help. + +[3]: https://github.com/jekyll/jekyll/edit/master/docs/_docs/continuous-integration/travis-ci.md +[4]: https://jekyllrb.com/help/ diff --git a/docs/img/circleci-badge.svg b/docs/img/circleci-badge.svg new file mode 100644 index 00000000..38658380 --- /dev/null +++ b/docs/img/circleci-badge.svg @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/docs/img/travis-ci-badge.png b/docs/img/travis-ci-badge.png new file mode 100644 index 0000000000000000000000000000000000000000..94f255ec9ef016e18e94f7fedb6bb04105ae4aa7 GIT binary patch literal 26749 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

ak<2AIA!{{F87&q>sx_$WcF+D1SEnsUiAvXH$1 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

#3$RpaHpFsInJ z%)l~`DYR|$8JI+u!{ddZPw(u~i%N!YIQ!smB~;rol(_-BM{+vIww93 zE^uUK?a$>G1guNls@n-sLXe~+9Irn$!QL6T-K#bL{$0EF1Hoh=awm+d@`X8ow*NM; zEL)X1WMhHjBY95gQr42wSNqJ9!7knq zOXgSKee>c2NX6Dnafr#M*o{@Y^tiH5;<;#KBt<{2}x@VsTCLaAyp@yxcB?QGO%`EJNVy$O7Z30jFz*J z_zVI0!yf}7YUBu?o#sluV_(mqJrBT|a)x6RCce9~*(N3t`YvFt-PPQa9mm8HCei5Z z$dDI-hhGL-E>H8NZ!YyW1GehqNO~~qI?ZTX6T9^P~)Q0MZ_D z;nJoB*#-aLUB?xdD&bXMmbyy+@-SE-+-tf1rVYP3L&!l&w9c@5$3A(?!4Gpq^k|Ee;WDK)1adYf}x#Y)RZ=b4ZZ~5_n1pBn(gFFZT30 zI;1U6|Lt|LFkyF@0|uw{OqL_w-OOJ3CtlsOZvJ1D$m`ddx3InC0nPiREf;royKa%I zyDF+H2JN;w>)}>ZIDPwVL5dFG>8YVrdxvs~+;pLVb}V1`%Vooqti-0^@RGW$G()SF21 zyVbD>ruM)mA16hSu5CXbF;K`wv_CyzoJUyH2I-mQ=W6Xmrb1_L z8rHnKkjTPMeE~}MUqWa%{gdqi*9Nv96E%*llULp{eR$K#L>JAF>Pt|qhpa1t!FE68 zoko&;kFBe-;g{^mK`Xv9j{_W1H@VpZ!c;`}idSE#UDhB{M*ha;xKe1&#-~+^Tzp&n_iulDmUNtT)3$_tje Date: Tue, 24 Jan 2017 01:42:53 +0100 Subject: [PATCH 181/207] Review CI pages --- docs/_docs/continuous-integration.md | 20 ------------------ docs/_docs/continuous-integration/circleci.md | 6 +++--- docs/_docs/continuous-integration/index.md | 9 ++++++++ .../_docs/continuous-integration/travis-ci.md | 14 ++++++------ docs/img/circleci-badge.svg | 14 ------------ docs/img/travis-ci-badge.png | Bin 26749 -> 0 bytes 6 files changed, 19 insertions(+), 44 deletions(-) delete mode 100644 docs/_docs/continuous-integration.md create mode 100644 docs/_docs/continuous-integration/index.md delete mode 100644 docs/img/circleci-badge.svg delete mode 100644 docs/img/travis-ci-badge.png diff --git a/docs/_docs/continuous-integration.md b/docs/_docs/continuous-integration.md deleted file mode 100644 index 79477645..00000000 --- a/docs/_docs/continuous-integration.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Continuous Integration ---- - -Continuous Integration (CI) enables you to publish your Jekyll generated website with confidence by automating the quality assurance and deployment processes. You can quickly get started using CI with one of the providers below: - - diff --git a/docs/_docs/continuous-integration/circleci.md b/docs/_docs/continuous-integration/circleci.md index ccd2d933..fede484a 100644 --- a/docs/_docs/continuous-integration/circleci.md +++ b/docs/_docs/continuous-integration/circleci.md @@ -8,7 +8,7 @@ Building, testing, and deploying your Jekyll-generated website can quickly be do [1]: https://github.com/ [2]: https://bitbucket.org/ -## Follow Your Project on CircleCI +## 1. Follow Your Project on CircleCI To start building your project on CircleCI, all you need to do is 'follow' your project from CircleCI's website: @@ -19,7 +19,7 @@ To start building your project on CircleCI, all you need to do is 'follow' your [3]: https://circleci.com/docs/configuration/ -## Dependencies +## 2. Dependencies The easiest way to manage dependencies for a Jekyll project (with or without CircleCI) is via a [Gemfile][4]. You'd want to have Jekyll, any Jekyll plugins, [HTML Proofer](#html-proofer), and any other gems that you are using in the `Gemfile`. Don't forget to version `Gemfile.lock` as well. Here's an example `Gemfile`: @@ -36,7 +36,7 @@ gem 'html-proofer' CircleCI detects when `Gemfile` is present is will automatically run `bundle install` for you in the `dependencies` phase. -## Testing +## 3. Testing The most basic test that can be run is simply seeing if `jekyll build` actually works. This is a blocker, a dependency if you will, for other tests you might run on the generate site. So we'll run Jekyll, via Bundler, in the `dependencies` phase. diff --git a/docs/_docs/continuous-integration/index.md b/docs/_docs/continuous-integration/index.md new file mode 100644 index 00000000..14c5c749 --- /dev/null +++ b/docs/_docs/continuous-integration/index.md @@ -0,0 +1,9 @@ +--- +title: Continuous Integration +permalink: /docs/continuous-integration/ +--- + +Continuous Integration (CI) enables you to publish your Jekyll generated website with confidence by automating the quality assurance and deployment processes. You can quickly get started using CI with one of the providers below: + +* [Travis CI](travis-ci) +* [CircleCI](circleci) diff --git a/docs/_docs/continuous-integration/travis-ci.md b/docs/_docs/continuous-integration/travis-ci.md index caff2f64..e76e1a60 100644 --- a/docs/_docs/continuous-integration/travis-ci.md +++ b/docs/_docs/continuous-integration/travis-ci.md @@ -4,10 +4,10 @@ title: "Travis CI" You can easily test your website build against one or more versions of Ruby. The following guide will show you how to set up a free build environment on -[Travis][0], with [GitHub][1] integration for pull requests. +[Travis][travis], with [GitHub][github] integration for pull requests. -[0]: https://travis-ci.org/ -[1]: https://github.com/ +[travis]: https://travis-ci.org/ +[github]: https://github.com/ ## 1. Enabling Travis and GitHub @@ -26,7 +26,7 @@ The simplest test script simply runs `jekyll build` and ensures that Jekyll doesn't fail to build the site. It doesn't check the resulting site, but it does ensure things are built properly. -When testing Jekyll output, there is no better tool than [html-proofer][2]. +When testing Jekyll output, there is no better tool than [html-proofer][html-proofer]. This tool checks your resulting site to ensure all links and images exist. Utilize it either with the convenient `htmlproofer` command-line executable, or write a Ruby script which utilizes the gem. @@ -68,7 +68,7 @@ Options are given as a second argument to `.new`, and are encoded in a symbol-keyed Ruby Hash. For more information about the configuration options, check out `html-proofer`'s README file. -[2]: https://github.com/gjtorikian/html-proofer +[html-proofer]: https://github.com/gjtorikian/html-proofer ## 3. Configuring Your Travis Builds @@ -91,7 +91,7 @@ Your `.travis.yml` file should look like this: ```yaml language: ruby rvm: -- 2.2.5 +- 2.3.3 before_script: - chmod +x ./script/cibuild # or do this locally and commit @@ -124,7 +124,7 @@ access to Bundler, RubyGems, and a Ruby runtime. ```yaml rvm: -- 2.2.5 +- 2.3.3 ``` RVM is a popular Ruby Version Manager (like rbenv, chruby, etc). This diff --git a/docs/img/circleci-badge.svg b/docs/img/circleci-badge.svg deleted file mode 100644 index 38658380..00000000 --- a/docs/img/circleci-badge.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - diff --git a/docs/img/travis-ci-badge.png b/docs/img/travis-ci-badge.png deleted file mode 100644 index 94f255ec9ef016e18e94f7fedb6bb04105ae4aa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26749 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

ak<2AIA!{{F87&q>sx_$WcF+D1SEnsUiAvXH$1 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

#3$RpaHpFsInJ z%)l~`DYR|$8JI+u!{ddZPw(u~i%N!YIQ!smB~;rol(_-BM{+vIww93 zE^uUK?a$>G1guNls@n-sLXe~+9Irn$!QL6T-K#bL{$0EF1Hoh=awm+d@`X8ow*NM; zEL)X1WMhHjBY95gQr42wSNqJ9!7knq zOXgSKee>c2NX6Dnafr#M*o{@Y^tiH5;<;#KBt<{2}x@VsTCLaAyp@yxcB?QGO%`EJNVy$O7Z30jFz*J z_zVI0!yf}7YUBu?o#sluV_(mqJrBT|a)x6RCce9~*(N3t`YvFt-PPQa9mm8HCei5Z z$dDI-hhGL-E>H8NZ!YyW1GehqNO~~qI?ZTX6T9^P~)Q0MZ_D z;nJoB*#-aLUB?xdD&bXMmbyy+@-SE-+-tf1rVYP3L&!l&w9c@5$3A(?!4Gpq^k|Ee;WDK)1adYf}x#Y)RZ=b4ZZ~5_n1pBn(gFFZT30 zI;1U6|Lt|LFkyF@0|uw{OqL_w-OOJ3CtlsOZvJ1D$m`ddx3InC0nPiREf;royKa%I zyDF+H2JN;w>)}>ZIDPwVL5dFG>8YVrdxvs~+;pLVb}V1`%Vooqti-0^@RGW$G()SF21 zyVbD>ruM)mA16hSu5CXbF;K`wv_CyzoJUyH2I-mQ=W6Xmrb1_L z8rHnKkjTPMeE~}MUqWa%{gdqi*9Nv96E%*llULp{eR$K#L>JAF>Pt|qhpa1t!FE68 zoko&;kFBe-;g{^mK`Xv9j{_W1H@VpZ!c;`}idSE#UDhB{M*ha;xKe1&#-~+^Tzp&n_iulDmUNtT)3$_tje Date: Mon, 23 Jan 2017 20:08:44 -0500 Subject: [PATCH 182/207] Include more verbiage to the 3.4.0 release post. --- .../2017-01-18-jekyll-3-4-0-released.markdown | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown index 6950277e..f6a880fc 100644 --- a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown +++ b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown @@ -13,4 +13,22 @@ exceptional Jekyll community. Three changes to call out: 1. If you're a big fan of [`where_by_exp`](/docs/filters/), you'll be an even bigger fan of [`group_by_exp`](/docs/filters/). 2. Using a custom timezone in Jekyll on Windows? Yeah, sorry that hasn't ever worked - properly. We made the internals possible + properly. We made it possible to accurately [set the timezone using IANA + timezone codes](https://jekyllrb.com/docs/windows/#timezone-management). +3. + +And [lots and lots more!](/docs/history/#v3-4-0) + +This update was made possible by the dedicated efforts of our excellent +contributors: CONTRIB LIST HERE. + +As always, if you encounter bugs, please do [search the issues]({{ site.repository }}/issues) +and [file an issue]({{ site.repository }}/issues/new) if you aren't able to +find a resolution. We also have [our Jekyll Talk +forum](https://talk.jekyllrb.com) for those of you with general questions +about how to accomplish certain tasks with Jekyll. + +We have some exciting updates in store for v3.5, and we're hard at work on +those already. + +Happy Jekylling! From 451fd8e15f84f813ab406ac06a505047c5a3232a Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 24 Jan 2017 10:39:54 -0500 Subject: [PATCH 183/207] Update history to reflect merge of #5815 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 776fd40b..c0d869eb 100644 --- a/History.markdown +++ b/History.markdown @@ -92,6 +92,7 @@ * Docs: add `match_regex` and `replace_regex` filters (#5799) * Got that diaper money? (#5810) * Sort content by popularity using Google Analytics (#5812) + * Rework CI doc to include multiple providers. (#5815) ## 3.3.1 / 2016-11-14 From b0a7c4df0abdb85bb01d03febfc81e6457105724 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 24 Jan 2017 10:41:13 -0500 Subject: [PATCH 184/207] Update history to reflect merge of #5690 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index c0d869eb..fed14a91 100644 --- a/History.markdown +++ b/History.markdown @@ -93,6 +93,7 @@ * Got that diaper money? (#5810) * Sort content by popularity using Google Analytics (#5812) * Rework CI doc to include multiple providers. (#5815) + * Improve theme docs (#5690) ## 3.3.1 / 2016-11-14 From 770ef586f53b5efa9b3594586c2ce04ec365301b Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 24 Jan 2017 10:45:27 -0500 Subject: [PATCH 185/207] Update history to reflect merge of #5811 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index fed14a91..60156e55 100644 --- a/History.markdown +++ b/History.markdown @@ -94,6 +94,7 @@ * Sort content by popularity using Google Analytics (#5812) * Rework CI doc to include multiple providers. (#5815) * Improve theme docs (#5690) + * Add mention of classifier-reborn for LSI (#5811) ## 3.3.1 / 2016-11-14 From 6b08c14ccccc2cf292bd141661bcd3294af056e2 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Tue, 24 Jan 2017 12:51:25 -0500 Subject: [PATCH 186/207] Update history to reflect merge of #5802 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 60156e55..3595e48c 100644 --- a/History.markdown +++ b/History.markdown @@ -95,6 +95,7 @@ * Rework CI doc to include multiple providers. (#5815) * Improve theme docs (#5690) * Add mention of classifier-reborn for LSI (#5811) + * Added note about --blank flag (#5802) ## 3.3.1 / 2016-11-14 From b1edaea7e8d38b9a8cd4d327ac5fab794a4898a0 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Tue, 24 Jan 2017 20:21:34 +0100 Subject: [PATCH 187/207] Add a note about troubleshooting on installation page --- docs/_docs/installation.md | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/docs/_docs/installation.md b/docs/_docs/installation.md index 0228a0f8..979279b8 100644 --- a/docs/_docs/installation.md +++ b/docs/_docs/installation.md @@ -25,16 +25,11 @@ Before you start, make sure your system has the following: - [Python 2.7](https://www.python.org/downloads/)
-
Running Jekyll on Ubuntu
+
Problems installing Jekyll?

- Users of Jekyll on Ubuntu have reported encountering - Could not locate Gemfile or .bundle/ directory error messages at the - bundle exec jekyll serve step in the Quick-start guide. - The likely cause is that all installation requirements have not been fully met. - Recent stock Ubuntu distributions require the installation of both the ruby and ruby-all-dev - packages, e.g. via sudo apt-get install ruby ruby-all-dev (RubyGems should be included in ruby). - The ruby-all-dev .deb package in particular contains development header files whose absence causes - the above error message. + Check out the troubleshooting page or + report an issue so the + Jekyll community can improve the experience for everyone.

@@ -58,10 +53,7 @@ $ gem install jekyll ``` All of Jekyll’s gem dependencies are automatically installed by the above -command, so you won’t have to worry about them at all. If you have problems -installing Jekyll, check out the [troubleshooting](../troubleshooting/) page or -[report an issue]({{ site.repository }}/issues/new) so the Jekyll -community can improve the experience for everyone. +command, so you won’t have to worry about them at all.
Installing Xcode Command-Line Tools
From 7397f305c238da1593732c0e38f1b3ef184f0f84 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Tue, 24 Jan 2017 20:23:01 +0100 Subject: [PATCH 188/207] Add Ubuntu section on troubleshooting --- docs/_docs/troubleshooting.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/_docs/troubleshooting.md b/docs/_docs/troubleshooting.md index aae024bd..d5f29671 100644 --- a/docs/_docs/troubleshooting.md +++ b/docs/_docs/troubleshooting.md @@ -36,6 +36,15 @@ If you installed the above - specifically on Fedora 23 - but the extensions woul sudo dnf install redhat-rpm-config ``` +On Ubuntu if you get stuck after `bundle exec jekyll serve` and see error +messages like `Could not locate Gemfile` or `.bundle/ directory`, it's likely +because all requirements have not been fully met. Recent stock Ubuntu +distributions require the installation of both the `ruby` and `ruby-all-dev` +packages: + +```sh +sudo apt-get install ruby ruby-all-dev +``` On [NearlyFreeSpeech](https://www.nearlyfreespeech.net/) you need to run the following commands before installing Jekyll: @@ -180,10 +189,10 @@ That is: defaults are overridden by options specified in `_config.yml`, and flags specified at the command-line will override all other settings specified elsewhere. -If you encounter an error in building the site, with the error message -"'0000-00-00-welcome-to-jekyll.markdown.erb' does not have a valid date in the -YAML front matter." try including the line `exclude: [vendor]` -in `_config.yml`. +If you encounter an error in building the site, with the error message +"'0000-00-00-welcome-to-jekyll.markdown.erb' does not have a valid date in the +YAML front matter." try including the line `exclude: [vendor]` +in `_config.yml`. ## Markup Problems From 9eef1d9f5ac6cad1e39aaded9b5cc6abb6b1307c Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Tue, 24 Jan 2017 20:52:34 +0100 Subject: [PATCH 189/207] add contributors --- docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown index f6a880fc..cfb1c4fd 100644 --- a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown +++ b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown @@ -15,12 +15,12 @@ even bigger fan of [`group_by_exp`](/docs/filters/). 2. Using a custom timezone in Jekyll on Windows? Yeah, sorry that hasn't ever worked properly. We made it possible to accurately [set the timezone using IANA timezone codes](https://jekyllrb.com/docs/windows/#timezone-management). -3. +3. New users should And [lots and lots more!](/docs/history/#v3-4-0) This update was made possible by the dedicated efforts of our excellent -contributors: CONTRIB LIST HERE. +contributors: Frank Taillandier, Tom Johnson, Ashwin Maroli, Parker Moore, Pat Hawks, alexmalik, Thiago Arrais, Nursen, Eldritch Cheese, XhmikosR, Roger Ogden, Ricardo N Feliciano, Nicolas Hoizey, Max Chadwick, Kenton Hansen, Josh Habdas, jona, Zlatan Vasović, yoostk, Tunghsiao Liu, Tim Banks, Skylar Challand, Rob Crocombe, Purplecarrot, muratayusuke, Longwelwind, Kurt Anderson, kimbaudi, Kevin Wojniak, Ivan Dmitrievsky, Hugo, Florian Thomas, Fabrice Laporte, Don Denton, Dmitrii Evdokimov, Dean Attali, Chayoung You, Chase, brainscript, BlueberryFoxtrot, Alexey Rogachev, Ajay Karwal. As always, if you encounter bugs, please do [search the issues]({{ site.repository }}/issues) and [file an issue]({{ site.repository }}/issues/new) if you aren't able to From 886de9f37d0e859a04ac9e9cc92e75ac255d3466 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Tue, 24 Jan 2017 20:53:27 +0100 Subject: [PATCH 190/207] Group all documentation related changes --- History.markdown | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/History.markdown b/History.markdown index 8ad3e2ae..d364e673 100644 --- a/History.markdown +++ b/History.markdown @@ -4,11 +4,11 @@ * Add connector param to `array_to_sentence_string` filter (#5597) * Adds `group_by_exp` filter (#5513) - * Use the current year for the LICENSE of theme (#5712) - * Update License (#5713) * Use Addressable instead of URI to decode (#5726) * throw IncludeTagError if error occurs in included file (#5767) * Write Jekyll::Utils::Exec.run for running shell commands. (#5640) + * Use the current year for the LICENSE of theme (#5712) + * Update License (#5713) ### Bug Fixes @@ -22,24 +22,12 @@ ### Site Enhancements - * Remove instructions to install Jekyll 2 on Windows (#5582) - * Fix example URL inconsistency (#5592) - * Replace backticks within HTML blocks with HTML tags (#5435) - * Add jekyll-migrate-permalink (#5600) - * Fix bad config YAML in collections example (#5587) - * Bring documentation on 'Directory Structure' up-to-date (#5573) * Use only the used Font Awesome icons. (#5530) * Switch to `https` when possible. (#5611) * Update `_font-awesome.scss` to move .woff file before .ttf (#5614) * Update documentation on updating FontAwesome Iconset (#5655) - * Improve quickstart docs (#5689) - * Add Jekyll-Post to list of plugins (#5705) - * Add jekyll-numbered-headings (#5688) - * Docs: move permalinks from documents into config (#5544) - * Sort gems in `docs/_config.yml` (#5746) * [site] Use defaults for docs and news-items (#5744) - * Improve collections docs (#5691) - * Fix #5730: add gcc and make to the list of requirements (#5731) + * Sort gems in `docs/_config.yml` (#5746) * Add missing class (#5791) ### Development Fixes @@ -64,6 +52,18 @@ ### Documentation + * Improve quickstart docs (#5689) + * Add Jekyll-Post to list of plugins (#5705) + * Add jekyll-numbered-headings (#5688) + * Docs: move permalinks from documents into config (#5544) + * Improve collections docs (#5691) + * Fix #5730: add gcc and make to the list of requirements (#5731) + * Remove instructions to install Jekyll 2 on Windows (#5582) + * Fix example URL inconsistency (#5592) + * Replace backticks within HTML blocks with HTML tags (#5435) + * Add jekyll-migrate-permalink (#5600) + * Fix bad config YAML in collections example (#5587) + * Bring documentation on 'Directory Structure' up-to-date (#5573) * Fixed typo (#5632) * use backticks for Gemfile for consistency since in the next sentence … (#5641) * Update Core team list in the README file (#5643) From 452b0cf29d5c1499f4db37c3a71ed9ff36cdffde Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Tue, 24 Jan 2017 20:59:07 +0100 Subject: [PATCH 191/207] mention documentation improvements --- docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown index cfb1c4fd..db0796df 100644 --- a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown +++ b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown @@ -15,7 +15,7 @@ even bigger fan of [`group_by_exp`](/docs/filters/). 2. Using a custom timezone in Jekyll on Windows? Yeah, sorry that hasn't ever worked properly. We made it possible to accurately [set the timezone using IANA timezone codes](https://jekyllrb.com/docs/windows/#timezone-management). -3. New users should +3. Documentation has been improved, notably on themes, includes and permalinks. And [lots and lots more!](/docs/history/#v3-4-0) From 92c0890fbd0b7261fe2b6a20e3b066871ed41bea Mon Sep 17 00:00:00 2001 From: penny Date: Tue, 24 Jan 2017 21:09:08 +0100 Subject: [PATCH 192/207] let's not use my deadname --- docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown index db0796df..39835d5b 100644 --- a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown +++ b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown @@ -20,7 +20,7 @@ even bigger fan of [`group_by_exp`](/docs/filters/). And [lots and lots more!](/docs/history/#v3-4-0) This update was made possible by the dedicated efforts of our excellent -contributors: Frank Taillandier, Tom Johnson, Ashwin Maroli, Parker Moore, Pat Hawks, alexmalik, Thiago Arrais, Nursen, Eldritch Cheese, XhmikosR, Roger Ogden, Ricardo N Feliciano, Nicolas Hoizey, Max Chadwick, Kenton Hansen, Josh Habdas, jona, Zlatan Vasović, yoostk, Tunghsiao Liu, Tim Banks, Skylar Challand, Rob Crocombe, Purplecarrot, muratayusuke, Longwelwind, Kurt Anderson, kimbaudi, Kevin Wojniak, Ivan Dmitrievsky, Hugo, Florian Thomas, Fabrice Laporte, Don Denton, Dmitrii Evdokimov, Dean Attali, Chayoung You, Chase, brainscript, BlueberryFoxtrot, Alexey Rogachev, Ajay Karwal. +contributors: Frank Taillandier, Tom Johnson, Ashwin Maroli, Parker Moore, Pat Hawks, alexmalik, Thiago Arrais, Nursen, Eldritch Cheese, XhmikosR, Roger Ogden, Ricardo N Feliciano, Nicolas Hoizey, Max Chadwick, Kenton Hansen, Josh Habdas, penny, Zlatan Vasović, yoostk, Tunghsiao Liu, Tim Banks, Skylar Challand, Rob Crocombe, Purplecarrot, muratayusuke, Longwelwind, Kurt Anderson, kimbaudi, Kevin Wojniak, Ivan Dmitrievsky, Hugo, Florian Thomas, Fabrice Laporte, Don Denton, Dmitrii Evdokimov, Dean Attali, Chayoung You, Chase, brainscript, BlueberryFoxtrot, Alexey Rogachev, Ajay Karwal. As always, if you encounter bugs, please do [search the issues]({{ site.repository }}/issues) and [file an issue]({{ site.repository }}/issues/new) if you aren't able to From ecdc8a5bf2436b78eb0f753b38ad2d8aad1348b7 Mon Sep 17 00:00:00 2001 From: Alexey Rogachev Date: Wed, 25 Jan 2017 15:22:26 +0600 Subject: [PATCH 193/207] Fixed inaccuracy in "Built-in permalink styles" docs [skip ci] Must be either: > Rather than typing `permalink: /:categories/:year/:month/:day/:title/`, you can just type `permalink: pretty`. or: > Rather than typing `permalink: /:categories/:year/:month/:day/:title.html`, you can just type `permalink: date`. I guess the former was meant to write because the latter was already mentioned in "Where to configure permalinks" section. --- docs/_docs/permalinks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/permalinks.md b/docs/_docs/permalinks.md index 1bd88021..f0e16770 100644 --- a/docs/_docs/permalinks.md +++ b/docs/_docs/permalinks.md @@ -230,7 +230,7 @@ Although you can specify a custom permalink pattern using [template variables](#
-Rather than typing `permalink: /:categories/:year/:month/:day/:title/`, you can just type `permalink: date`. +Rather than typing `permalink: /:categories/:year/:month/:day/:title/`, you can just type `permalink: pretty`.
Specifying permalinks through the YAML Front Matter
From e56d8092982982622653007d31a742542b32c85a Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 25 Jan 2017 07:29:43 -0500 Subject: [PATCH 194/207] Update history to reflect merge of #5819 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 3595e48c..6d840343 100644 --- a/History.markdown +++ b/History.markdown @@ -96,6 +96,7 @@ * Improve theme docs (#5690) * Add mention of classifier-reborn for LSI (#5811) * Added note about --blank flag (#5802) + * Fixed inaccuracy in "Built-in permalink styles" docs (#5819) ## 3.3.1 / 2016-11-14 From ef8779dbfd3c45d88dcd0e683f5b89ee36da62b7 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Wed, 25 Jan 2017 14:06:27 +0100 Subject: [PATCH 195/207] run codeclimate after success --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 30eb1fc5..66c85eaa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -45,3 +45,6 @@ addons: DA4vsRURfABU0fIhwYkQuZqEcA3d8TL36BZcGEshG6MQ2AmnYsmFiTcxqV5bmlElHEqQuT\ 5SUFXLafgZPBnL0qDwujQcHukID41sE=\ " +# regular test configuration +after_success: + - bundle exec codeclimate-test-reporter From 65a3891ca293818d68b4d3a2c0ea2abf9b71e19f Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Wed, 25 Jan 2017 14:10:19 +0100 Subject: [PATCH 196/207] ought to -> should props @pnn --- docs/_docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/installation.md b/docs/_docs/installation.md index 979279b8..bc5c2515 100644 --- a/docs/_docs/installation.md +++ b/docs/_docs/installation.md @@ -10,7 +10,7 @@ encountered and how we might make the process easier. ### Requirements -Installing Jekyll ought to be straight-forward if all requirements are met. +Installing Jekyll should be straight-forward if all requirements are met. Before you start, make sure your system has the following: - GNU/Linux, Unix, or macOS From 4b19e93f0905e45876d0add85ec65e42d354c1ac Mon Sep 17 00:00:00 2001 From: Joel Meyer-Hamme Date: Thu, 26 Jan 2017 16:02:08 +0000 Subject: [PATCH 197/207] use logger.info Imo running `--lsi` should use `Jekyll.logger.info`, so it can be made `--quiet`. --- lib/jekyll/related_posts.rb | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/lib/jekyll/related_posts.rb b/lib/jekyll/related_posts.rb index cde1742c..3526a73b 100644 --- a/lib/jekyll/related_posts.rb +++ b/lib/jekyll/related_posts.rb @@ -26,15 +26,15 @@ module Jekyll def build_index self.class.lsi ||= begin lsi = ClassifierReborn::LSI.new(:auto_rebuild => false) - display("Populating LSI...") + Jekyll.logger.info("Populating LSI...") site.posts.docs.each do |x| lsi.add_item(x) end - display("Rebuilding index...") + Jekyll.logger.info("Rebuilding index...") lsi.build_index - display("") + Jekyll.logger.info("") lsi end end @@ -46,11 +46,5 @@ module Jekyll def most_recent_posts @most_recent_posts ||= (site.posts.docs.reverse - [post]).first(10) end - - def display(output) - $stdout.print("\n") - $stdout.print(Jekyll.logger.formatted_topic(output)) - $stdout.flush - end end end From 4a781f23f3c0e3c02bbf6bdfffd726f6d01da453 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Thu, 26 Jan 2017 15:52:26 -0500 Subject: [PATCH 198/207] Update history to reflect merge of #5822 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 6d840343..30372e1c 100644 --- a/History.markdown +++ b/History.markdown @@ -19,6 +19,7 @@ * include: fix 'no implicit conversion of nil to String' (#5750) * Don't include the theme's includes_path if it is nil. (#5780) * test double slash when input = '/' (#5542) + * use logger.info for related posts (#5822) ### Site Enhancements From f0dcc9415b2a1a1a61143a6935ba616968e39475 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Thu, 26 Jan 2017 15:53:46 -0500 Subject: [PATCH 199/207] Update history to reflect merge of #5798 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 30372e1c..1348af78 100644 --- a/History.markdown +++ b/History.markdown @@ -64,6 +64,7 @@ * Bump htmlproofer (#5781) * Bump rubies we test against (#5784) * Bump rdoc to v5.0 (#5797) + * Bump codeclimate-test-reporter to v1.0.5 (#5798) ### Documentation From 7c1aae3e303be7bc25aa2ac08961bdc282d3a719 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Thu, 26 Jan 2017 16:24:45 -0500 Subject: [PATCH 200/207] Update history on website to reflect new things merged --- docs/_docs/history.md | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/docs/_docs/history.md b/docs/_docs/history.md index a31266bc..e400efd5 100644 --- a/docs/_docs/history.md +++ b/docs/_docs/history.md @@ -12,11 +12,11 @@ note: This file is autogenerated. Edit /History.markdown instead. - Add connector param to `array_to_sentence_string` filter ([#5597]({{ site.repository }}/issues/5597)) - Adds `group_by_exp` filter ([#5513]({{ site.repository }}/issues/5513)) -- Use the current year for the LICENSE of theme ([#5712]({{ site.repository }}/issues/5712)) -- Update License ([#5713]({{ site.repository }}/issues/5713)) - Use Addressable instead of URI to decode ([#5726]({{ site.repository }}/issues/5726)) - throw IncludeTagError if error occurs in included file ([#5767]({{ site.repository }}/issues/5767)) - Write Jekyll::Utils::Exec.run for running shell commands. ([#5640]({{ site.repository }}/issues/5640)) +- Use the current year for the LICENSE of theme ([#5712]({{ site.repository }}/issues/5712)) +- Update License ([#5713]({{ site.repository }}/issues/5713)) ### Bug Fixes {: #bug-fixes-v3-4-0} @@ -28,29 +28,19 @@ note: This file is autogenerated. Edit /History.markdown instead. - include: fix 'no implicit conversion of nil to String' ([#5750]({{ site.repository }}/issues/5750)) - Don't include the theme's includes_path if it is nil. ([#5780]({{ site.repository }}/issues/5780)) - test double slash when input = '/' ([#5542]({{ site.repository }}/issues/5542)) +- use logger.info for related posts ([#5822]({{ site.repository }}/issues/5822)) ### Site Enhancements {: #site-enhancements-v3-4-0} -- Remove instructions to install Jekyll 2 on Windows ([#5582]({{ site.repository }}/issues/5582)) -- Fix example URL inconsistency ([#5592]({{ site.repository }}/issues/5592)) -- Replace backticks within HTML blocks with HTML tags ([#5435]({{ site.repository }}/issues/5435)) -- Add jekyll-migrate-permalink ([#5600]({{ site.repository }}/issues/5600)) -- Fix bad config YAML in collections example ([#5587]({{ site.repository }}/issues/5587)) -- Bring documentation on 'Directory Structure' up-to-date ([#5573]({{ site.repository }}/issues/5573)) - Use only the used Font Awesome icons. ([#5530]({{ site.repository }}/issues/5530)) - Switch to `https` when possible. ([#5611]({{ site.repository }}/issues/5611)) - Update `_font-awesome.scss` to move .woff file before .ttf ([#5614]({{ site.repository }}/issues/5614)) - Update documentation on updating FontAwesome Iconset ([#5655]({{ site.repository }}/issues/5655)) -- Improve quickstart docs ([#5689]({{ site.repository }}/issues/5689)) -- Add Jekyll-Post to list of plugins ([#5705]({{ site.repository }}/issues/5705)) -- Add jekyll-numbered-headings ([#5688]({{ site.repository }}/issues/5688)) -- Docs: move permalinks from documents into config ([#5544]({{ site.repository }}/issues/5544)) -- Sort gems in `docs/_config.yml` ([#5746]({{ site.repository }}/issues/5746)) - [site] Use defaults for docs and news-items ([#5744]({{ site.repository }}/issues/5744)) -- Improve collections docs ([#5691]({{ site.repository }}/issues/5691)) -- Fix [#5730]({{ site.repository }}/issues/5730): add gcc and make to the list of requirements ([#5731]({{ site.repository }}/issues/5731)) +- Sort gems in `docs/_config.yml` ([#5746]({{ site.repository }}/issues/5746)) - Add missing class ([#5791]({{ site.repository }}/issues/5791)) +- Improve template docs ([#5694]({{ site.repository }}/issues/5694)) ### Development Fixes {: #development-fixes-v3-4-0} @@ -72,9 +62,23 @@ note: This file is autogenerated. Edit /History.markdown instead. - Use latest jemoji gem ([#5782]({{ site.repository }}/issues/5782)) - Bump htmlproofer ([#5781]({{ site.repository }}/issues/5781)) - Bump rubies we test against ([#5784]({{ site.repository }}/issues/5784)) +- Bump rdoc to v5.0 ([#5797]({{ site.repository }}/issues/5797)) +- Bump codeclimate-test-reporter to v1.0.5 ([#5798]({{ site.repository }}/issues/5798)) ### Documentation +- Improve quickstart docs ([#5689]({{ site.repository }}/issues/5689)) +- Add Jekyll-Post to list of plugins ([#5705]({{ site.repository }}/issues/5705)) +- Add jekyll-numbered-headings ([#5688]({{ site.repository }}/issues/5688)) +- Docs: move permalinks from documents into config ([#5544]({{ site.repository }}/issues/5544)) +- Improve collections docs ([#5691]({{ site.repository }}/issues/5691)) +- Fix [#5730]({{ site.repository }}/issues/5730): add gcc and make to the list of requirements ([#5731]({{ site.repository }}/issues/5731)) +- Remove instructions to install Jekyll 2 on Windows ([#5582]({{ site.repository }}/issues/5582)) +- Fix example URL inconsistency ([#5592]({{ site.repository }}/issues/5592)) +- Replace backticks within HTML blocks with HTML tags ([#5435]({{ site.repository }}/issues/5435)) +- Add jekyll-migrate-permalink ([#5600]({{ site.repository }}/issues/5600)) +- Fix bad config YAML in collections example ([#5587]({{ site.repository }}/issues/5587)) +- Bring documentation on 'Directory Structure' up-to-date ([#5573]({{ site.repository }}/issues/5573)) - Fixed typo ([#5632]({{ site.repository }}/issues/5632)) - use backticks for Gemfile for consistency since in the next sentence … ([#5641]({{ site.repository }}/issues/5641)) - Update Core team list in the README file ([#5643]({{ site.repository }}/issues/5643)) @@ -97,6 +101,15 @@ note: This file is autogenerated. Edit /History.markdown instead. - Fix a markdown link to look properly on the web ([#5769]({{ site.repository }}/issues/5769)) - [docs] Info about the help command usage ([#5312]({{ site.repository }}/issues/5312)) - Add missing merge labels for jekyllbot ([#5753]({{ site.repository }}/issues/5753)) +- Fix broken links in documentation ([#5736]({{ site.repository }}/issues/5736)) +- Docs: add `match_regex` and `replace_regex` filters ([#5799]({{ site.repository }}/issues/5799)) +- Got that diaper money? ([#5810]({{ site.repository }}/issues/5810)) +- Sort content by popularity using Google Analytics ([#5812]({{ site.repository }}/issues/5812)) +- Rework CI doc to include multiple providers. ([#5815]({{ site.repository }}/issues/5815)) +- Improve theme docs ([#5690]({{ site.repository }}/issues/5690)) +- Add mention of classifier-reborn for LSI ([#5811]({{ site.repository }}/issues/5811)) +- Added note about --blank flag ([#5802]({{ site.repository }}/issues/5802)) +- Fixed inaccuracy in "Built-in permalink styles" docs ([#5819]({{ site.repository }}/issues/5819)) ## 3.3.1 / 2016-11-14 From 6d34cf18fbf1e66013577d33136a72cafaa68fe4 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Thu, 26 Jan 2017 16:24:53 -0500 Subject: [PATCH 201/207] New list of contributors --- docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown index 39835d5b..58275063 100644 --- a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown +++ b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown @@ -20,7 +20,15 @@ even bigger fan of [`group_by_exp`](/docs/filters/). And [lots and lots more!](/docs/history/#v3-4-0) This update was made possible by the dedicated efforts of our excellent -contributors: Frank Taillandier, Tom Johnson, Ashwin Maroli, Parker Moore, Pat Hawks, alexmalik, Thiago Arrais, Nursen, Eldritch Cheese, XhmikosR, Roger Ogden, Ricardo N Feliciano, Nicolas Hoizey, Max Chadwick, Kenton Hansen, Josh Habdas, penny, Zlatan Vasović, yoostk, Tunghsiao Liu, Tim Banks, Skylar Challand, Rob Crocombe, Purplecarrot, muratayusuke, Longwelwind, Kurt Anderson, kimbaudi, Kevin Wojniak, Ivan Dmitrievsky, Hugo, Florian Thomas, Fabrice Laporte, Don Denton, Dmitrii Evdokimov, Dean Attali, Chayoung You, Chase, brainscript, BlueberryFoxtrot, Alexey Rogachev, Ajay Karwal. +contributors: Ajay Karwal, Alexey Rogachev, Ashwin Maroli, +BlueberryFoxtrot, Chase, Chayoung You, Dean Attali, Dmitrii Evdokimov, Don +Denton, Eldritch Cheese, Fabrice Laporte, Florian Thomas, Frank +Taillandier, Hugo, Ivan Dmitrievsky, Joel Meyer-Hamme, Josh Habdas, Kenton +Hansen, Kevin Wojniak, Kurt Anderson, Longwelwind, Max Chadwick, Nicolas +Hoizey, Nursen, Parker Moore, Pat Hawks, Purplecarrot, Ricardo N Feliciano, +Rob Crocombe, Roger Ogden, Skylar Challand, Thiago Arrais, Tim Banks, Tom +Johnson, Tunghsiao Liu, XhmikosR, Zlatan Vasović, alexmalik, brainscript, +jona, kimbaudi, muratayusuke, penny, and yoostk. As always, if you encounter bugs, please do [search the issues]({{ site.repository }}/issues) and [file an issue]({{ site.repository }}/issues/new) if you aren't able to From eca4b94c3a387e3b2232030164701f31be5c4752 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Thu, 26 Jan 2017 16:26:39 -0500 Subject: [PATCH 202/207] Remove jona as contributor. --- docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown index 58275063..cb2c6f87 100644 --- a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown +++ b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown @@ -28,7 +28,7 @@ Hansen, Kevin Wojniak, Kurt Anderson, Longwelwind, Max Chadwick, Nicolas Hoizey, Nursen, Parker Moore, Pat Hawks, Purplecarrot, Ricardo N Feliciano, Rob Crocombe, Roger Ogden, Skylar Challand, Thiago Arrais, Tim Banks, Tom Johnson, Tunghsiao Liu, XhmikosR, Zlatan Vasović, alexmalik, brainscript, -jona, kimbaudi, muratayusuke, penny, and yoostk. +kimbaudi, muratayusuke, penny, and yoostk. As always, if you encounter bugs, please do [search the issues]({{ site.repository }}/issues) and [file an issue]({{ site.repository }}/issues/new) if you aren't able to From 5183bde7b88fa95b6816a9ca87a75b6d27ac6176 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 27 Jan 2017 11:05:55 -0500 Subject: [PATCH 203/207] Update release date of 3.4.0 --- History.markdown | 2 +- docs/_docs/history.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/History.markdown b/History.markdown index 2470b67b..ab9cd2e6 100644 --- a/History.markdown +++ b/History.markdown @@ -1,4 +1,4 @@ -## 3.4.0 / 2016-01-20 +## 3.4.0 / 2016-01-27 ### Minor Enhancements diff --git a/docs/_docs/history.md b/docs/_docs/history.md index e400efd5..2ddaf67a 100644 --- a/docs/_docs/history.md +++ b/docs/_docs/history.md @@ -4,7 +4,7 @@ permalink: "/docs/history/" note: This file is autogenerated. Edit /History.markdown instead. --- -## 3.4.0 / 2016-01-20 +## 3.4.0 / 2016-01-27 {: #v3-4-0} ### Minor Enhancements From c01b7e4a4a70ee4df498398585bce4e6f59fb04a Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 27 Jan 2017 11:10:55 -0500 Subject: [PATCH 205/207] Update history to reflect merge of #4362 [ci skip] --- History.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/History.markdown b/History.markdown index ab9cd2e6..d286be24 100644 --- a/History.markdown +++ b/History.markdown @@ -1,3 +1,9 @@ +## HEAD + +### Minor Enhancements + + * Upgrade to Liquid v4 (#4362) + ## 3.4.0 / 2016-01-27 ### Minor Enhancements From 966800fb1f4371729eb0ed8b016efa0a084e7318 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 27 Jan 2017 11:37:05 -0500 Subject: [PATCH 206/207] Update history to reflect merge of #5817 [ci skip] --- History.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/History.markdown b/History.markdown index d286be24..2958d74e 100644 --- a/History.markdown +++ b/History.markdown @@ -4,6 +4,10 @@ * Upgrade to Liquid v4 (#4362) +### Documentation + + * Install troubleshooting on Ubuntu (#5817) + ## 3.4.0 / 2016-01-27 ### Minor Enhancements From f6dffecab7aad6497b33fb4a954f83a90d234ea9 Mon Sep 17 00:00:00 2001 From: Frank Taillandier Date: Fri, 27 Jan 2017 20:51:56 +0100 Subject: [PATCH 207/207] fix broken links in release post --- docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown index cb2c6f87..37edb7bc 100644 --- a/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown +++ b/docs/_posts/2017-01-18-jekyll-3-4-0-released.markdown @@ -10,8 +10,8 @@ Hey there! We have a quick update of Jekyll for you to enjoy this January. Packed full of bug fixes as usual, thanks to the tireless efforts of our exceptional Jekyll community. Three changes to call out: -1. If you're a big fan of [`where_by_exp`](/docs/filters/), you'll be an -even bigger fan of [`group_by_exp`](/docs/filters/). +1. If you're a big fan of [`where_by_exp`](/docs/templates/#filters), you'll be an +even bigger fan of [`group_by_exp`](/docs/templates/#filters). 2. Using a custom timezone in Jekyll on Windows? Yeah, sorry that hasn't ever worked properly. We made it possible to accurately [set the timezone using IANA timezone codes](https://jekyllrb.com/docs/windows/#timezone-management).