jekyll 1.2.1 → 1.3.0.rc

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of jekyll might be problematic. Click here for more details.

Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/History.markdown +58 -0
  3. data/README.markdown +2 -1
  4. data/Rakefile +8 -1
  5. data/bin/jekyll +14 -17
  6. data/features/create_sites.feature +11 -0
  7. data/features/data.feature +65 -0
  8. data/features/include_tag.feature +13 -0
  9. data/features/site_configuration.feature +29 -0
  10. data/features/step_definitions/jekyll_steps.rb +27 -12
  11. data/features/support/env.rb +36 -0
  12. data/jekyll.gemspec +22 -10
  13. data/lib/jekyll.rb +2 -1
  14. data/lib/jekyll/cleaner.rb +8 -8
  15. data/lib/jekyll/commands/build.rb +14 -8
  16. data/lib/jekyll/commands/serve.rb +2 -0
  17. data/lib/jekyll/configuration.rb +5 -1
  18. data/lib/jekyll/converters/markdown/kramdown_parser.rb +1 -1
  19. data/lib/jekyll/convertible.rb +17 -6
  20. data/lib/jekyll/core_ext.rb +15 -0
  21. data/lib/jekyll/filters.rb +10 -0
  22. data/lib/jekyll/post.rb +2 -2
  23. data/lib/jekyll/site.rb +68 -19
  24. data/lib/jekyll/tags/gist.rb +9 -1
  25. data/lib/jekyll/tags/highlight.rb +1 -1
  26. data/lib/jekyll/tags/include.rb +72 -28
  27. data/lib/jekyll/tags/post_url.rb +4 -2
  28. data/lib/site_template/css/main.css +15 -15
  29. data/site/_includes/docs_contents.html +1 -1
  30. data/site/_includes/docs_contents_mobile.html +1 -1
  31. data/site/_posts/2013-10-28-jekyll-1-3-0-rc1-released.markdown +19 -0
  32. data/site/docs/configuration.md +18 -0
  33. data/site/docs/datafiles.md +63 -0
  34. data/site/docs/installation.md +10 -0
  35. data/site/docs/migrations.md +12 -3
  36. data/site/docs/pagination.md +16 -37
  37. data/site/docs/plugins.md +66 -6
  38. data/site/docs/structure.md +17 -0
  39. data/site/docs/templates.md +31 -7
  40. data/site/docs/upgrading.md +3 -3
  41. data/site/docs/usage.md +1 -1
  42. data/site/docs/variables.md +2 -2
  43. data/test/helper.rb +4 -1
  44. data/test/source/_data/languages.yml +2 -0
  45. data/test/source/_data/members.yaml +7 -0
  46. data/test/source/_data/products.yml +4 -0
  47. data/test/source/_layouts/post/simple.html +1 -0
  48. data/test/source/products.yml +4 -0
  49. data/test/test_convertible.rb +1 -1
  50. data/test/test_filters.rb +11 -0
  51. data/test/test_kramdown.rb +32 -5
  52. data/test/test_site.rb +58 -1
  53. data/test/test_tags.rb +21 -23
  54. metadata +71 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9425f162d036e32db265bff5b75d414e5b92ecbd
4
- data.tar.gz: e9c0f102492eb8ba0c159d5f1eb751742e1178c1
3
+ metadata.gz: 09778948dac8d2cea23077a1a90c04b466f79cc8
4
+ data.tar.gz: d7bb52dd2cd2b29ed5a20c96f9e548bff7cf604c
5
5
  SHA512:
