Adding support for setting post categories through YAML if not specified by directory structure

This commit is contained in:
Nick Quaranto 2009-01-28 09:22:46 -05:00
parent 4bcfaeae69
commit 1211f23b53
6 changed files with 42 additions and 12 deletions

2
.gitignore vendored
View File

@ -1,3 +1,5 @@
test/dest/ test/dest/
*.gem *.gem
pkg/ pkg/
*.swp
*~

View File

@ -38,6 +38,14 @@ module Jekyll
self.process(name) self.process(name)
self.read_yaml(@base, name) self.read_yaml(@base, name)
if self.categories.empty?
if self.data.has_key?('category')
self.categories << self.data['category']
elsif self.data.has_key?('categories')
self.categories = self.data['categories'].split
end
end
end end
# Spaceship is based on Post#date # Spaceship is based on Post#date

View File

@ -1,6 +1,7 @@
require File.join(File.dirname(__FILE__), *%w[.. lib jekyll]) require File.join(File.dirname(__FILE__), *%w[.. lib jekyll])
require 'test/unit' require 'test/unit'
require 'redgreen'
include Jekyll include Jekyll
@ -10,4 +11,4 @@ end
def clear_dest def clear_dest
FileUtils.rm_rf(dest_dir) FileUtils.rm_rf(dest_dir)
end end

View File

@ -3,8 +3,8 @@ require File.dirname(__FILE__) + '/helper'
class TestGeneratedSite < Test::Unit::TestCase class TestGeneratedSite < Test::Unit::TestCase
def setup def setup
clear_dest clear_dest
source = File.join(File.dirname(__FILE__), *%w[source]) @source = File.join(File.dirname(__FILE__), *%w[source])
@s = Site.new(source, dest_dir) @s = Site.new(@source, dest_dir)
@s.process @s.process
@index = File.read(File.join(dest_dir, 'index.html')) @index = File.read(File.join(dest_dir, 'index.html'))
end end
@ -16,6 +16,10 @@ class TestGeneratedSite < Test::Unit::TestCase
def test_post_content_in_index def test_post_content_in_index
# confirm that the {{ post.content }} is rendered OK # confirm that the {{ post.content }} is rendered OK
assert @index.include?('<p>This <em>is</em> cool</p>') latest_post = Dir[File.join(@source, '_posts/*')].last
post = Post.new(@source, '', File.basename(latest_post))
Jekyll.content_type = post.determine_content_type
post.transform
assert @index.include?(post.content)
end end
end end

View File

@ -70,6 +70,18 @@ class TestPost < Test::Unit::TestCase
assert_equal "<h1>{{ page.title }}</h1>\n<p>Best <strong>post</strong> ever</p>", p.content assert_equal "<h1>{{ page.title }}</h1>\n<p>Best <strong>post</strong> ever</p>", p.content
end end
def test_yaml_category
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2009-01-27-category.textile")
assert p.categories.include?('foo')
end
def test_yaml_categories
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2009-01-27-categories.textile")
assert p.categories.include?('foo')
assert p.categories.include?('bar')
assert p.categories.include?('baz')
end
def test_render def test_render
p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-10-18-foo-bar.textile") p = Post.new(File.join(File.dirname(__FILE__), *%w[source]), '', "2008-10-18-foo-bar.textile")
@ -110,4 +122,4 @@ class TestPost < Test::Unit::TestCase
assert_equal "<<< <hr />\n<p>Tom Preston-Werner github.com/mojombo</p>\n\n<p>This <em>is</em> cool</p> >>>", p.output assert_equal "<<< <hr />\n<p>Tom Preston-Werner github.com/mojombo</p>\n\n<p>This <em>is</em> cool</p> >>>", p.output
end end
end end

View File

@ -2,8 +2,8 @@ require File.dirname(__FILE__) + '/helper'
class TestSite < Test::Unit::TestCase class TestSite < Test::Unit::TestCase
def setup def setup
source = File.join(File.dirname(__FILE__), *%w[source]) @source = File.join(File.dirname(__FILE__), *%w[source])
@s = Site.new(source, dest_dir) @s = Site.new(@source, dest_dir)
end end
def test_site_init def test_site_init
@ -18,16 +18,19 @@ class TestSite < Test::Unit::TestCase
def test_read_posts def test_read_posts
@s.read_posts('') @s.read_posts('')
posts = Dir[File.join(@source, '_posts/*')]
assert_equal 4, @s.posts.size assert_equal posts.size, @s.posts.size
end end
def test_site_payload def test_site_payload
clear_dest clear_dest
@s.process @s.process
assert_equal 7, @s.posts.length posts = Dir[File.join(@source, "**", "_posts/*")]
assert_equal ["category", "foo", "z_category"].sort, @s.categories.keys.sort categories = %w(bar baz category foo z_category).sort
assert_equal 1, @s.categories['foo'].length
assert_equal posts.size, @s.posts.size
assert_equal categories, @s.categories.keys.sort
assert_equal 3, @s.categories['foo'].size
end end
end end