henshin 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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