6
- metadata.gz: 8bff93a60c7ee953911e6eb14c8ea3d1d4df5d2c25d602b902722d659b8081ef9258eed90d46e7678555302d36d3c31035772be8173885b255c579ef4cfb9433
7
- data.tar.gz: d8b58b6f2e007d96708009378f7f13d024badb03356b5e28dd9406617bc139e0e8ea579e41ebdba0529da05985c829f41b12d65c0eaceb47054b06964dedf087
6
+ metadata.gz: db047d0e039e9b248260fe3612dfc1d4d6e6b0890947813c95eecb0c4bc3610dd81aefa027104f7e25a2b938ff812166492230f003b845e2e7f270258f2ee9a1
7
+ data.tar.gz: a0563de63fbec8c2bf78b88e914e6ca3b49206dedcb386481720181907343adfd7c77dc54f39e002d5963e951d17677449974c215988b66d8bd88b851c8bbc7b
@@ -1,14 +1,72 @@
1
1
  ## HEAD
2
2
 
3
3
  ### Major Enhancements
4
+ * Add support for adding data as YAML files under a site's `_data`
5
+ directory (#1003)
6
+ * Allow variables to be used with `include` tags (#1495)
7
+ * Allow using gems for plugin management (#1557)
4
8
 
5
9
  ### Minor Enhancements
10
+ * Decrease the specificity in the site template CSS (#1574)
11
+ * Add `encoding` configuration option (#1449)
12
+ * Provide better error handling for Jekyll's custom Liquid tags
13
+ (#1514)
14
+ * If an included file causes a Liquid error, add the path to the
15
+ include file that caused the error to the error message (#1596)
16
+ * If a layout causes a Liquid error, change the error message so that
17
+ we know it comes from the layout (#1601)
18
+ * Update Kramdown dependency to `~> 1.2` (#1610)
19
+ * Update `safe_yaml` dependency to `~> 0.9.7` (#1602)
20
+ * Allow layouts to be in subfolders like includes (#1622)
21
+ * Switch to listen for site watching while serving (#1589)
22
+ * Add a `json` liquid filter to be used in sites (#1651)
23
+ * Point people to the migration docs when the `jekyll-import` gem is
24
+ missing (#1662)
6
25
 
7
26
  ### Bug Fixes
27
+ * Fix up matching against source and destination when the two
28
+ locations are similar (#1556)
29
+ * Fix the missing `pathname` require in certain cases (#1255)
30
+ * Use `+` instead of `Array#concat` when building `Post` attribute list (#1571)
31
+ * Print server address when launching a server (#1586)
32
+ * Downgrade to Maruku `~> 0.6.0` in order to avoid changes in rendering (#1598)
33
+ * Fix error with failing include tag when variable was file name (#1613)
34
+ * Downcase lexers before passing them to pygments (#1615)
35
+ * Capitalize the short verbose switch because it conflicts with the
36
+ built-in Commander switch (#1660)
37
+ * Fix compatibility with 1.8.x (#1665)
8
38
 
9
39
  ### Development Fixes
40
+ * Add coverage reporting with Coveralls (#1539)
41
+ * Refactor the Liquid `include` tag (#1490)
42
+ * Update launchy dependency to `~> 2.3` (#1608)
43
+ * Update rr dependency to `~> 1.1` (#1604)
44
+ * Update cucumber dependency to `~> 1.3` (#1607)
45
+ * Update coveralls dependency to `~> 0.7.0` (#1606)
46
+ * Update rake dependency to `~> 10.1` (#1603)
47
+ * Clean up `site.rb` comments to be more concise/uniform (#1616)
48
+ * Use the master branch for the build badge in the readme (#1636)
49
+ * Refactor Site#render (#1638)
50
+ * Remove duplication in command line options (#1637)
51
+ * Add tests for all the coderay options (#1543)
52
+ * Improve some of the cucumber test code (#1493)
53
+ * Improve comparisons of timestamps by ignoring the seconds (#1582)
10
54
 
11
55
  ### Site Enhancements
56
+ * Fix params for `JekyllImport::WordPress.process` arguments (#1554)
57
+ * Add `jekyll-suggested-tweet` to list of third-party plugins (#1555)
58
+ * Link to Liquid's docs for tags and filters (#1553)
59
+ * Add note about installing Xcode on the Mac in the Installation docs (#1561)
60
+ * Simplify/generalize pagination docs (#1577)
61
+ * Add documentation for the new data sources feature (#1503)
62
+ * Add more information on how to create generators (#1590, #1592)
63
+ * Improve the instructions for mimicking GitHub Flavored Markdown
64
+ (#1614)
65
+ * Add `jekyll-import` warning note of missing dependencies (#1626)
66
+ * Fix grammar in the Usage section (#1635)
67
+ * Add documentation for the use of gems as plugins (#1656)
68
+ * Document the existence of a few additional plugins (#1405)
69
+ * Document that the `date_to_string` always returns a two digit day (#1663)
12
70
 
13
71
  ## 1.2.1 / 2013-09-14
14
72
 
@@ -2,9 +2,10 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/jekyll.png)](http://badge.fury.io/rb/jekyll)
4
4
 
5
- [![Build Status](https://secure.travis-ci.org/mojombo/jekyll.png)](https://travis-ci.org/mojombo/jekyll)
5
+ [![Build Status](https://secure.travis-ci.org/mojombo/jekyll.png?branch=master)](https://travis-ci.org/mojombo/jekyll)
6
6
  [![Code Climate](https://codeclimate.com/github/mojombo/jekyll.png)](https://codeclimate.com/github/mojombo/jekyll)
7
7
  [![Dependency Status](https://gemnasium.com/mojombo/jekyll.png)](https://gemnasium.com/mojombo/jekyll)
8
+ [![Coverage Status](https://coveralls.io/repos/mojombo/jekyll/badge.png)](https://coveralls.io/r/mojombo/jekyll)
8
9
 
9
10
  By Tom Preston-Werner, Nick Quaranto, and many awesome contributors!
10
11
 
data/Rakefile CHANGED
@@ -84,7 +84,14 @@ end
84
84
  #
85
85
  #############################################################################
86
86
 
87
- task :default => [:test, :features]
87
+ if RUBY_VERSION > '1.9' && ENV["TRAVIS"] == "true"
88
+ require 'coveralls/rake/task'
89
+ Coveralls::RakeTask.new
90
+
91
+ task :default => [:test, :features, 'coveralls:push']
92
+ else
93
+ task :default => [:test, :features]
94
+ end
88
95
 
89
96
  require 'rake/testtask'
90
97
  Rake::TestTask.new(:test) do |test|
data/bin/jekyll CHANGED
@@ -33,6 +33,16 @@ def normalize_options(options)
33
33
  options
34
34
  end
35
35
 
36
+ def add_build_options(c)
37
+ c.option '--config CONFIG_FILE[,CONFIG_FILE2,...]', Array, 'Custom configuration file'
38
+ c.option '--future', 'Publishes posts with a future date'
39
+ c.option '--limit_posts MAX_POSTS', Integer, 'Limits the number of posts to parse and publish'
40
+ c.option '-w', '--watch', 'Watch for changes and rebuild'
41
+ c.option '--lsi', 'Use LSI for improved related posts'
42
+ c.option '-D', '--drafts', 'Render posts in the _drafts folder'
43
+ c.option '-V', '--verbose', 'Print verbose output.'
44
+ end
45
+
36
46
  command :default do |c|
37
47
  c.action do |args, options|
38
48
  if args.empty?
@@ -59,13 +69,7 @@ command :build do |c|
59
69
  c.syntax = 'jekyll build [options]'
60
70
  c.description = 'Build your site'
61
71
 
62
- c.option '--config CONFIG_FILE[,CONFIG_FILE2,...]', Array, 'Custom configuration file'
63
- c.option '--future', 'Publishes posts with a future date'
64
- c.option '--limit_posts MAX_POSTS', Integer, 'Limits the number of posts to parse and publish'
65
- c.option '-w', '--watch', 'Watch for changes and rebuild'
66
- c.option '--lsi', 'Use LSI for improved related posts'
67
- c.option '-D', '--drafts', 'Render posts in the _drafts folder'
68
- c.option '-v', '--verbose', 'Print verbose output.'
72
+ add_build_options(c)
69
73
 
70
74
  c.action do |args, options|
71
75
  options = normalize_options(options.__hash__)
@@ -78,15 +82,9 @@ command :serve do |c|
78
82
  c.syntax = 'jekyll serve [options]'
79
83
  c.description = 'Serve your site locally'
80
84
 
81
- c.option '--config CONFIG_FILE[,CONFIG_FILE2,...]', Array, 'Custom configuration file'
82
- c.option '--future', 'Publishes posts with a future date'
83
- c.option '--limit_posts MAX_POSTS', Integer, 'Limits the number of posts to parse and publish'
84
- c.option '-w', '--watch', 'Watch for changes and rebuild'
85
- c.option '--lsi', 'Use LSI for improved related posts'
86
- c.option '-B', '--detach', 'Run the server in the background (detach)'
87
- c.option '-D', '--drafts', 'Render posts in the _drafts folder'
88
- c.option '-v', '--verbose', 'Print verbose output.'
85
+ add_build_options(c)
89
86
 
87
+ c.option '-B', '--detach', 'Run the server in the background (detach)'
90
88
  c.option '-P', '--port [PORT]', 'Port to listen on'
91
89
  c.option '-H', '--host [HOST]', 'Host to bind to'
92
90
  c.option '-b', '--baseurl [URL]', 'Base URL'
@@ -151,8 +149,7 @@ command :import do |c|
151
149
  require 'jekyll-import'
152
150
  rescue LoadError
153
151
  msg = "You must install the 'jekyll-import' gem before continuing.\n"
154
- msg += "* Do this by running `gem install jekyll-import`.\n"
155
- msg += "* Or if you need root privileges, run `sudo gem install jekyll-import`."
152
+ msg += "* Please see the documentation at http://jekyllrb.com/docs/migrations/ for instructions.\n"
156
153
  abort msg
157
154
  end
158
155
  Jekyll::Commands::Import.process(args.first, options)
@@ -44,6 +44,17 @@ Feature: Create sites
44
44
  Then the _site directory should exist
45
45
  And I should see "Post Layout: <p>The only winning move is not to play.</p>" in "_site/2009/03/27/wargames.html"
46
46
 
47
+ Scenario: Basic site with layout inside a subfolder and a post
48
+ Given I have a _layouts directory
49
+ And I have a _posts directory
50
+ And I have the following posts:
51
+ | title | date | layout | content |
52
+ | Wargames | 2009-03-27 | post/simple | The only winning move is not to play. |
53
+ And I have a post/simple layout that contains "Post Layout: {{ content }}"
54
+ When I run jekyll
55
+ Then the _site directory should exist
56
+ And I should see "Post Layout: <p>The only winning move is not to play.</p>" in "_site/2009/03/27/wargames.html"
57
+
47
58
  Scenario: Basic site with layouts, pages, posts and files
48
59
  Given I have a _layouts directory
49
60
  And I have a page layout that contains "Page {{ page.title }}: {{ content }}"
@@ -0,0 +1,65 @@
1
+ Feature: Data
2
+ In order to use well-formatted data in my blog
3
+ As a blog's user
4
+ I want to use _data directory in my site
5
+
6
+ Scenario: autoload *.yaml files in _data directory
7
+ Given I have a _data directory
8
+ And I have a "_data/products.yaml" file with content:
9
+ """
10
+ - name: sugar
11
+ price: 5.3
12
+ - name: salt
13
+ price: 2.5
14
+ """
15
+ And I have an "index.html" page that contains "{% for product in site.data.products %}{{product.name}}{% endfor %}"
16
+ When I run jekyll
17
+ Then the "_site/index.html" file should exist
18
+ And I should see "sugar" in "_site/index.html"
19
+ And I should see "salt" in "_site/index.html"
20
+
21
+ Scenario: autoload *.yml files in _data directory
22
+ Given I have a _data directory
23
+ And I have a "_data/members.yml" file with content:
24
+ """
25
+ - name: Jack
26
+ age: 28
27
+ - name: Leon
28
+ age: 34
29
+ """
30
+ And I have an "index.html" page that contains "{% for member in site.data.members %}{{member.name}}{% endfor %}"
31
+ When I run jekyll
32
+ Then the "_site/index.html" file should exist
33
+ And I should see "Jack" in "_site/index.html"
34
+ And I should see "Leon" in "_site/index.html"
35
+
36
+ Scenario: autoload *.yml files in _data directory with space in file name
37
+ Given I have a _data directory
38
+ And I have a "_data/team members.yml" file with content:
39
+ """
40
+ - name: Jack
41
+ age: 28
42
+ - name: Leon
43
+ age: 34
44
+ """
45
+ And I have an "index.html" page that contains "{% for member in site.data.team_members %}{{member.name}}{% endfor %}"
46
+ When I run jekyll
47
+ Then the "_site/index.html" file should exist
48
+ And I should see "Jack" in "_site/index.html"
49
+ And I should see "Leon" in "_site/index.html"
50
+
51
+ Scenario: should be backward compatible with site.data in _config.yml
52
+ Given I have a "_config.yml" file with content:
53
+ """
54
+ data:
55
+ - name: Jack
56
+ age: 28
57
+ - name: Leon
58
+ age: 34
59
+ """
60
+ And I have an "index.html" page that contains "{% for member in site.data %}{{member.name}}{% endfor %}"
61
+ When I run jekyll
62
+ Then the "_site/index.html" file should exist
63
+ And I should see "Jack" in "_site/index.html"
64
+ And I should see "Leon" in "_site/index.html"
65
+
@@ -33,3 +33,16 @@ Feature: Include tags
33
33
  And I should see "<li>param1_or_2 = value</li>" in "_site/2013/04/12/parameter-syntax.html"
34
34
  And I should see "<li>local = some text</li>" in "_site/2013/06/22/pass-a-variable.html"
35
35
  And I should see "<li>layout = default</li>" in "_site/2013/06/22/pass-a-variable.html"
36
+
37
+ Scenario: Include a file from a variable
38
+ Given I have an _includes directory
39
+ And I have an "_includes/snippet.html" file that contains "a snippet"
40
+ And I have an "_includes/parametrized.html" file that contains "works with {{include.what}}"
41
+ And I have a configuration file with:
42
+ | key | value |
43
+ | include_file1 | snippet.html |
44
+ | include_file2 | parametrized.html |
45
+ And I have an "index.html" page that contains "{% include {{site.include_file1}} %} that {% include {{site.include_file2}} what='parameters' %}"
46
+ When I run jekyll
47
+ Then the _site directory should exist
48
+ And I should see "a snippet that works with parameters" in "_site/index.html"
@@ -18,6 +18,27 @@ Feature: Site configuration
18
18
  Then the _mysite directory should exist
19
19
  And I should see "Changing destination directory" in "_mysite/index.html"
20
20
 
21
+ Scenario Outline: Similarly named source and destination
22
+ Given I have a blank site in "<source>"
23
+ And I have an "<source>/index.md" page that contains "markdown"
24
+ And I have a configuration file with:
25
+ | key | value |
26
+ | source | <source> |
27
+ | destination | <dest> |
28
+ When I run jekyll
29
+ Then the <source> directory should exist
30
+ And the "<dest>/index.html" file should <file_exist> exist
31
+ And I should see "markdown" in "<source>/index.md"
32
+
33
+ Examples:
34
+ | source | dest | file_exist |
35
+ | mysite_source | mysite | |
36
+ | mysite | mysite_dest | |
37
+ | mysite/ | mysite | not |
38
+ | mysite | ./mysite | not |
39
+ | mysite/source | mysite | not |
40
+ | mysite | mysite/dest | |
41
+
21
42
  Scenario: Exclude files inline
22
43
  Given I have an "Rakefile" file that contains "I want to be excluded"
23
44
  And I have an "README" file that contains "I want to be excluded"
@@ -204,3 +225,11 @@ Feature: Site configuration
204
225
  And I should see "Page Layout: 2 on 2010-01-01" in "_site/index.html"
205
226
  And I should see "Post Layout: <p>content for entry1.</p>" in "_site/2007/12/31/entry1.html"
206
227
  And I should see "Post Layout: <p>content for entry2.</p>" in "_site/2020/01/31/entry2.html"
228
+
229
+ Scenario: Add a gem-based plugin
230
+ Given I have an "index.html" file that contains "Whatever"
231
+ And I have a configuration file with "gems" set to "[jekyll_test_plugin]"
232
+ When I run jekyll
233
+ Then the _site directory should exist
234
+ And I should see "Whatever" in "_site/index.html"
235
+ And I should see "this is a test" in "_site/test.txt"
@@ -7,7 +7,7 @@ end
7
7
  World(Test::Unit::Assertions)
8
8
 
9
9
  Given /^I have a blank site in "(.*)"$/ do |path|
10
- FileUtils.mkdir(path)
10
+ FileUtils.mkdir_p(path)
11
11
  end
12
12
 
13
13
  Given /^I do not have a "(.*)" directory$/ do |path|
@@ -38,7 +38,18 @@ Given /^I have an? (.*) (layout|theme) that contains "(.*)"$/ do |name, type, te
38
38
  else
39
39
  '_theme'
40
40
  end
41
- File.open(File.join(folder, name + '.html'), 'w') do |f|
41
+ destination_file = File.join(folder, name + '.html')
42
+ destination_path = File.dirname(destination_file)
43
+ unless File.exist?(destination_path)
44
+ FileUtils.mkdir_p(destination_path)
45
+ end
46
+ File.open(destination_file, 'w') do |f|
47
+ f.write(text)
48
+ end
49
+ end
50
+
51
+ Given /^I have an? "(.*)" file with content:$/ do |file, text|
52
+ File.open(file, 'w') do |f|
42
53
  f.write(text)
43
54
  end
44
55
  end
@@ -137,38 +148,42 @@ When /^I delete the file "(.*)"$/ do |file|
137
148
  File.delete(file)
138
149
  end
139
150
 
140
- Then /^the (.*) directory should exist$/ do |dir|
151
+ Then /^the (.*) directory should +exist$/ do |dir|
141
152
  assert File.directory?(dir), "The directory \"#{dir}\" does not exist"
142
153
  end
143
154
 
155
+ Then /^the (.*) directory should not exist$/ do |dir|
156
+ assert !File.directory?(dir), "The directory \"#{dir}\" exists"
157
+ end
158
+
144
159
  Then /^I should see "(.*)" in "(.*)"$/ do |text, file|
145
- assert Regexp.new(text).match(File.open(file).readlines.join)
160
+ assert_match Regexp.new(text), file_contents(file)
146
161
  end
147
162
 
148
163
  Then /^I should see exactly "(.*)" in "(.*)"$/ do |text, file|
149
- assert_equal text, File.open(file).readlines.join.strip
164
+ assert_equal text, file_contents(file).strip
150
165
  end
151
166
 
152
167
  Then /^I should not see "(.*)" in "(.*)"$/ do |text, file|
153
- assert_no_match Regexp.new(text), File.read(file)
168
+ assert_no_match Regexp.new(text), file_contents(file)
154
169
  end
155
170
 
156
171
  Then /^I should see escaped "(.*)" in "(.*)"$/ do |text, file|
157
- assert Regexp.new(Regexp.escape(text)).match(File.open(file).readlines.join)
172
+ assert_match Regexp.new(Regexp.escape(text)), file_contents(file)
158
173
  end
159
174
 
160
- Then /^the "(.*)" file should exist$/ do |file|
161
- assert File.file?(file)
175
+ Then /^the "(.*)" file should +exist$/ do |file|
176
+ assert File.file?(file), "The file \"#{file}\" does not exist"
162
177
  end
163
178
 
164
179
  Then /^the "(.*)" file should not exist$/ do |file|
165
- assert !File.exists?(file)
180
+ assert !File.exists?(file), "The file \"#{file}\" exists"
166
181
  end
167
182
 
168
183
  Then /^I should see today's time in "(.*)"$/ do |file|
169
- assert_match Regexp.new(Regexp.escape(Time.now.to_s)), File.open(file).readlines.join
184
+ assert_match Regexp.new(seconds_agnostic_time(Time.now)), file_contents(file)
170
185
  end
171
186
 
172
187
  Then /^I should see today's date in "(.*)"$/ do |file|
173
- assert_match Regexp.new(Date.today.to_s), File.open(file).readlines.join
188
+ assert_match Regexp.new(Date.today.to_s), file_contents(file)
174
189
  end
@@ -1,3 +1,8 @@
1
+ if RUBY_VERSION > '1.9'
2
+ require 'coveralls'
3
+ Coveralls.wear_merged!
4
+ end
5
+
1
6
  require 'fileutils'
2
7
  require 'rr'
3
8
  require 'test/unit'
@@ -35,5 +40,36 @@ def location(folder, direction)
35
40
  [before || '.', after || '.']
36
41
  end
37
42
 
43
+ def file_contents(path)
44
+ File.open(path) do |file|
45
+ file.readlines.join # avoid differences with \n and \r\n line endings
46
+ end
47
+ end
48
+
49
+ def seconds_agnostic_datetime(datetime = Time.now)
50
+ pieces = datetime.to_s.split(" ")
51
+ if pieces.size == 6 # Ruby 1.8.7
52
+ date = pieces[0..2].join(" ")
53
+ time = seconds_agnostic_time(pieces[3])
54
+ zone = pieces[4..5].join(" ")
55
+ else # Ruby 1.9.1 or greater
56
+ date, time, zone = pieces
57
+ time = seconds_agnostic_time(time)
58
+ end
59
+ [
60
+ Regexp.escape(date),
61
+ "#{time}:\\d{2}",
62
+ Regexp.escape(zone)
63
+ ].join("\\ ")
64
+ end
65
+
66
+ def seconds_agnostic_time(time)
67
+ if time.is_a? Time
68
+ time = time.strftime("%H:%M:%S")
69
+ end
70
+ hour, minutes, _ = time.split(":")
71
+ "#{hour}:#{minutes}"
72
+ end
73
+
38
74
  # work around "invalid option: --format" cucumber bug (see #296)
39
75
  Test::Unit.run = true if RUBY_VERSION < '1.9'
@@ -4,9 +4,9 @@ Gem::Specification.new do |s|
4
4
  s.rubygems_version = '1.3.5'
5
5
 
6
6
  s.name = 'jekyll'
7
- s.version = '1.2.1'
7
+ s.version = '1.3.0.rc'
8
8
  s.license = 'MIT'
9
- s.date = '2013-09-14'
9
+ s.date = '2013-10-29'
10
10
  s.rubyforge_project = 'jekyll'
11
11
 
12
12
  s.summary = "A simple, blog aware, static site generator."
@@ -25,27 +25,30 @@ Gem::Specification.new do |s|
25
25
 
26
26
  s.add_runtime_dependency('liquid', "~> 2.5.2")
27
27
  s.add_runtime_dependency('classifier', "~> 1.3")
28
- s.add_runtime_dependency('directory_watcher', "~> 1.4.1")
29
- s.add_runtime_dependency('maruku', "~> 0.5")
28
+ s.add_runtime_dependency('listen', "~> 1.3")
29
+ s.add_runtime_dependency('maruku', "~> 0.6.0")
30
30
  s.add_runtime_dependency('pygments.rb', "~> 0.5.0")
31
31
  s.add_runtime_dependency('commander', "~> 4.1.3")
32
- s.add_runtime_dependency('safe_yaml', "~> 0.7.0")
32
+ s.add_runtime_dependency('safe_yaml', "~> 0.9.7")
33
33
  s.add_runtime_dependency('colorator', "~> 0.1")
34
34
  s.add_runtime_dependency('redcarpet', "~> 2.3.0")
35
35
 
36
- s.add_development_dependency('rake', "~> 10.0.3")
36
+ s.add_development_dependency('rake', "~> 10.1")
37
37
  s.add_development_dependency('rdoc', "~> 3.11")
38
38
  s.add_development_dependency('redgreen', "~> 1.2")
39
39
  s.add_development_dependency('shoulda', "~> 3.3.2")
40
- s.add_development_dependency('rr', "~> 1.0.0")
41
- s.add_development_dependency('cucumber', "~> 1.2.1", '!= 1.2.4')
40
+ s.add_development_dependency('rr', "~> 1.1")
41
+ s.add_development_dependency('cucumber', "~> 1.3")
42
42
  s.add_development_dependency('RedCloth', "~> 4.2")
43
- s.add_development_dependency('kramdown', "~> 1.0.2")
43
+ s.add_development_dependency('kramdown', "~> 1.2")
44
44
  s.add_development_dependency('rdiscount', "~> 1.6")
45
- s.add_development_dependency('launchy', "~> 2.1.2")
45
+ s.add_development_dependency('launchy', "~> 2.3")
46
46
  s.add_development_dependency('simplecov', "~> 0.7")
47
47
  s.add_development_dependency('simplecov-gem-adapter', "~> 1.0.1")
48
+ s.add_development_dependency('coveralls', "~> 0.7.0")
49
+ s.add_development_dependency('mime-types', "~> 1.5")
48
50
  s.add_development_dependency('activesupport', '~> 3.2.13')
51
+ s.add_development_dependency('jekyll_test_plugin')
49
52
 
50
53
  # = MANIFEST =
51
54
  s.files = %w[
@@ -58,6 +61,7 @@ Gem::Specification.new do |s|
58
61
  bin/jekyll
59
62
  cucumber.yml
60
63
  features/create_sites.feature
64
+ features/data.feature
61
65
  features/drafts.feature
62
66
  features/embed_filters.feature
63
67
  features/include_tag.feature
@@ -150,12 +154,14 @@ Gem::Specification.new do |s|
150
154
  site/_posts/2013-07-25-jekyll-1-1-2-released.markdown
151
155
  site/_posts/2013-09-06-jekyll-1-2-0-released.markdown
152
156
  site/_posts/2013-09-14-jekyll-1-2-1-released.markdown
157
+ site/_posts/2013-10-28-jekyll-1-3-0-rc1-released.markdown
153
158
  site/css/gridism.css
154
159
  site/css/normalize.css
155
160
  site/css/pygments.css
156
161
  site/css/style.css
157
162
  site/docs/configuration.md
158
163
  site/docs/contributing.md
164
+ site/docs/datafiles.md
159
165
  site/docs/deployment-methods.md
160
166
  site/docs/drafts.md
161
167
  site/docs/extras.md
@@ -202,9 +208,13 @@ Gem::Specification.new do |s|
202
208
  test/helper.rb
203
209
  test/source/+/foo.md
204
210
  test/source/.htaccess
211
+ test/source/_data/languages.yml
212
+ test/source/_data/members.yaml
213
+ test/source/_data/products.yml
205
214
  test/source/_includes/params.html
206
215
  test/source/_includes/sig.markdown
207
216
  test/source/_layouts/default.html
217
+ test/source/_layouts/post/simple.html
208
218
  test/source/_layouts/simple.html
209
219
  test/source/_plugins/dummy.rb
210
220
  test/source/_posts/2008-02-02-not-published.textile
@@ -250,7 +260,9 @@ Gem::Specification.new do |s|
250
260
  test/source/deal.with.dots.html
251
261
  test/source/foo/_posts/bar/2008-12-12-topical-post.textile
252
262
  test/source/index.html
263
+ test/source/products.yml
253
264
  test/source/sitemap.xml
265
+ test/source/symlink-test/_data
254
266
  test/source/symlink-test/symlinked-dir
255
267
  test/source/symlink-test/symlinked-file
256
268
  test/source/win/_posts/2009-05-24-yaml-linebreak.markdown