henshin 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. data/.gitignore +5 -1
  2. data/README.markdown +9 -46
  3. data/Rakefile +2 -1
  4. data/VERSION +1 -1
  5. data/bin/henshin +11 -12
  6. data/henshin.gemspec +20 -27
  7. data/lib/henshin.rb +21 -98
  8. data/lib/henshin/archive.rb +87 -115
  9. data/{bin → lib/henshin/exec}/files.rb +0 -0
  10. data/lib/henshin/ext.rb +35 -58
  11. data/lib/henshin/gen.rb +83 -68
  12. data/lib/henshin/labels.rb +144 -0
  13. data/lib/henshin/plugin.rb +70 -33
  14. data/lib/henshin/plugins/highlight.rb +19 -26
  15. data/lib/henshin/plugins/liquid.rb +50 -52
  16. data/lib/henshin/plugins/maruku.rb +14 -16
  17. data/lib/henshin/plugins/sass.rb +19 -23
  18. data/lib/henshin/plugins/textile.rb +14 -16
  19. data/lib/henshin/post.rb +67 -120
  20. data/lib/henshin/site.rb +154 -131
  21. data/lib/henshin/static.rb +10 -8
  22. data/test/helper.rb +20 -8
  23. data/test/site/css/{includes/reset.sass → _reset.sass} +0 -0
  24. data/test/site/css/screen.sass +1 -1
  25. data/test/site/index.html +2 -3
  26. data/test/site/layouts/archive_date.html +5 -4
  27. data/test/site/layouts/archive_month.html +10 -5
  28. data/test/site/layouts/archive_year.html +13 -6
  29. data/test/site/layouts/category_page.html +7 -7
  30. data/test/site/layouts/main.html +3 -4
  31. data/test/site/layouts/post.html +1 -1
  32. data/test/site/layouts/tag_index.html +3 -2
  33. data/test/site/layouts/tag_page.html +6 -6
  34. data/test/site/options.yaml +2 -2
  35. data/test/site/plugins/test.rb +1 -3
  36. data/test/site/posts/Testing-Stuff.markdown +1 -1
  37. data/test/site/posts/Textile-Test.textile +1 -1
  38. data/test/site/posts/lorem-ipsum.markdown +1 -1
  39. data/test/site/posts/same-date.markdown +1 -1
  40. data/test/{test_henshin.rb → suite.rb} +0 -1
  41. data/test/test_gen.rb +98 -0
  42. data/test/test_options.rb +34 -19
  43. data/test/test_post.rb +67 -0
  44. data/test/test_site.rb +159 -46
  45. data/test/test_static.rb +13 -0
  46. metadata +53 -32
  47. data/lib/henshin/categories.rb +0 -29
  48. data/lib/henshin/tags.rb +0 -28
  49. data/test/test_archives.rb +0 -27
  50. data/test/test_categories.rb +0 -0
  51. data/test/test_gens.rb +0 -54
  52. data/test/test_layouts.rb +0 -14
  53. data/test/test_posts.rb +0 -75
  54. data/test/test_statics.rb +0 -0
  55. data/test/test_tags.rb +0 -0
  56. data/test/text_exts.rb +0 -0
