Merge master into sass

This commit is contained in:
Parker Moore 2014-01-24 12:17:35 -05:00
commit 774bf96c61
16 changed files with 164 additions and 43 deletions

View File

@ -38,6 +38,8 @@
* Change short opts for host and port for `jekyll docs` to be consistent with * Change short opts for host and port for `jekyll docs` to be consistent with
other subcommands (#1877) other subcommands (#1877)
* Fix typos (#1910) * Fix typos (#1910)
* Lock Maruku at 0.7.0 to prevent bugs caused by Maruku 0.7.1 (#1958)
* Fixes full path leak to source directory when using include tag (#1951)
### Development Fixes ### Development Fixes
* Add a link to the site in the README.md file (#1795) * Add a link to the site in the README.md file (#1795)
@ -51,6 +53,8 @@
(#1927) (#1927)
* Rename `read_things` to `read_content` (#1928) * Rename `read_things` to `read_content` (#1928)
* Add `script/branding` script for ASCII art lovin' (#1936) * Add `script/branding` script for ASCII art lovin' (#1936)
* Update the README to reflect the repo move (#1943)
* Add the project vision to the README (#1935)
### Site Enhancements ### Site Enhancements
* Document Kramdown's GFM parser option (#1791) * Document Kramdown's GFM parser option (#1791)
@ -71,6 +75,20 @@
* Disallow selection of path and prompt in bash examples * Disallow selection of path and prompt in bash examples
* Add jekyll-compass to the plugin list (#1923) * Add jekyll-compass to the plugin list (#1923)
* Add note in Posts docs about stripping `<p>` tags from excerpt (#1933) * Add note in Posts docs about stripping `<p>` tags from excerpt (#1933)
* Add additional info about the new exclude behavior (#1938)
* Linkify 'awesome contributors' to point to the contributors graph on
GitHub (#1940)
* Update `docs/sites.md` link to GitHub Training materials (#1949)
* Update `master` with the release info from 1.4.3 (#1947)
* Define docs nav in datafile (#1953)
* Clarify the docs around the naming convention for posts (#1971)
* Add missing `next` and `previous` docs for post layouts and templates (#1970)
* Add note to `Writing posts` page about how to strip html from excerpt (#1962)
## 1.4.3 / 2014-01-13
### Bug Fixes
* Patch show-stopping security vulnerabilities (#1944)
## 1.4.2 / 2013-12-16 ## 1.4.2 / 2013-12-16

View File

@ -7,9 +7,13 @@
[![Dependency Status](https://gemnasium.com/jekyll/jekyll.png)](https://gemnasium.com/jekyll/jekyll) [![Dependency Status](https://gemnasium.com/jekyll/jekyll.png)](https://gemnasium.com/jekyll/jekyll)
[![Coverage Status](https://coveralls.io/repos/jekyll/jekyll/badge.png)](https://coveralls.io/r/jekyll/jekyll) [![Coverage Status](https://coveralls.io/repos/jekyll/jekyll/badge.png)](https://coveralls.io/r/jekyll/jekyll)
By Tom Preston-Werner, Nick Quaranto, and many awesome contributors! By Tom Preston-Werner, Nick Quaranto, and many [awesome contributors](https://github.com/jekyll/jekyll/graphs/contributors)!
Jekyll is a simple, blog aware, static site generator. It takes a template directory (representing the raw form of a website), runs it through Textile or Markdown and Liquid converters, and spits out a complete, static website suitable for serving with Apache or your favorite web server. This is also the engine behind [GitHub Pages](http://pages.github.com), which you can use to host your project's page or blog right here from GitHub. Jekyll is a simple, blog-aware, static site generator perfect for personal, project, or organization sites. Think of it like a file-based CMS, without all the complexity. Jekyll takes your content, renders Markdown and Liquid templates, and spits out a complete, static website ready to be served by Apache, Nginx or another web server. Jekyll is the engine behind [GitHub Pages](http://pages.github.com), which you can use to host sites right from your GitHub repositories.
## Philosophy
Jekyll does what you tell it to do — no more, no less. It doesn't try to outsmart users by making bold assumptions, nor does it burden them with needless complexity and configuration. Put simply, Jekyll gets out of your way and allows you to concentrate on what truly matters: your content.
## Getting Started ## Getting Started

View File

@ -24,10 +24,10 @@ Gem::Specification.new do |s|
s.rdoc_options = ["--charset=UTF-8"] s.rdoc_options = ["--charset=UTF-8"]
s.extra_rdoc_files = %w[README.markdown LICENSE] s.extra_rdoc_files = %w[README.markdown LICENSE]
s.add_runtime_dependency('liquid', "~> 2.5.2") s.add_runtime_dependency('liquid', "~> 2.5.5")
s.add_runtime_dependency('classifier', "~> 1.3") s.add_runtime_dependency('classifier', "~> 1.3")
s.add_runtime_dependency('listen', "~> 1.3") s.add_runtime_dependency('listen', "~> 1.3")
s.add_runtime_dependency('maruku', "~> 0.7.0") s.add_runtime_dependency('maruku', "0.7.0")
s.add_runtime_dependency('pygments.rb', "~> 0.5.0") s.add_runtime_dependency('pygments.rb', "~> 0.5.0")
s.add_runtime_dependency('mercenary', "~> 0.2.0") s.add_runtime_dependency('mercenary', "~> 0.2.0")
s.add_runtime_dependency('safe_yaml', "~> 1.0") s.add_runtime_dependency('safe_yaml', "~> 1.0")
@ -129,6 +129,8 @@ Gem::Specification.new do |s|
lib/site_template/css/syntax.css lib/site_template/css/syntax.css
lib/site_template/index.html lib/site_template/index.html
script/bootstrap script/bootstrap
script/branding
script/cibuild
site/.gitignore site/.gitignore
site/CNAME site/CNAME
site/README site/README
@ -168,6 +170,9 @@ Gem::Specification.new do |s|
site/_posts/2013-11-04-jekyll-1-3-0-released.markdown site/_posts/2013-11-04-jekyll-1-3-0-released.markdown
site/_posts/2013-11-26-jekyll-1-3-1-released.markdown site/_posts/2013-11-26-jekyll-1-3-1-released.markdown
site/_posts/2013-12-07-jekyll-1-4-0-released.markdown site/_posts/2013-12-07-jekyll-1-4-0-released.markdown
site/_posts/2013-12-09-jekyll-1-4-1-released.markdown
site/_posts/2013-12-16-jekyll-1-4-2-released.markdown
site/_posts/2014-01-13-jekyll-1-4-3-released.markdown
site/css/screen.css site/css/screen.css
site/docs/configuration.md site/docs/configuration.md
site/docs/contributing.md site/docs/contributing.md
@ -196,6 +201,7 @@ Gem::Specification.new do |s|
site/docs/upgrading.md site/docs/upgrading.md
site/docs/usage.md site/docs/usage.md
site/docs/variables.md site/docs/variables.md
site/docs/windows.md
site/favicon.png site/favicon.png
site/feed.xml site/feed.xml
site/freenode.txt site/freenode.txt
@ -222,6 +228,7 @@ Gem::Specification.new do |s|
test/source/_data/languages.yml test/source/_data/languages.yml
test/source/_data/members.yaml test/source/_data/members.yaml
test/source/_data/products.yml test/source/_data/products.yml
test/source/_includes/include.html
test/source/_includes/params.html test/source/_includes/params.html
test/source/_includes/sig.markdown test/source/_includes/sig.markdown
test/source/_layouts/default.html test/source/_layouts/default.html
@ -261,6 +268,8 @@ Gem::Specification.new do |s|
test/source/_posts/2013-05-10-number-category.textile test/source/_posts/2013-05-10-number-category.textile
test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown
test/source/_posts/2013-08-01-mkdn-extension.mkdn test/source/_posts/2013-08-01-mkdn-extension.mkdn
test/source/_posts/2013-12-17-include-variable-filters.markdown
test/source/_posts/2013-12-20-properties.text
test/source/_posts/es/2008-11-21-nested.textile test/source/_posts/es/2008-11-21-nested.textile
test/source/about.html test/source/about.html
test/source/category/_posts/2008-9-23-categories.textile test/source/category/_posts/2008-9-23-categories.textile
@ -272,6 +281,7 @@ Gem::Specification.new do |s|
test/source/foo/_posts/bar/2008-12-12-topical-post.textile test/source/foo/_posts/bar/2008-12-12-topical-post.textile
test/source/index.html test/source/index.html
test/source/products.yml test/source/products.yml
test/source/properties.html
test/source/sitemap.xml test/source/sitemap.xml
test/source/symlink-test/_data test/source/symlink-test/_data
test/source/symlink-test/symlinked-dir test/source/symlink-test/symlinked-dir

View File

@ -102,7 +102,7 @@ eos
validate_file_name(file) validate_file_name(file)
path = File.join(dir, file) path = File.join(dir, file)
validate_file(path, context.registers[:site].safe) validate_file(context.registers[:site].source, path, context.registers[:site].safe)
begin begin
partial = Liquid::Template.parse(source(path, context)) partial = Liquid::Template.parse(source(path, context))
@ -122,11 +122,12 @@ eos
end end
end end
def validate_file(file, safe) def validate_file(sourcedir, file, safe)
relative_file = Pathname.new(file).relative_path_from(Pathname.new(sourcedir))
if !File.exists?(file) if !File.exists?(file)
raise IOError.new "Included file '#{file}' not found" raise IOError.new "Included file '#{relative_file}' not found"
elsif File.symlink?(file) && safe elsif File.symlink?(file) && safe
raise IOError.new "The included file '#{file}' should not be a symlink" raise IOError.new "The included file '#{relative_file}' should not be a symlink"
end end
end end

44
site/_data/docs.yml Normal file
View File

@ -0,0 +1,44 @@
- title: Getting Started
docs:
- home
- quickstart
- installation
- usage
- structure
- configuration
- title: Your Content
docs:
- frontmatter
- posts
- drafts
- pages
- variables
- datafiles
- assets
- migrations
- title: Customization
docs:
- templates
- permalinks
- pagination
- plugins
- extras
- title: Deployment
docs:
- github-pages
- deployment-methods
- title: Miscellaneous
docs:
- troubleshooting
- sites
- resources
- upgrading
- title: Meta
docs:
- contributing
- history

View File

@ -1,16 +1,8 @@
<div class="unit one-fifth hide-on-mobiles"> <div class="unit one-fifth hide-on-mobiles">
<aside> <aside>
<h4>Getting Started</h4> {% for section in site.data.docs %}
{% include docs_ul.html items='home quickstart installation usage structure configuration' %} <h4>{{ section.title }}</h4>
<h4>Your Content</h4> {% include docs_ul.html items=section.docs %}
{% include docs_ul.html items='frontmatter posts drafts pages variables datafiles assets migrations' %} {% endfor %}
<h4>Customization</h4>
{% include docs_ul.html items='templates permalinks pagination plugins extras' %}
<h4>Deployment</h4>
{% include docs_ul.html items='github-pages deployment-methods' %}
<h4>Miscellaneous</h4>
{% include docs_ul.html items='troubleshooting sites resources upgrading' %}
<h4>Meta</h4>
{% include docs_ul.html items='contributing history' %}
</aside> </aside>
</div> </div>

View File

@ -1,23 +1,10 @@
<div class="docs-nav-mobile unit whole show-on-mobiles"> <div class="docs-nav-mobile unit whole show-on-mobiles">
<select onchange="if (this.value) window.location.href=this.value"> <select onchange="if (this.value) window.location.href=this.value">
<option value="">Navigate the docs…</option> <option value="">Navigate the docs…</option>
<optgroup label="Getting started"> {% for section in site.data.docs %}
{% include docs_option.html items='home quickstart installation usage structure configuration' %} <optgroup label="{{ section.title }}">
</optgroup> {% include docs_option.html items=section.docs %}
<optgroup label="Your Content">
{% include docs_option.html items='frontmatter posts drafts pages variables datafiles assets migrations' %}
</optgroup>
<optgroup label="Customization">
{% include docs_option.html items='templates permalinks pagination plugins extras' %}
</optgroup>
<optgroup label="Deployment">
{% include docs_option.html items='github-pages deployment-methods' %}
</optgroup>
<optgroup label="Miscellaneous">
{% include docs_option.html items='troubleshooting sites resources upgrading' %}
</optgroup>
<optgroup label="Meta">
{% include docs_option.html items='contributing history' %}
</optgroup> </optgroup>
{% endfor %}
</select> </select>
</div> </div>

View File

@ -1,4 +1,4 @@
{% assign items = include.items | split: ' ' %} {% assign items = include.items %}
{% for item in items %} {% for item in items %}
{% assign item_url = item | prepend:'/docs/' | append:'/' %} {% assign item_url = item | prepend:'/docs/' | append:'/' %}

View File

@ -1,4 +1,4 @@
{% assign items = include.items | split: ' ' %} {% assign items = include.items %}
<ul> <ul>
{% for item in items %} {% for item in items %}

View File

@ -0,0 +1,26 @@
---
layout: news_item
title: 'Jekyll 1.4.3 Released'
date: 2014-01-13 17:43:32 -0800
author: benbalter
version: 1.4.3
categories: [release]
---
Jekyll 1.4.3 contains two **critical** security fixes. If you run Jekyll locally
and do not run Jekyll in "safe" mode (e.g. you do not build Jekyll sites on behalf
of others), you are not affected and are not required to update at this time.
([See pull request.]({{ site.repository }}/pull/1944))
Versions of Jekyll prior to 1.4.3 and greater than 1.2.0 may allow malicious
users to expose the content of files outside the source directory in the
generated output via improper symlink sanitization, potentially resulting in an
inadvertent information disclosure.
Versions of Jekyll prior to 1.4.3 may also allow malicious users to write
arbitrary `.html` files outside of the destination folder via relative path
traversal, potentially overwriting otherwise-trusted content with arbitrary HTML
or Javascript depending on your server's configuration.
*Maintainer's note: Many thanks to @gregose and @charliesome for discovering
these vulnerabilities, and to @BenBalter and @alindeman for writing the patch.*

View File

@ -67,7 +67,7 @@ class="flag">flags</code> (specified on the command-line) that control them.
<p class="description"> <p class="description">
Exclude directories and/or files from the Exclude directories and/or files from the
conversion. These exclusions are relative to the site's conversion. These exclusions are relative to the site's
source directory. source directory and cannot be outside the source directory.
</p> </p>
</td> </td>
<td class='align-center'> <td class='align-center'>

View File

@ -155,6 +155,8 @@ If you don't like the automatically-generated post excerpt, it can be overridden
`excerpt` to your post's YAML front-matter. Completely disable it by setting `excerpt` to your post's YAML front-matter. Completely disable it by setting
your `excerpt_separator` to `""`. your `excerpt_separator` to `""`.
Also, as with any output generated by Liquid tags, you can pass the `| strip_html` flag 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 ## Highlighting code snippets
Jekyll also has built-in support for syntax highlighting of code snippets using Jekyll also has built-in support for syntax highlighting of code snippets using

View File

@ -113,7 +113,7 @@ An overview of what each of these does:
<td> <td>
<p> <p>
Your dynamic content, so to speak. The format of these files is Your dynamic content, so to speak. The naming convention of these files is
important, and must follow the format: important, and must follow the format:
<code>YEAR-MONTH-DAY-title.MARKUP</code>. <code>YEAR-MONTH-DAY-title.MARKUP</code>.
The <a href="../permalinks/">permalinks</a> can be customized for each The <a href="../permalinks/">permalinks</a> can be customized for each

View File

@ -244,6 +244,24 @@ following is a reference of the available data.
</p></td> </p></td>
</tr> </tr>
<tr>
<td><p><code>page.next</code></p></td>
<td><p>
The next post relative to the position of the current post in
<code>site.posts</code>. Returns <code>nil</code> for the last entry.
</p></td>
</tr>
<tr>
<td><p><code>page.previous</code></p></td>
<td><p>
The previous post relative to the position of the current post in
<code>site.posts</code>. Returns <code>nil</code> for the first entry.
</p></td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>

View File

@ -72,7 +72,7 @@ class TestEntryFilter < Test::Unit::TestCase
end end
end end
context "glob_include?" do context "#glob_include?" do
setup do setup do
stub(Jekyll).configuration do stub(Jekyll).configuration do
Jekyll::Configuration::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir}) Jekyll::Configuration::DEFAULTS.merge({'source' => source_dir, 'destination' => dest_dir})

View File

@ -487,6 +487,25 @@ CONTENT
end end
end end
context "include missing file" do
setup do
@content = <<CONTENT
---
title: missing file
---
{% include missing.html %}
CONTENT
end
should "raise error relative to source directory" do
exception = assert_raise IOError do
create_post(@content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true})
end
assert_equal 'Included file \'_includes/missing.html\' not found', exception.message
end
end
context "include tag with variable and liquid filters" do context "include tag with variable and liquid filters" do
setup do setup do
stub(Jekyll).configuration do stub(Jekyll).configuration do