From 1cadd8f5b08675821d5f85b7e4b7b1a74a604cc2 Mon Sep 17 00:00:00 2001 From: remi Date: Tue, 23 Dec 2008 03:20:27 -0700 Subject: [PATCH 1/4] Post's YAML front matter is available on post object. No longer a need for post.data (redundant). --- History.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/History.txt b/History.txt index 947f56c8..e4b7dacf 100644 --- a/History.txt +++ b/History.txt @@ -4,7 +4,6 @@ * Minor Enhancements * Added post categories based on directories containing _posts [github.com/mreid] * Added new date filter that shows the full month name [github.com/mreid] - * Make post's YAML front matter available as post.data [github.com/remi] * Merge Post's YAML front matter into its to_liquid payload [github.com/remi] * Restrict includes to regular files underneath _includes * Bug Fixes From 896311e572c29e3bcd28027f5f500c44acf7a96d Mon Sep 17 00:00:00 2001 From: remi Date: Tue, 23 Dec 2008 04:31:31 -0700 Subject: [PATCH 2/4] updated Manifest (rake gem wasn't working) --- Manifest.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Manifest.txt b/Manifest.txt index ac74dfba..1f0b7764 100644 --- a/Manifest.txt +++ b/Manifest.txt @@ -22,10 +22,10 @@ test/source/_layouts/default.html test/source/_layouts/simple.html test/source/_posts/2008-10-18-foo-bar.textile test/source/_posts/2008-11-21-complex.textile +test/source/_posts/2008-12-03-permalinked-post.textile test/source/_posts/2008-12-13-include.markdown test/source/css/screen.css test/source/index.html -test/source/posts/2008-12-03-permalinked-post.textile test/suite.rb test/test_jekyll.rb test/test_post.rb From 0f848ee2d7c72bde0fec7c02998c7e03efa9cb46 Mon Sep 17 00:00:00 2001 From: remi Date: Tue, 23 Dec 2008 04:59:47 -0700 Subject: [PATCH 3/4] Rendered post content wasn't available when pages were being rendered (as {{ site.posts }}). This ensures that we read & render _posts before rendering other pages. --- lib/jekyll/site.rb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 433c754a..0a74fc23 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -54,7 +54,12 @@ module Jekyll entries = entries.reject { |e| File.directory?(e) } entries.each do |f| - self.posts << Post.new(base, f) if Post.valid?(f) + if Post.valid?(f) + post = Post.new(base, f) + post.content = Liquid::Template.parse(post.content).render(site_payload, [Jekyll::Filters]) + post.transform + self.posts << post + end end self.posts.sort! @@ -86,10 +91,15 @@ module Jekyll (e != '_posts') and ['.', '_'].include?(e[0..0]) } + # we need to make sure to process _posts *first* otherwise they + # might not be available yet to other templates as {{ site.posts }} + if entries.include? '_posts' + entries.delete '_posts' + read_posts(File.join(base, '_posts')) + end + entries.each do |f| - if f == '_posts' - read_posts(File.join(base, f)) - elsif File.directory?(File.join(base, f)) + if File.directory?(File.join(base, f)) next if self.dest.sub(/\/$/, '') == File.join(base, f) transform_pages(File.join(dir, f)) else From b45fd65a36d9e38c03e617cdf1e71c86059fe306 Mon Sep 17 00:00:00 2001 From: remi Date: Tue, 23 Dec 2008 05:32:25 -0700 Subject: [PATCH 4/4] added tests to confirm that {{ site.posts }} in index.html was empty and {{ post.content }} wasn't rendering (both are now fixed) --- test/source/index.html | 12 +++++++++++- test/test_generated_site.rb | 21 +++++++++++++++++++++ test/test_site.rb | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 test/test_generated_site.rb diff --git a/test/source/index.html b/test/source/index.html index b3cc7556..493fce7c 100644 --- a/test/source/index.html +++ b/test/source/index.html @@ -5,8 +5,18 @@ title: Tom Preston-Werner h1. Welcome to my site +h2. Please read our {{ site.posts | size }} Posts + \ No newline at end of file + + +{% assign first_post = site.posts.first %} +
+

{{ first_post.title }}

+
+ {{ first_post.content }} +
+
diff --git a/test/test_generated_site.rb b/test/test_generated_site.rb new file mode 100644 index 00000000..56e5e422 --- /dev/null +++ b/test/test_generated_site.rb @@ -0,0 +1,21 @@ +require File.dirname(__FILE__) + '/helper' + +class TestGeneratedSite < Test::Unit::TestCase + def setup + clear_dest + source = File.join(File.dirname(__FILE__), *%w[source]) + @s = Site.new(source, dest_dir) + @s.process + @index = File.read(File.join(dest_dir, 'index.html')) + end + + def test_site_posts_in_index + # confirm that {{ site.posts }} is working + assert @index.include?("#{@s.posts.size} Posts") + end + + def test_post_content_in_index + # confirm that the {{ post.content }} is rendered OK + assert @index.include?('

This is cool

') + end +end diff --git a/test/test_site.rb b/test/test_site.rb index ccfd4117..bde6a008 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -27,4 +27,4 @@ class TestSite < Test::Unit::TestCase @s.process end -end \ No newline at end of file +end