Skip to content

Commit

Permalink
Merge branch 'master' into themes
Browse files Browse the repository at this point in the history
  • Loading branch information
benbalter committed Mar 11, 2016
2 parents 1a203a0 e92a46e commit e3c71ea
Show file tree
Hide file tree
Showing 18 changed files with 306 additions and 214 deletions.
185 changes: 101 additions & 84 deletions .github/CONTRIBUTING.markdown
Original file line number Diff line number Diff line change
@@ -1,105 1,122 @@
# Contributing

So you've got an awesome idea to throw into Jekyll. Great! Please keep the
following in mind:

* **Use https://talk.jekyllrb.com for non-technical or indirect Jekyll questions that are not bugs.**
* **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
-----------------

To run the test suite and build the gem you'll need to install Jekyll's
dependencies. Simply run this command to get all setup:
# Contributing to Jekyll

$ script/bootstrap
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.

Before you start, run the tests and make sure that they pass (to confirm your
environment is configured properly):
## Where to get help or report a problem

$ script/cibuild
* 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/)

If you are only updating a file in `test/`, you can use the command:
## Ways to contribute

$ script/test test/blah_test.rb
Whether you're a developer, a designer, or just a Jekyll devotee, there are lots of ways to contribute. Here's a few ideas:

If you are only updating a `.feature` file, you can use the command:
* [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:open is:issue label:help-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.

$ script/cucumber features/blah.feature
## Submitting a pull request

Both `script/test` and `script/cucumber` can be run without arguments to
run its entire respective suite.
### 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).

Workflow
--------
### Adding plugins

Here's the most direct way to get your work merged into the project:
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.

* [Fork](https://github.com/jekyll/jekyll/fork) the project.
* Clone down your fork ( `git clone [email protected]:[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.
## Code Contributions

Updating Documentation
----------------------
Interesting in submitting a pull request? Awesome. Read on. There's a few common gotchas that we'd love to help you avoid.

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.
### Tests and documentation

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.
Any time you propose a code change, you should also include updates to the documentation and tests within the same pull request.

All documentation pull requests should be directed at `master`. Pull
requests directed at another branch will not be accepted.
#### Documentation

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 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 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.
#### Tests

Gotchas
-------
* 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).

* 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.
* 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

Before you make any changes, run the tests and make sure that they pass (to confirm your environment is configured properly):

$ script/cibuild

If you are only updating a file in `test/`, you can use the command:

$ script/test test/blah_test.rb

If you are only updating a `.feature` file, you can use the command:

$ script/cucumber features/blah.feature

Both `script/test` and `script/cucumber` can be run without arguments to
run its entire respective suite.

Finally...
----------
## A thank you

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!
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!
14 changes: 12 additions & 2 deletions History.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 6,10 @@
* Allow collections to have documents that have no file extension (#4545)
* Add size property to group_by result (#4557)
* 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

Expand All @@ -21,6 25,8 @@
* Add project maintainer profile links (#4591)
* Fix state leakage in Kramdown test (#4618)
* 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

Expand All @@ -30,6 36,10 @@
* Add 'view source' entry (#4602)
* Add jekyll-video-embed to list of third-party plugins. (#4621)
* 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

Expand Down Expand Up @@ -992,7 1002,7 @@
* Patch a couple show-stopping security vulnerabilities (#1946)
* Sanitize paths uniformly, in a Windows-friendly way (#2065, #2109)
* 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 some code that caused Ruby interpreter warnings (#2178)
* Only strip the drive name if it begins the string (#2175)
Expand Down Expand Up @@ -1858,7 1868,7 @@

* Bug Fixes
* 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.

## 0.5.4 / 2009-08-23
Expand Down
14 changes: 9 additions & 5 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -87,16 87,20 @@ def converted_history(markdown)
normalize_bullets(markdown)))))
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)
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
front_matter = front_matter.merge({
front_matter = {
"title" => title,
"layout" => "docs",
"permalink" => "/docs/#{slug}/",
"note" => "This file is autogenerated. Edit /#{file} instead."
})
}.merge(overrides_front_matter)
contents = "#{front_matter.to_yaml}---\n\n#{content_for(file)}"
File.write("site/_docs/#{slug}.md", contents)
end
Expand All @@ -107,7 111,7 @@ def content_for(file)
when "History.markdown"
converted_history(contents)
else
contents.gsub!(/\A# .*\n\n?/, "")
contents.gsub(/\A# .*\n\n?/, "")
end
end

Expand Down
22 changes: 10 additions & 12 deletions lib/jekyll/commands/clean.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 19,19 @@ def process(options)
options = configuration_from_options(options)
destination = options['destination']
metadata_file = File.join(options['source'], '.jekyll-metadata')
sass_cache = File.join(options['source'], '.sass-cache')

if File.directory? destination
Jekyll.logger.info "Cleaning #{destination}..."
FileUtils.rm_rf(destination)
Jekyll.logger.info "", "done."
else
Jekyll.logger.info "Nothing to do for #{destination}."
end
remove(destination, checker_func: :directory?)
remove(metadata_file, checker_func: :file?)
remove(sass_cache, checker_func: :directory?)
end

if File.file? metadata_file
Jekyll.logger.info "Removing #{metadata_file}..."
FileUtils.rm_rf(metadata_file)
Jekyll.logger.info "", "done."
def remove(filename, checker_func: :file?)
if File.public_send(checker_func, filename)
Jekyll.logger.info "Cleaner:", "Removing #{filename}..."
FileUtils.rm_rf(filename)
else
Jekyll.logger.info "Nothing to do for #{metadata_file}."
Jekyll.logger.info "Cleaner:", "Nothing to do for #{filename}."
end
end
end
Expand Down
8 changes: 4 additions & 4 deletions lib/jekyll/filters.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 15,11 @@ def markdownify(input)
converter.convert(input)
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)
site = @context.registers[:site]
converter = site.find_converter_instance(Jekyll::Converters::SmartyPants)
Expand Down Expand Up @@ -222,7 222,7 @@ def group_by(input, property)
def where(input, property, value)
return input unless input.is_a?(Enumerable)
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

# Sort an array of objects
Expand Down
8 changes: 4 additions & 4 deletions lib/jekyll/publisher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 8,14 @@ def publish?(thing)
can_be_published?(thing) && !hidden_in_the_future?(thing)
end

def hidden_in_the_future?(thing)
thing.respond_to?(:date) && !@site.future && thing.date.to_i > @site.time.to_i
end

private

def can_be_published?(thing)
thing.data.fetch('published', true) || @site.unpublished
end

def hidden_in_the_future?(thing)
thing.respond_to?(:date) && !@site.future && thing.date.to_i > @site.time.to_i
end
end
end
6 changes: 5 additions & 1 deletion lib/jekyll/readers/post_reader.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 35,11 @@ def read_publishable(dir, magic_dir, matcher)
read_content(dir, magic_dir, matcher).tap do |docs|
docs.each(&:read)
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

Expand Down
4 changes: 2 additions & 2 deletions lib/site_template/_layouts/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 7,11 @@

{% include header.html %}

<div class="page-content">
<main class="page-content" aria-label="Content">
<div class="wrapper">
{{ content }}
</div>
</div>
</main>

{% include footer.html %}

Expand Down
Loading

0 comments on commit e3c71ea

Please sign in to comment.