Adding support for setting post categories through YAML if not specified by directory structure
This commit is contained in:
parent
4bcfaeae69
commit
1211f23b53
|
@ -1,3 +1,5 @@
|
||||||
test/dest/
|
test/dest/
|
||||||
*.gem
|
*.gem
|
||||||
pkg/
|
pkg/
|
||||||
|
*.swp
|
||||||
|
*~
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -71,6 +71,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")
|
||||||
layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
|
layouts = {"default" => Layout.new(File.join(File.dirname(__FILE__), *%w[source _layouts]), "simple.html")}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue