Merge branch 'master' into themes

This commit is contained in:
Ben Balter 2016-03-11 14:44:44 -05:00
commit e3c71ea407
18 changed files with 305 additions and 213 deletions

View File

@ -1,41 +1,108 @@
# Contributing # Contributing to Jekyll
So you've got an awesome idea to throw into Jekyll. Great! Please keep the Hi there! Interested in contributing to Jekyll? We'd love your help. Jekyll is an open source project, built one contribution at a time by users like you.
following in mind:
* **Use https://talk.jekyllrb.com for non-technical or indirect Jekyll questions that are not bugs.** ## Where to get help or report a problem
* **Contributions will not be accepted without tests or necessary documentation updates.**
* If you're creating a small fix or patch to an existing feature, just a simple
test will do. Please stay in the confines of the current test suite and use
[Shoulda](https://github.com/thoughtbot/shoulda/tree/master) and
[RSpec-Mocks](https://github.com/rspec/rspec-mocks).
* If it's a brand new feature, make sure to create a new
[Cucumber](https://github.com/cucumber/cucumber/) feature and reuse steps
where appropriate. Also, whipping up some documentation in your fork's `site`
would be appreciated, and once merged it will be transferred over to the main
`site`, jekyllrb.com.
* If your contribution changes any Jekyll behavior, make sure to update the
documentation. It lives in `site/_docs`. If the docs are missing information,
please feel free to add it in. Great docs make a great project!
* Please follow the [GitHub Ruby Styleguide](https://github.com/styleguide/ruby)
when modifying Ruby code.
* Please do your best to submit **small pull requests**. The easier the proposed
change is to review, the more likely it will be merged.
* When submitting a pull request, please make judicious use of the pull request
body. A description of what changes were made, the motivations behind the
changes and [any tasks completed or left to complete](http://git.io/gfm-tasks)
will also speed up review time.
Test Dependencies * If you have a question about using Jekyll, start a discussion on [Jekyll Talk](https://talk.jekyllrb.com).
----------------- * If you think you've found a bug within a Jekyll plugin, open an issue in that plugin's repository.
* If you think you've found a bug within Jekyll itself, [open an issue](https://github.com/jekyll/jekyll/issues/new)
* More resources are listed on our [Help page](https://jekyllrb.com/help/)
To run the test suite and build the gem you'll need to install Jekyll's ## Ways to contribute
dependencies. Simply run this command to get all setup:
Whether you're a developer, a designer, or just a Jekyll devotee, there are lots of ways to contribute. Here's a few ideas:
* [Install Jekyll on your computer](https://jekyllrb.com/docs/installation/) and kick the tires. Does it work? Does it do what you'd expect? If not, [open an issue](https://github.com/jekyll/jekyll/issues/new) and let us know.
* Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a work around? Do you have a suggestion for how the feature could be better?
* Read through [the documentation](http://jekyllrb.com/docs/home/), and click the "improve this page" button, any time you see something confusing, or have a suggestion for something that could be improved.
* Browse through [the Jekyll discussion forum](https://talk.jekyllrb.com/), and lend a hand answering questions. There's a good chance you've already experienced what another user is experiencing.
* Find [an open issue](https://github.com/jekyll/jekyll/issues) (especially [those labeled `help-wanted`](https://github.com/jekyll/jekyll/issues?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted)), and submit a proposed fix. If it's your first pull request, we promise we won't bite, and are glad to answer any questions.
* Help evaluate [open pull requests](https://github.com/jekyll/jekyll/pulls), by testing the changes locally and reviewing what's proposed.
## Submitting a pull request
### Pull requests generally
* The smaller the proposed change, the better. If you'd like to propose two unrelated changes, submit two pull requests.
* The more information, the better. Make judicious use of the pull request body. Describe what changes were made, why you made them, and what impact they will have for users.
* Pull request are easy and fun. If this is your first pull request, it may help to [understand GitHub Flow](https://guides.github.com/introduction/flow/)
* If you're submitting a code contribution, be sure to read the [code contributions](#code-contributions) section below.
### Submitting a pull request via github.com
Many small changes can be made entirely through the github.com web interface.
1. Navigate to the file within [`jekyll/jekyll`](https://github.com/jekyll/jekyll) that you'd like to edit
2. Click the pencil icon in the top right corner to edit the file
3. Make your proposed changes
4. Click "Propose file change"
5. Click "Create pull request"
6. Add a descriptive title and detailed description for your proposed change. The more information the better.
7. Click "Create pull request"
That's it! You'll be automatically subscribed to receive updates as others review your proposed change and provide feedback.
### Submitting a pull request via Git command line
1. Fork the project by clicking "Fork" in the top right corner of [`jekyll/jekyll`](https://github.com/jekyll/jekyll)
2. Clone the repository lcoally `git clone https://github.com/<you-username>/jekyll`
3. Create a new, descriptively named branch to contain your change ( `git checkout -b my-awesome-feature` ).
4. Hack away, add tests. Not necessarily in that order.
5. Make sure everything still passes by running `script/cibuild` (see [the tests section](#running-tests-locally) below)
6. Push the branch up ( `git push origin my-awesome-feature` ).
7. Create a pull request by visiting https://github.com/<your-username>/jekyll/ and following the instructions at the top of the screen.
## Proposing updates to the documentation
We want the Jekyll documentation to be the best it can be. We've open-sourced our docs and we welcome any pull requests if you find it lacking.
### 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.
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](http://jekyllrb.com/docs/plugins/#available-plugins), please submit a pull request modifying the [plugins page source file](site/_docs/plugins.md) by adding a link to your plugin under the proper subheading depending upon its type.
## Code Contributions
Interesting in submitting a pull request? Awesome. Read on. There's a few common gotchas that we'd love to help you avoid.
### Tests and documentation
Any time you propose a code change, you should also include updates to the documentation and tests within the same pull request.
#### 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.
#### Tests
* If you're creating a small fix or patch to an existing feature, a simple test if more than enough. You can usually copy/paste from an existing example in the `tests` folder, but if you need to can find out about our tests suites [Shoulda](https://github.com/thoughtbot/shoulda/tree/master) and [RSpec-Mocks](https://github.com/rspec/rspec-mocks).
* If it's a brand new feature, create a new [Cucumber](https://github.com/cucumber/cucumber/) feature, reusing existing steps where appropriate.
### Code contributions generally
* Jekyll follows the [GitHub Ruby Styleguide](https://github.com/styleguide/ruby).
* Don't bump the Gem version in your pull request (if you don't know what that means, you probably didn't).
## Running tests locally
### Test Dependencies
To run the test suite and build the gem you'll need to install Jekyll's dependencies by running the following command:
$ script/bootstrap $ script/bootstrap
Before you start, run the tests and make sure that they pass (to confirm your Before you make any changes, run the tests and make sure that they pass (to confirm your environment is configured properly):
environment is configured properly):
$ script/cibuild $ script/cibuild
@ -50,56 +117,6 @@ If you are only updating a `.feature` file, you can use the command:
Both `script/test` and `script/cucumber` can be run without arguments to Both `script/test` and `script/cucumber` can be run without arguments to
run its entire respective suite. run its entire respective suite.
Workflow ## A thank you
--------
Here's the most direct way to get your work merged into the project: Thanks! Hacking on Jekyll should be fun. If you find any of this hard to figure out, let us know so we can improve our process or documentation!
* [Fork](https://github.com/jekyll/jekyll/fork) the project.
* Clone down your fork ( `git clone git@github.com:[username]/jekyll.git` ).
* Create a topic branch to contain your change ( `git checkout -b my_awesome_feature` ).
* Hack away, add tests. Not necessarily in that order.
* Make sure everything still passes by running `script/cibuild`.
* If necessary, rebase your commits into logical chunks, without errors.
* Push the branch up ( `git push origin my_awesome_feature` ).
* Create a pull request against jekyll/jekyll and describe what your change
does and the why you think it should be merged.
Updating Documentation
----------------------
We want the Jekyll documentation to be the best it can be. We've
open-sourced our docs and we welcome any pull requests if you find it
lacking.
You can find the documentation for jekyllrb.com in the
[site](https://github.com/jekyll/jekyll/tree/master/site) directory of
Jekyll's repo on GitHub.com.
All documentation pull requests should be directed at `master`. Pull
requests directed at another branch will not be accepted.
The [Jekyll wiki](https://github.com/jekyll/jekyll/wiki) on GitHub
can be freely updated without a pull request as all GitHub users have access.
If you want to add your plugin to the
[list of plugins](http://jekyllrb.com/docs/plugins/#available-plugins),
please submit a pull request modifying the
[plugins page source file](site/_docs/plugins.md) by adding a
link to your plugin under the proper subheading depending upon its type.
Gotchas
-------
* Please do not bump the gem version in your pull requests.
* Try to keep your patch(es) based from the latest commit on jekyll/jekyll.
The easier it is to apply your work, the less work the maintainers have to do,
which is always a good thing.
* Please don't tag your GitHub issue with [fix], [feature], etc. The maintainers
actively read the issues and will label it once they come across it.
Finally...
----------
Thanks! Hacking on Jekyll should be fun. If you find any of this hard to figure
out, let us know so we can improve our process or documentation!

View File

@ -6,6 +6,10 @@
* Allow collections to have documents that have no file extension (#4545) * Allow collections to have documents that have no file extension (#4545)
* Add size property to group_by result (#4557) * Add size property to group_by result (#4557)
* Site Template: Removed unnecessary nesting from `_base.scss` (#4637) * Site Template: Removed unnecessary nesting from `_base.scss` (#4637)
* Adding a debug log statment for skipped future documents. (#4558)
* Site Template: Changed main `<div>` to `<main>` and added accessibility info (#4636)
* Add array support to `where` filter (#4555)
* 'jekyll clean': also remove .sass-cache (#4652)
### Bug Fixes ### Bug Fixes
@ -21,6 +25,8 @@
* Add project maintainer profile links (#4591) * Add project maintainer profile links (#4591)
* Fix state leakage in Kramdown test (#4618) * Fix state leakage in Kramdown test (#4618)
* Unify method for copying special files from repo to site (#4601) * Unify method for copying special files from repo to site (#4601)
* Refresh the contributing file (#4596)
* change smartify doc from copy/paste of mardownify doc (#4653)
### Site Enhancements ### Site Enhancements
@ -30,6 +36,10 @@
* Add 'view source' entry (#4602) * Add 'view source' entry (#4602)
* Add jekyll-video-embed to list of third-party plugins. (#4621) * Add jekyll-video-embed to list of third-party plugins. (#4621)
* Adding Aerobatic to list of deployment options (#4630) * Adding Aerobatic to list of deployment options (#4630)
* Update documentation: HTMLProofer CLI command (#4641)
* Document that subdirectories of `_posts` are no longer categories (#4639)
* Update continuous-integration docs with sudo: false information (#4628)
* Blog post on refreshed contributing file and new affinity teams (#4645)
## 3.1.2 / 2016-02-19 ## 3.1.2 / 2016-02-19
@ -992,7 +1002,7 @@
* Patch a couple show-stopping security vulnerabilities (#1946) * Patch a couple show-stopping security vulnerabilities (#1946)
* Sanitize paths uniformly, in a Windows-friendly way (#2065, #2109) * Sanitize paths uniformly, in a Windows-friendly way (#2065, #2109)
* Update gem build steps to work correctly on Windows (#2118) * Update gem build steps to work correctly on Windows (#2118)
* Remove obsolete `normalize_options` method call from `bin/jekyll` (#2121). * Remove obsolete `normalize_options` method call from `bin/jekyll` (#2121)
* Remove `+` characters from Pygments lexer names when adding as a CSS class (#994) * Remove `+` characters from Pygments lexer names when adding as a CSS class (#994)
* Remove some code that caused Ruby interpreter warnings (#2178) * Remove some code that caused Ruby interpreter warnings (#2178)
* Only strip the drive name if it begins the string (#2175) * Only strip the drive name if it begins the string (#2175)
@ -1858,7 +1868,7 @@
* Bug Fixes * Bug Fixes
* Fix pagination % 0 bug (#78) * Fix pagination % 0 bug (#78)
* Ensure all posts are processed first (#71) ## NOTE * Ensure all posts are processed first (#71)
* After this point I will no longer be giving credit in the history; that is what the commit log is for. * After this point I will no longer be giving credit in the history; that is what the commit log is for.
## 0.5.4 / 2009-08-23 ## 0.5.4 / 2009-08-23

View File

@ -87,16 +87,20 @@ def converted_history(markdown)
normalize_bullets(markdown))))) normalize_bullets(markdown)))))
end end
def siteify_file(file, front_matter = {}) 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.exists?(file)
title = File.read(file)[/\A# (.*)$/, 1] title = begin
File.read(file).match(/\A# (.*)$/)[1]
rescue
File.basename(file, ".*").downcase.capitalize
end
slug = File.basename(file, ".markdown").downcase slug = File.basename(file, ".markdown").downcase
front_matter = front_matter.merge({ front_matter = {
"title" => title, "title" => title,
"layout" => "docs", "layout" => "docs",
"permalink" => "/docs/#{slug}/", "permalink" => "/docs/#{slug}/",
"note" => "This file is autogenerated. Edit /#{file} instead." "note" => "This file is autogenerated. Edit /#{file} instead."
}) }.merge(overrides_front_matter)
contents = "#{front_matter.to_yaml}---\n\n#{content_for(file)}" contents = "#{front_matter.to_yaml}---\n\n#{content_for(file)}"
File.write("site/_docs/#{slug}.md", contents) File.write("site/_docs/#{slug}.md", contents)
end end
@ -107,7 +111,7 @@ def content_for(file)
when "History.markdown" when "History.markdown"
converted_history(contents) converted_history(contents)
else else
contents.gsub!(/\A# .*\n\n?/, "") contents.gsub(/\A# .*\n\n?/, "")
end end
end end

View File

@ -19,21 +19,19 @@ module Jekyll
options = configuration_from_options(options) options = configuration_from_options(options)
destination = options['destination'] destination = options['destination']
metadata_file = File.join(options['source'], '.jekyll-metadata') metadata_file = File.join(options['source'], '.jekyll-metadata')
sass_cache = File.join(options['source'], '.sass-cache')
if File.directory? destination remove(destination, checker_func: :directory?)
Jekyll.logger.info "Cleaning #{destination}..." remove(metadata_file, checker_func: :file?)
FileUtils.rm_rf(destination) remove(sass_cache, checker_func: :directory?)
Jekyll.logger.info "", "done." end
else
Jekyll.logger.info "Nothing to do for #{destination}."
end
if File.file? metadata_file def remove(filename, checker_func: :file?)
Jekyll.logger.info "Removing #{metadata_file}..." if File.public_send(checker_func, filename)
FileUtils.rm_rf(metadata_file) Jekyll.logger.info "Cleaner:", "Removing #{filename}..."
Jekyll.logger.info "", "done." FileUtils.rm_rf(filename)
else else
Jekyll.logger.info "Nothing to do for #{metadata_file}." Jekyll.logger.info "Cleaner:", "Nothing to do for #{filename}."
end end
end end
end end

View File

@ -15,11 +15,11 @@ module Jekyll
converter.convert(input) converter.convert(input)
end end
# Convert a Markdown string into HTML output. # Convert quotes into smart quotes.
# #
# input - The Markdown String to convert. # input - The String to convert.
# #
# Returns the HTML formatted String. # Returns the smart-quotified String.
def smartify(input) def smartify(input)
site = @context.registers[:site] site = @context.registers[:site]
converter = site.find_converter_instance(Jekyll::Converters::SmartyPants) converter = site.find_converter_instance(Jekyll::Converters::SmartyPants)
@ -222,7 +222,7 @@ module Jekyll
def where(input, property, value) def where(input, property, value)
return input unless input.is_a?(Enumerable) return input unless input.is_a?(Enumerable)
input = input.values if input.is_a?(Hash) input = input.values if input.is_a?(Hash)
input.select { |object| item_property(object, property).to_s == value.to_s } input.select { |object| Array(item_property(object, property)).map(&:to_s).include?(value.to_s) }
end end
# Sort an array of objects # Sort an array of objects

View File

@ -8,14 +8,14 @@ module Jekyll
can_be_published?(thing) && !hidden_in_the_future?(thing) can_be_published?(thing) && !hidden_in_the_future?(thing)
end end
def hidden_in_the_future?(thing)
thing.respond_to?(:date) && !@site.future && thing.date.to_i > @site.time.to_i
end
private private
def can_be_published?(thing) def can_be_published?(thing)
thing.data.fetch('published', true) || @site.unpublished thing.data.fetch('published', true) || @site.unpublished
end end
def hidden_in_the_future?(thing)
thing.respond_to?(:date) && !@site.future && thing.date.to_i > @site.time.to_i
end
end end
end end

View File

@ -35,7 +35,11 @@ module Jekyll
read_content(dir, magic_dir, matcher).tap do |docs| read_content(dir, magic_dir, matcher).tap do |docs|
docs.each(&:read) docs.each(&:read)
end.select do |doc| end.select do |doc|
site.publisher.publish?(doc) site.publisher.publish?(doc).tap do |will_publish|
if !will_publish && site.publisher.hidden_in_the_future?(doc)
Jekyll.logger.debug "Skipping:", "#{doc.relative_path} has a future date"
end
end
end end
end end

View File

@ -7,11 +7,11 @@
{% include header.html %} {% include header.html %}
<div class="page-content"> <main class="page-content" aria-label="Content">
<div class="wrapper"> <div class="wrapper">
{{ content }} {{ content }}
</div> </div>
</div> </main>
{% include footer.html %} {% include footer.html %}

View File

@ -117,7 +117,7 @@ namespace :site do
desc "Copy the contributing file" desc "Copy the contributing file"
task :contributing do task :contributing do
siteify_file('.github/CONTRIBUTING.markdown') siteify_file('.github/CONTRIBUTING.markdown', "title" => "Contributing")
end end
desc "Write the site latest_version.txt file" desc "Write the site latest_version.txt file"

View File

@ -4,13 +4,6 @@ title: Collections
permalink: /docs/collections/ permalink: /docs/collections/
--- ---
<div class="note warning">
<h5>Collections support is unstable and may change</h5>
<p>
This is an experimental feature and the API may change until the feature stabilizes.
</p>
</div>
Not everything is a post or a page. Maybe you want to document the various 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 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 conference. Collections allow you to define a new type of document that behave

View File

@ -1,10 +1,10 @@
--- ---
redirect_from: "/conduct/index.html"
editable: false
title: Code of Conduct title: Code of Conduct
layout: docs layout: docs
permalink: "/docs/conduct/" permalink: "/docs/conduct/"
note: This file is autogenerated. Edit /CONDUCT.markdown instead. note: This file is autogenerated. Edit /CONDUCT.markdown instead.
redirect_from: "/conduct/index.html"
editable: false
--- ---
As contributors and maintainers of this project, and in the interest of As contributors and maintainers of this project, and in the interest of

View File

@ -31,7 +31,7 @@ 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][2].
This tool checks your resulting site to ensure all links and images exist. This tool checks your resulting site to ensure all links and images exist.
Utilize it either with the convenient `htmlproof` command-line executable, Utilize it either with the convenient `htmlproofer` command-line executable,
or write a Ruby script which utilizes the gem. or write a Ruby script which utilizes the gem.
Save the commands you want to run and succeed in a file: `./script/cibuild` Save the commands you want to run and succeed in a file: `./script/cibuild`
@ -43,17 +43,17 @@ Save the commands you want to run and succeed in a file: `./script/cibuild`
set -e # halt script on error set -e # halt script on error
bundle exec jekyll build bundle exec jekyll build
bundle exec htmlproof ./_site bundle exec htmlproofer ./_site
{% endhighlight %} {% endhighlight %}
Some options can be specified via command-line switches. Check out the Some options can be specified via command-line switches. Check out the
`html-proofer` README for more information about these switches, or run `html-proofer` README for more information about these switches, or run
`htmlproof --help` locally. `htmlproofer --help` locally.
For example to avoid testing external sites, use this command: For example to avoid testing external sites, use this command:
{% highlight bash %} {% highlight bash %}
$ bundle exec htmlproof ./_site --disable-external $ bundle exec htmlproofer ./_site --disable-external
{% endhighlight %} {% endhighlight %}
### The HTML Proofer Library ### The HTML Proofer Library
@ -112,6 +112,8 @@ branches:
env: env:
global: global:
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer - 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
{% endhighlight %} {% endhighlight %}
Ok, now for an explanation of each line: Ok, now for an explanation of each line:
@ -154,7 +156,7 @@ incantation here directly:
{% highlight yaml %} {% highlight yaml %}
install: gem install jekyll html-proofer install: gem install jekyll html-proofer
script: jekyll build && htmlproof ./_site script: jekyll build && htmlproofer ./_site
{% endhighlight %} {% endhighlight %}
The `script` directive can be absolutely any valid shell command. The `script` directive can be absolutely any valid shell command.
@ -202,6 +204,16 @@ environment variable `NOKOGIRI_USE_SYSTEM_LIBRARIES` to `true`.
exclude: [vendor] exclude: [vendor]
{% endhighlight %} {% endhighlight %}
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`.
{% highlight yaml %}
sudo: false
{% endhighlight %}
### Troubleshooting ### Troubleshooting
**Travis error:** *"You are trying to install in deployment mode after changing **Travis error:** *"You are trying to install in deployment mode after changing

View File

@ -5,42 +5,109 @@ permalink: "/docs/contributing/"
note: This file is autogenerated. Edit /.github/CONTRIBUTING.markdown instead. note: This file is autogenerated. Edit /.github/CONTRIBUTING.markdown instead.
--- ---
So you've got an awesome idea to throw into Jekyll. Great! Please keep the Hi there! Interested in contributing to Jekyll? We'd love your help. Jekyll is an open source project, built one contribution at a time by users like you.
following in mind:
* **Use https://talk.jekyllrb.com for non-technical or indirect Jekyll questions that are not bugs.** ## Where to get help or report a problem
* **Contributions will not be accepted without tests or necessary documentation updates.**
* If you're creating a small fix or patch to an existing feature, just a simple
test will do. Please stay in the confines of the current test suite and use
[Shoulda](https://github.com/thoughtbot/shoulda/tree/master) and
[RSpec-Mocks](https://github.com/rspec/rspec-mocks).
* If it's a brand new feature, make sure to create a new
[Cucumber](https://github.com/cucumber/cucumber/) feature and reuse steps
where appropriate. Also, whipping up some documentation in your fork's `site`
would be appreciated, and once merged it will be transferred over to the main
`site`, jekyllrb.com.
* If your contribution changes any Jekyll behavior, make sure to update the
documentation. It lives in `site/_docs`. If the docs are missing information,
please feel free to add it in. Great docs make a great project!
* Please follow the [GitHub Ruby Styleguide](https://github.com/styleguide/ruby)
when modifying Ruby code.
* Please do your best to submit **small pull requests**. The easier the proposed
change is to review, the more likely it will be merged.
* When submitting a pull request, please make judicious use of the pull request
body. A description of what changes were made, the motivations behind the
changes and [any tasks completed or left to complete](http://git.io/gfm-tasks)
will also speed up review time.
Test Dependencies * If you have a question about using Jekyll, start a discussion on [Jekyll Talk](https://talk.jekyllrb.com).
----------------- * If you think you've found a bug within a Jekyll plugin, open an issue in that plugin's repository.
* If you think you've found a bug within Jekyll itself, [open an issue](https://github.com/jekyll/jekyll/issues/new)
* More resources are listed on our [Help page](https://jekyllrb.com/help/)
To run the test suite and build the gem you'll need to install Jekyll's ## Ways to contribute
dependencies. Simply run this command to get all setup:
Whether you're a developer, a designer, or just a Jekyll devotee, there are lots of ways to contribute. Here's a few ideas:
* [Install Jekyll on your computer](https://jekyllrb.com/docs/installation/) and kick the tires. Does it work? Does it do what you'd expect? If not, [open an issue](https://github.com/jekyll/jekyll/issues/new) and let us know.
* Comment on some of the project's [open issues](https://github.com/jekyll/jekyll/issues). Have you experienced the same problem? Know a work around? Do you have a suggestion for how the feature could be better?
* Read through [the documentation](http://jekyllrb.com/docs/home/), and click the "improve this page" button, any time you see something confusing, or have a suggestion for something that could be improved.
* Browse through [the Jekyll discussion forum](https://talk.jekyllrb.com/), and lend a hand answering questions. There's a good chance you've already experienced what another user is experiencing.
* Find [an open issue](https://github.com/jekyll/jekyll/issues) (especially [those labeled `help-wanted`](https://github.com/jekyll/jekyll/issues?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted)), and submit a proposed fix. If it's your first pull request, we promise we won't bite, and are glad to answer any questions.
* Help evaluate [open pull requests](https://github.com/jekyll/jekyll/pulls), by testing the changes locally and reviewing what's proposed.
## Submitting a pull request
### Pull requests generally
* The smaller the proposed change, the better. If you'd like to propose two unrelated changes, submit two pull requests.
* The more information, the better. Make judicious use of the pull request body. Describe what changes were made, why you made them, and what impact they will have for users.
* Pull request are easy and fun. If this is your first pull request, it may help to [understand GitHub Flow](https://guides.github.com/introduction/flow/)
* If you're submitting a code contribution, be sure to read the [code contributions](#code-contributions) section below.
### Submitting a pull request via github.com
Many small changes can be made entirely through the github.com web interface.
1. Navigate to the file within [`jekyll/jekyll`](https://github.com/jekyll/jekyll) that you'd like to edit
2. Click the pencil icon in the top right corner to edit the file
3. Make your proposed changes
4. Click "Propose file change"
5. Click "Create pull request"
6. Add a descriptive title and detailed description for your proposed change. The more information the better.
7. Click "Create pull request"
That's it! You'll be automatically subscribed to receive updates as others review your proposed change and provide feedback.
### Submitting a pull request via Git command line
1. Fork the project by clicking "Fork" in the top right corner of [`jekyll/jekyll`](https://github.com/jekyll/jekyll)
2. Clone the repository lcoally `git clone https://github.com/<you-username>/jekyll`
3. Create a new, descriptively named branch to contain your change ( `git checkout -b my-awesome-feature` ).
4. Hack away, add tests. Not necessarily in that order.
5. Make sure everything still passes by running `script/cibuild` (see [the tests section](#running-tests-locally) below)
6. Push the branch up ( `git push origin my-awesome-feature` ).
7. Create a pull request by visiting https://github.com/<your-username>/jekyll/ and following the instructions at the top of the screen.
## Proposing updates to the documentation
We want the Jekyll documentation to be the best it can be. We've open-sourced our docs and we welcome any pull requests if you find it lacking.
### 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.
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](http://jekyllrb.com/docs/plugins/#available-plugins), please submit a pull request modifying the [plugins page source file](site/_docs/plugins.md) by adding a link to your plugin under the proper subheading depending upon its type.
## Code Contributions
Interesting in submitting a pull request? Awesome. Read on. There's a few common gotchas that we'd love to help you avoid.
### Tests and documentation
Any time you propose a code change, you should also include updates to the documentation and tests within the same pull request.
#### 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.
#### Tests
* If you're creating a small fix or patch to an existing feature, a simple test if more than enough. You can usually copy/paste from an existing example in the `tests` folder, but if you need to can find out about our tests suites [Shoulda](https://github.com/thoughtbot/shoulda/tree/master) and [RSpec-Mocks](https://github.com/rspec/rspec-mocks).
* If it's a brand new feature, create a new [Cucumber](https://github.com/cucumber/cucumber/) feature, reusing existing steps where appropriate.
### Code contributions generally
* Jekyll follows the [GitHub Ruby Styleguide](https://github.com/styleguide/ruby).
* Don't bump the Gem version in your pull request (if you don't know what that means, you probably didn't).
## Running tests locally
### Test Dependencies
To run the test suite and build the gem you'll need to install Jekyll's dependencies by running the following command:
$ script/bootstrap $ script/bootstrap
Before you start, run the tests and make sure that they pass (to confirm your Before you make any changes, run the tests and make sure that they pass (to confirm your environment is configured properly):
environment is configured properly):
$ script/cibuild $ script/cibuild
@ -55,56 +122,6 @@ If you are only updating a `.feature` file, you can use the command:
Both `script/test` and `script/cucumber` can be run without arguments to Both `script/test` and `script/cucumber` can be run without arguments to
run its entire respective suite. run its entire respective suite.
Workflow ## A thank you
--------
Here's the most direct way to get your work merged into the project: Thanks! Hacking on Jekyll should be fun. If you find any of this hard to figure out, let us know so we can improve our process or documentation!
* [Fork](https://github.com/jekyll/jekyll/fork) the project.
* Clone down your fork ( `git clone git@github.com:[username]/jekyll.git` ).
* Create a topic branch to contain your change ( `git checkout -b my_awesome_feature` ).
* Hack away, add tests. Not necessarily in that order.
* Make sure everything still passes by running `script/cibuild`.
* If necessary, rebase your commits into logical chunks, without errors.
* Push the branch up ( `git push origin my_awesome_feature` ).
* Create a pull request against jekyll/jekyll and describe what your change
does and the why you think it should be merged.
Updating Documentation
----------------------
We want the Jekyll documentation to be the best it can be. We've
open-sourced our docs and we welcome any pull requests if you find it
lacking.
You can find the documentation for jekyllrb.com in the
[site](https://github.com/jekyll/jekyll/tree/master/site) directory of
Jekyll's repo on GitHub.com.
All documentation pull requests should be directed at `master`. Pull
requests directed at another branch will not be accepted.
The [Jekyll wiki](https://github.com/jekyll/jekyll/wiki) on GitHub
can be freely updated without a pull request as all GitHub users have access.
If you want to add your plugin to the
[list of plugins](http://jekyllrb.com/docs/plugins/#available-plugins),
please submit a pull request modifying the
[plugins page source file](site/_docs/plugins.md) by adding a
link to your plugin under the proper subheading depending upon its type.
Gotchas
-------
* Please do not bump the gem version in your pull requests.
* Try to keep your patch(es) based from the latest commit on jekyll/jekyll.
The easier it is to apply your work, the less work the maintainers have to do,
which is always a good thing.
* Please don't tag your GitHub issue with [fix], [feature], etc. The maintainers
actively read the issues and will label it once they come across it.
Finally...
----------
Thanks! Hacking on Jekyll should be fun. If you find any of this hard to figure
out, let us know so we can improve our process or documentation!

View File

@ -1063,7 +1063,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
- Patch a couple show-stopping security vulnerabilities ([#1946]({{ site.repository }}/issues/1946)) - Patch a couple show-stopping security vulnerabilities ([#1946]({{ site.repository }}/issues/1946))
- Sanitize paths uniformly, in a Windows-friendly way ([#2065]({{ site.repository }}/issues/2065), [#2109]({{ site.repository }}/issues/2109)) - Sanitize paths uniformly, in a Windows-friendly way ([#2065]({{ site.repository }}/issues/2065), [#2109]({{ site.repository }}/issues/2109))
- Update gem build steps to work correctly on Windows ([#2118]({{ site.repository }}/issues/2118)) - Update gem build steps to work correctly on Windows ([#2118]({{ site.repository }}/issues/2118))
- Remove obsolete `normalize_options` method call from `bin/jekyll` ([#2121]({{ site.repository }}/issues/2121)). - Remove obsolete `normalize_options` method call from `bin/jekyll` ([#2121]({{ site.repository }}/issues/2121))
- Remove `+` characters from Pygments lexer names when adding as a CSS class ([#994]({{ site.repository }}/issues/994)) - Remove `+` characters from Pygments lexer names when adding as a CSS class ([#994]({{ site.repository }}/issues/994))
- Remove some code that caused Ruby interpreter warnings ([#2178]({{ site.repository }}/issues/2178)) - Remove some code that caused Ruby interpreter warnings ([#2178]({{ site.repository }}/issues/2178))
- Only strip the drive name if it begins the string ([#2175]({{ site.repository }}/issues/2175)) - Only strip the drive name if it begins the string ([#2175]({{ site.repository }}/issues/2175))
@ -2061,7 +2061,7 @@ note: This file is autogenerated. Edit /History.markdown instead.
- Bug Fixes - Bug Fixes
- Fix pagination % 0 bug ([#78]({{ site.repository }}/issues/78)) - Fix pagination % 0 bug ([#78]({{ site.repository }}/issues/78))
- Ensure all posts are processed first ([#71]({{ site.repository }}/issues/71)) ## NOTE - Ensure all posts are processed first ([#71]({{ site.repository }}/issues/71))
- After this point I will no longer be giving credit in the history; that is what the commit log is for. - After this point I will no longer be giving credit in the history; that is what the commit log is for.

View File

@ -123,4 +123,8 @@ date: 2016-02-06 19:32:10 -0800
--- ---
{% endhighlight %} {% endhighlight %}
### My categories have stopped working!
If you organized your categories as `/_posts/code/2008-12-24-closures.md`, you will need to restructure your directories to put the categories _above_ the `_posts` directories, as follows: `/code/_posts/2008-12-24-closures.md`.
_Did we miss something? Please click "Improve this page" above and add a section. Thanks!_ _Did we miss something? Please click "Improve this page" above and add a section. Thanks!_

View File

@ -14,7 +14,8 @@
{{ post.date | date_to_string }} {{ post.date | date_to_string }}
</span> </span>
<a href="https://github.com/{{ post.author }}" class="post-author"> <a href="https://github.com/{{ post.author }}" class="post-author">
{% avatar {{ post.author}} size=24 %} {% assign author = post.author %}
{% avatar user=author size=24 %}
{{ post.author }} {{ post.author }}
</a> </a>
</div> </div>

View File

@ -0,0 +1,17 @@
---
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]
---
Jekyll is an open source project, built one contribution at a time by community members just like you. These community contributions can come in many forms beyond just writing code, from reporting an issue or suggesting a new feature to improving documentation or providing feedback on proposed changes.
If you've been looking to get involved with the Jekyll community, but didn't know, we've recently made it easier to contribute to Jekyll in two ways:
First, we've completely rewritten [the project's contributing guidelines](https://jekyllrb.com/docs/contributing/), outlining [the various ways you can contribute](https://jekyllrb.com/docs/contributing/#ways-to-contribute), and including better instructions for [submitting proposed changes via GitHub.com](https://jekyllrb.com/docs/contributing/#submitting-a-pull-request-via-githubcom) or for [submitting your first code improvement](https://jekyllrb.com/docs/contributing/#code-contributions). And if you have any feedback, we'd love to hear it! Simply click the "improve this page" button in the top right corner of the contributing documentation.
Second, this week, we created six community interest groups, we're calling [Jekyll affinity teams](https://teams.jekyllrb.com). If you're interested in a particular aspect of the project (or just want to learn more), you can join any one of these teams (or two, or three), to participate in discussions about potential bugs and proposed improvements. And the best part is there's no commitment. If you just want to listen, or if at any point you want to leave (or switch teams), that's totally fine. We won't say a thing. To learn more about the various affinity teams, or to join one (please do!), just head on over to [teams.jekyllrb.com](https://teams.jekyllrb.com/).
We hope these changes will make it easier for you to make your first (or second, or third) contribution to Jekyll today. Thanks for helping to make Jekyll awesome!

View File

@ -321,6 +321,21 @@ class TestFilters < JekyllUnitTest
assert_equal 2, @filter.where(@array_of_objects, "color", "red").length assert_equal 2, @filter.where(@array_of_objects, "color", "red").length
end end
should "filter array properties appropriately" do
hash = {"a"=>{"tags"=>["x","y"]}, "b"=>{"tags"=>["x"]}, "c"=>{"tags"=>["y","z"]}}
assert_equal 2, @filter.where(hash, "tags", "x").length
end
should "filter array properties alongside string properties" do
hash = {"a"=>{"tags"=>["x","y"]}, "b"=>{"tags"=>"x"}, "c"=>{"tags"=>["y","z"]}}
assert_equal 2, @filter.where(hash, "tags", "x").length
end
should "not match substrings" do
hash = {"a"=>{"category"=>"bear"}, "b"=>{"category"=>"wolf"}, "c"=>{"category"=>["bear","lion"]}}
assert_equal 0, @filter.where(hash, "category", "ear").length
end
should "stringify during comparison for compatibility with liquid parsing" do should "stringify during comparison for compatibility with liquid parsing" do
hash = { hash = {
"The Words" => {"rating" => 1.2, "featured" => false}, "The Words" => {"rating" => 1.2, "featured" => false},