@@ -1,29 +0,0 @@
1
- module Henshin
2
- class Category
3
-
4
- attr_accessor :name, :posts
5
-
6
- def initialize( name )
7
- @name = name
8
- @posts = []
9
- end
10
-
11
- def to_hash
12
- hash = {
13
- 'name' => @name,
14
- 'posts' => @posts.sort.collect {|i| i.to_hash},
15
- 'url' => self.url
16
- }
17
- end
18
-
19
- def url
20
- "/categories/#{@name.slugify}/"
21
- end
22
-
23
-
24
- def inspect
25
- "#<Category:#{@name}>"
26
- end
27
-
28
- end
29
- end
@@ -1,28 +0,0 @@
1
- module Henshin
2
- class Tag
3
-
4
- attr_accessor :name, :posts
5
-
6
- def initialize( name )
7
- @name = name
8
- @posts = []
9
- end
10
-
11
- def to_hash
12
- hash = {
13
- 'name' => @name,
14
- 'posts' => @posts.sort.collect {|i| i.to_hash},
15
- 'url' => self.url
16
- }
17
- end
18
-
19
- def url
20
- "/tags/#{@name.slugify}/"
21
- end
22
-
23
- def inspect
24
- "#<Tag:#{@name}>"
25
- end
26
-
27
- end
28
- end
@@ -1,27 +0,0 @@
1
- require File.join(File.dirname(__FILE__) ,'helper')
2
-
3
- class TestArchives < Test::Unit::TestCase
4
- context "An archive" do
5
-
6
- setup do
7
- @site = new_site
8
- end
9
-
10
- should "turn to hash" do
11
-
12
- end
13
-
14
- should "turn to hash of dates" do
15
-
16
- end
17
-
18
- should "turn to hash of months" do
19
-
20
- end
21
-
22
- should "turn to hash of years" do
23
-
24
- end
25
-
26
- end
27
- end
File without changes
@@ -1,54 +0,0 @@
1
- require File.join(File.dirname(__FILE__) ,'helper')
2
-
3
- class TestGens < Test::Unit::TestCase
4
- context "A gen" do
5
-
6
- setup do
7
- @site = new_site
8
- @gen = Henshin::Gen.new "#{root_dir}/index.html", @site
9
- remove_site
10
- end
11
-
12
- should "read frontmatter" do
13
- @site.read_layouts
14
- @gen.read_yaml
15
- assert_equal 'Home Page', @gen.title
16
- assert_equal File.open("#{root_dir}/layouts/main.html", "r"){|f| f.read}, @gen.layout
17
- end
18
-
19
- should "render with correct layout" do
20
- @site.read_layouts
21
- @gen.read_yaml
22
- # index.html uses 'layout: main'
23
- assert_equal File.open("#{root_dir}/layouts/main.html", "r"){|f| f.read}, @gen.layout
24
- end
25
-
26
- should "have the correct permalink and url" do
27
- @gen.read_yaml
28
- assert_equal '/index.html', @gen.permalink
29
- assert_equal '/', @gen.url
30
- end
31
-
32
- should "respond to #to_hash" do
33
- @gen.process
34
- assert_equal @gen.title, @gen.to_hash['title']
35
- assert_equal @gen.permalink, @gen.to_hash['permalink']
36
- assert_equal @gen.url, @gen.to_hash['url']
37
- assert_equal @gen.content, @gen.to_hash['content']
38
- end
39
-
40
- should "allow a hash to be added to the payload" do
41
- payload = { :name => 'people', :payload => {'fname' => 'John', 'sname' => 'Doe'} }
42
- gen = Henshin::Gen.new( "#{root_dir}/index.html", @site, payload )
43
- gen.read_yaml
44
- assert_equal payload[:payload], gen.payload['people']
45
- end
46
-
47
- should "be sortable" do
48
- another_gen = Henshin::Gen.new( "#{root_dir}/css/print.sass", @site )
49
- gen_array = [@gen, another_gen]
50
- assert_equal gen_array.reverse, gen_array.sort
51
- end
52
-
53
- end
54
- end
@@ -1,14 +0,0 @@
1
- require File.join(File.dirname(__FILE__) ,'helper')
2
-
3
- class TestLayouts < Test::Unit::TestCase
4
- context "A layout" do
5
-
6
- setup do
7
- @site = new_site
8
- remove_site
9
- end
10
-
11
-
12
-
13
- end
14
- end
@@ -1,75 +0,0 @@
1
- require File.join(File.dirname(__FILE__) ,'helper')
2
-
3
- class TestPosts < Test::Unit::TestCase
4
- context "A post" do
5
-
6
- setup do
7
- @site = new_site
8
- @site.read
9
- @site.process
10
- @post = Henshin::Post.new( "#{root_dir}/posts/lorem-ipsum.markdown", @site )
11
- remove_site
12
- end
13
-
14
- should "get data from the filename" do
15
- post_file = "#{root_dir}/posts/2010-08-10-lorem-ipsum.markdown"
16
- site = @site
17
- site.config[:file_name] = "{date}-{title-with-dashes}.{extension}"
18
- post = Henshin::Post.new( post_file, site )
19
- post.read_name
20
- assert_equal 'Lorem Ipsum', post.title
21
- assert_equal Time.parse('2010-08-10'), post.date
22
- assert_equal 'markdown', post.extension
23
- end
24
-
25
- should "get category from folder" do
26
- post_file = "#{root_dir}/posts/category/test-post.markdown"
27
- post = Henshin::Post.new( post_file, @site )
28
- post.read_name
29
- assert_equal 'category', post.category
30
- end
31
-
32
- should "render with correct layout" do
33
- @post.process
34
- # lorem-ipsum.markdown uses default 'layout: post'
35
- assert_equal File.open("#{root_dir}/layouts/post.html"){|f| f.read} , @post.layout
36
- end
37
-
38
- should "read frontmatter" do
39
- @post.read_yaml
40
- assert_equal 'Lorem Ipsum', @post.title
41
- assert_equal Time.parse('2010-05-15 at 13:23:47'), @post.date
42
- assert_equal ['test', 'lorem'], @post.tags
43
- end
44
-
45
- should "have the correct permalink and url" do
46
- @post.process
47
- assert_equal "/2010/5/15/lorem-ipsum/index.html", @post.permalink
48
- assert_equal "/2010/5/15/lorem-ipsum/", @post.url
49
- end
50
-
51
- should "respond to #to_hash" do
52
- @post.process
53
- assert_equal @post.title, @post.to_hash['title']
54
- assert_equal @post.author, @post.to_hash['author']
55
- assert_equal @post.permalink, @post.to_hash['permalink']
56
- assert_equal @post.url, @post.to_hash['url']
57
- assert_equal @post.date, @post.to_hash['date']
58
- assert_equal @post.category, @post.to_hash['category']
59
- assert_equal @post.content, @post.to_hash['content']
60
- end
61
-
62
- should "be sortable" do
63
- another_post = Henshin::Post.new( "#{root_dir}/posts/Testing-Stuff.markdown", @site )
64
- post_array = [another_post, @post]
65
- assert_equal post_array.reverse, post_array.sort
66
- end
67
-
68
- should "sort by url if dates are same" do
69
- another_post = Henshin::Post.new( "#{root_dir}/posts/same-date.markdown", @site )
70
- post_array = [another_post, @post]
71
- assert_equal post_array.reverse, post_array.sort
72
- end
73
-
74
- end
75
- end
File without changes
File without changes
File without changes