pages now present in the site payload and can be used through the site.pages variable

This commit is contained in:
Kris Brown 2010-02-26 22:08:16 +00:00
parent cd946a587b
commit 5a807aa12e
5 changed files with 25 additions and 15 deletions

View File

@ -3,6 +3,7 @@
* Inclusion/exclusion of future dated posts (#59)
* Generation for a specific time (#59)
* site.time allocated on render not per site_payload invocation (#59)
* pages now present in the site payload and can be used through the site.pages variable
* Bug Fixes
* Render highlighted code for non markdown/textile pages (#116)
* Expand source to full path so includes work anywhere (#101)

View File

@ -39,11 +39,11 @@ Feature: Create sites
Scenario: Basic site with layouts, pages, posts and files
Given I have a _layouts directory
And I have a page layout that contains "Page Layout: {{ site.posts.size }}"
And I have a post layout that contains "Post Layout: {{ content }}"
And I have an "index.html" page with layout "page" that contains "site index page"
And I have a page layout that contains "Page {{ page.title }}: {{ content }}"
And I have a post layout that contains "Post {{ page.title }}: {{ content }}"
And I have an "index.html" page with layout "page" that contains "Site contains {{ site.pages.size }} pages and {{ site.posts.size }} posts"
And I have a blog directory
And I have a "blog/index.html" page with layout "page" that contains "category index page"
And I have a "blog/index.html" page with layout "page" that contains "blog category index page"
And I have an "about.html" file that contains "No replacement {{ site.posts.size }}"
And I have an "another_file" file that contains ""
And I have a _posts directory
@ -58,14 +58,14 @@ Feature: Create sites
| entry4 | 6/27/2009 | post | content for entry4. |
When I run jekyll
Then the _site directory should exist
And I should see "Page Layout: 4" in "_site/index.html"
And I should see "Page : Site contains 2 pages and 4 posts" in "_site/index.html"
And I should see "No replacement \{\{ site.posts.size \}\}" in "_site/about.html"
And I should see "" in "_site/another_file"
And I should see "Page Layout: 4" in "_site/blog/index.html"
And I should see "Post Layout: <p>content for entry1.</p>" in "_site/2009/03/27/entry1.html"
And I should see "Post Layout: <p>content for entry2.</p>" in "_site/2009/04/27/entry2.html"
And I should see "Post Layout: <p>content for entry3.</p>" in "_site/category/2009/05/27/entry3.html"
And I should see "Post Layout: <p>content for entry4.</p>" in "_site/category/2009/06/27/entry4.html"
And I should see "Page : blog category index page" in "_site/blog/index.html"
And I should see "Post entry1: <p>content for entry1.</p>" in "_site/2009/03/27/entry1.html"
And I should see "Post entry2: <p>content for entry2.</p>" in "_site/2009/04/27/entry2.html"
And I should see "Post entry3: <p>content for entry3.</p>" in "_site/category/2009/05/27/entry3.html"
And I should see "Post entry4: <p>content for entry4.</p>" in "_site/category/2009/06/27/entry4.html"
Scenario: Basic site with include tag
Given I have a _includes directory

View File

@ -75,10 +75,19 @@ module Jekyll
#
# Returns nothing
def render(layouts, site_payload)
payload = {"page" => self.data}.deep_merge(site_payload)
payload = {
"page" => self.to_liquid
}.deep_merge(site_payload)
do_layout(payload, layouts)
end
def to_liquid
self.data.deep_merge({
"url" => self.url,
"content" => self.content })
end
# Write the generated page file to the destination directory.
# +dest_prefix+ is the String path to the destination dir
# +dest_suffix+ is a suffix path to the destination dir

View File

@ -167,12 +167,10 @@ module Jekyll
# Returns nothing
def render(layouts, site_payload)
# construct payload
payload =
{
payload = {
"site" => { "related_posts" => related_posts(site_payload["site"]["posts"]) },
"page" => self.to_liquid
}
payload = payload.deep_merge(site_payload)
}.deep_merge(site_payload)
do_layout(payload, layouts)
end

View File

@ -230,11 +230,13 @@ module Jekyll
#
# Returns {"site" => {"time" => <Time>,
# "posts" => [<Post>],
# "pages" => [<Page>],
# "categories" => [<Post>]}
def site_payload
{"site" => self.config.merge({
"time" => self.time,
"posts" => self.posts.sort { |a,b| b <=> a },
"pages" => self.pages,
"categories" => post_attr_hash('categories'),
"tags" => post_attr_hash('tags')})}
end