Skip to content

Commit

Permalink
Allow a custom 'layouts' directory
Browse files Browse the repository at this point in the history
* Add 'layouts' option to change the dir from '_layouts' to anything relative
  to the source directory
* Add cucumber scenario for testing an alternative directory '_theme'
* Closes jekyll#563
  • Loading branch information
tombell committed May 31, 2012
1 parent 7d88f72 commit df2ad2a
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 1 deletion.
21 changes: 21 additions & 0 deletions features/site_configuration.feature
Original file line number Diff line number Diff line change
Expand Up @@ -143,3 +143,24 @@ Feature: Site configuration
Then the _site directory should exist
And I should see ".DS_Store" in "_site/.gitignore"
And the "_site/.htaccess" file should not exist

Scenario: Using a different layouts directory
Given I have a _theme directory
And I have a page theme that contains "Page Layout: {{ site.posts.size }} on {{ site.time | date: "%Y-%m-%d" }}"
And I have a post theme that contains "Post Layout: {{ content }}"
And I have an "index.html" page with layout "page" that contains "site index page"
And I have a configuration file with:
| key | value |
| time | 2010-01-01 |
| future | true |
| layouts | _theme |
And I have a _posts directory
And I have the following posts:
| title | date | layout | content |
| entry1 | 12/31/2007 | post | content for entry1. |
| entry2 | 01/31/2020 | post | content for entry2. |
When I run jekyll
Then the _site directory should exist
And I should see "Page Layout: 2 on 2010-01-01" in "_site/index.html"
And I should see "Post Layout: <p>content for entry1.</p>" in "_site/2007/12/31/entry1.html"
And I should see "Post Layout: <p>content for entry2.</p>" in "_site/2020/01/31/entry2.html"
7 changes: 7 additions & 0 deletions features/step_definitions/jekyll_steps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@
end
end

Given /^I have a (.*) theme that contains "(.*)"$/ do |layout, text|
File.open(File.join('_theme', layout + '.html'), 'w') do |f|
f.write(text)
f.close
end
end

Given /^I have an? (.*) directory$/ do |dir|
FileUtils.mkdir_p(dir)
end
Expand Down
1 change: 1 addition & 0 deletions lib/jekyll.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ module Jekyll
'source' => Dir.pwd,
'destination' => File.join(Dir.pwd, '_site'),
'plugins' => File.join(Dir.pwd, '_plugins'),
'layouts' => '_layouts',

'future' => true,
'lsi' => false,
Expand Down
2 changes: 1 addition & 1 deletion lib/jekyll/site.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def read
#
# Returns nothing.
def read_layouts(dir = '')
base = File.join(self.source, dir, "_layouts")
base = File.join(self.source, dir, self.config['layouts'])
return unless File.exists?(base)
entries = []
Dir.chdir(base) { entries = filter_entries(Dir['*.*']) }
Expand Down

0 comments on commit df2ad2a

Please sign in to comment.