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,84 +1,197 @@
1
1
  require File.join(File.dirname(__FILE__) ,'helper')
2
2
 
3
3
  class TestSite < Test::Unit::TestCase
4
- context "Building sites" do
5
-
6
- setup do
7
- @site = new_site
4
+ context "A new site" do
5
+
6
+ should "reset data" do
7
+ site = new_site
8
+ site.reset
9
+ assert_equal [], site.posts
10
+ assert_equal [], site.gens
11
+ assert_equal [], site.statics
12
+ assert_equal Hash.new, site.layouts
13
+ assert site.archive.size.zero?
14
+ assert site.tags.size.zero?
15
+ assert site.categories.size.zero?
8
16
  end
9
17
 
10
- should "reset all data before anything else" do
11
- remove_site
12
- @site.reset
18
+ should "load and sort plugins" do
19
+ site = new_site
13
20
 
14
- assert_equal 0, @site.posts.length
15
- assert_equal 0, @site.gens.length
16
- assert_equal 0, @site.statics.length
17
- assert_equal 0, @site.tags.length
18
- assert_equal 0, @site.categories.length
19
- assert_equal 0, @site.layouts.length
21
+ site.plugins[:generators].each_value do |i|
22
+ assert_is_a Henshin::Generator, i
23
+ end
24
+
25
+ site.plugins[:layoutors].each do |i|
26
+ assert_is_a Henshin::Layoutor, i
27
+ end
28
+ end
29
+
30
+ end
31
+
32
+
33
+ context "Reading site" do
34
+
35
+ should "read layouts" do
36
+ site = new_site
37
+ site.read_layouts
38
+ l = Dir.glob( File.join(root_dir, 'layouts', '*.*') )
39
+ assert_equal l.size, site.layouts.size
40
+ end
41
+
42
+ should "read layouts first" do
43
+ site = new_site
44
+ site.read
45
+ if mock.instance_of(Henshin::Site).read_posts
46
+ assert site.layouts.size > 0
47
+ end
48
+ if mock.instance_of(Henshin::Site).read_gens
49
+ assert site.layouts.size > 0
50
+ end
51
+ if mock.instance_of(Henshin::Site).read_statics
52
+ assert site.layouts.size > 0
53
+ end
20
54
  end
21
55
 
22
56
  should "read posts" do
23
- @site.read_posts
57
+ site = new_site
58
+ site.read_posts
24
59
  p = Dir.glob( File.join(root_dir, 'posts', '**', '*.*') )
25
- assert_equal p.size, @site.posts.size
60
+ assert_equal p.size, site.posts.size
26
61
  end
27
62
 
28
- should "read layouts" do
29
- @site.read_layouts
30
- l = Dir.glob( File.join(root_dir, 'layouts', '*.*') )
31
- assert_equal l.size, @site.layouts.size
63
+ should "read gens" do
64
+ site = new_site
65
+ site.read_gens
66
+ # For reference these are the gens
67
+ # /css/print.sass
68
+ # /index.html
69
+ assert_equal 2, site.gens.size
32
70
  end
33
71
 
34
- should "read static files" do
35
- @site.read_statics
72
+ should "read statics" do
73
+ site = new_site
74
+ site.read_statics
36
75
  # For reference these are the static files:
37
76
  # /css/screen.css
38
77
  # /static.html
39
- assert_equal 2, @site.statics.size
78
+ assert_equal 2, site.statics.size
40
79
  end
41
80
 
42
- should "read gens" do
43
- @site.read_gens
44
- # For reference these are the gens
45
- # /css/print.sass
46
- # /css/includes/reset.sass
47
- # /index.html
48
- assert_equal 3, @site.gens.size
81
+ end
82
+
83
+ context "Processing site" do
84
+
85
+ should "process posts" do
86
+ site = new_site
87
+ site.read
88
+ site2 = new_site
89
+ site2.read.process
90
+ assert_not_equal site.posts, site2.posts
91
+ end
92
+
93
+ should "process gens" do
94
+ site = new_site
95
+ site.read
96
+ site2 = new_site
97
+ site2.read.process
98
+ assert_not_equal site.gens, site2.gens
49
99
  end
50
100
 
51
- should "have a payload" do
52
- assert @site.payload['site'].is_a? Hash
101
+ should "sort posts" do
102
+ site = new_site
103
+ site.read.process
104
+ assert_equal site.posts, site.posts.sort
53
105
  end
54
106
 
55
- should "create tags" do
56
- @site.read
57
- @site.process
107
+ should "sort gens" do
108
+ site = new_site
109
+ site.read.process
110
+ assert_equal site.gens, site.gens.sort
111
+ end
112
+
113
+ should "build tags array" do
114
+ site = new_site
115
+ site.read.process
58
116
  # For reference these are the tags:
59
117
  # test: lorem-ipsum.markdown, same-date.markdown, Testing-Stuff.markdown, Textile-Test.textile
60
118
  # markdown: Testing-Stuff.markdown
61
119
  # lorem: lorem-ipsum.markdown, same-date.markdown
62
120
  # plugin: Textile-Test.textile
63
- assert_equal 4, @site.tags.size
64
- assert_equal 4, @site.tags['test'].posts.size
121
+ assert_equal 4, site.tags.size
122
+ assert site.tags[0].is_a? Henshin::Label
123
+ assert_equal 'tag', site.tags.base
65
124
  end
66
125
 
67
- should "create categories" do
68
- @site.read
69
- @site.process
126
+ should "build categories array" do
127
+ site = new_site
128
+ site.read.process
70
129
  # For reference these are the categories:
71
130
  # cat: cat/test.markdown
72
131
  # test: Testing-Stuff.markdown
73
- assert_equal 2, @site.categories.size
74
- assert_equal 1, @site.categories['cat'].posts.size
132
+ assert_equal 2, site.categories.size
133
+ assert site.categories[0].is_a? Henshin::Label
134
+ assert_equal 'category', site.categories.base
75
135
  end
76
136
 
77
- should "create archives" do
78
- @site.read
79
- @site.process
80
- assert @site.archive.is_a? Henshin::Archive
137
+ should "build archives" do
138
+ site = new_site
139
+ site.read.process
140
+ assert site.archive.size > 0
81
141
  end
82
-
142
+
83
143
  end
144
+
145
+ context "Rendering site" do
146
+
147
+ should "render posts" do
148
+ site = new_site.read.process
149
+ site2 = new_site.read.process.render
150
+ assert_not_equal site.posts, site2.posts
151
+ end
152
+
153
+ should "render gens" do
154
+ site = new_site.read.process
155
+ site2 = new_site.read.process.render
156
+ assert_not_equal site.gens, site2.gens
157
+ end
158
+
159
+ should "not render statics" do
160
+ site = new_site
161
+ site.read.process
162
+ site2 = new_site
163
+ site2.read.process.render
164
+ assert_equal site.statics[0].content, site2.statics[0].content
165
+ end
166
+
167
+ end
168
+
169
+ context "Writing site" do
170
+
171
+ should "write posts" do
172
+
173
+ end
174
+
175
+ should "write gens" do
176
+
177
+ end
178
+
179
+ should "write statics" do
180
+
181
+ end
182
+
183
+ should "write tags" do
184
+
185
+ end
186
+
187
+ should "write categories" do
188
+
189
+ end
190
+
191
+ should "write archive" do
192
+
193
+ end
194
+
195
+ end
196
+
84
197
  end
@@ -0,0 +1,13 @@
1
+ require File.join(File.dirname(__FILE__) ,'helper')
2
+
3
+ class TestStatic < Test::Unit::TestCase
4
+ context "A static" do
5
+
6
+ should "be written to the same relative path" do
7
+ site = new_site
8
+ stat = Henshin::Static.new(site.root + "static.html", site)
9
+ assert_equal Pathname.new("#{target_dir}/static.html"), stat.write_path
10
+ end
11
+
12
+ end
13
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: henshin
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 15
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 3
8
+ - 4
8
9
  - 0
9
- version: 0.3.0
10
+ version: 0.4.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - hawx
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-06-22 00:00:00 +01:00
18
- default_executable:
18
+ date: 2010-07-17 00:00:00 +01:00
19
+ default_executable: henshin
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: titlecase
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 27
27
30
  segments:
28
31
  - 0
29
32
  - 1
@@ -35,9 +38,11 @@ dependencies:
35
38
  name: directory_watcher
36
39
  prerelease: false
37
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
38
42
  requirements:
39
43
  - - ">="
40
44
  - !ruby/object:Gem::Version
45
+ hash: 25
41
46
  segments:
42
47
  - 1
43
48
  - 3
@@ -49,9 +54,11 @@ dependencies:
49
54
  name: maruku
50
55
  prerelease: false
51
56
  requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
52
58
  requirements:
53
59
  - - ">="
54
60
  - !ruby/object:Gem::Version
61
+ hash: 7
55
62
  segments:
56
63
  - 0
57
64
  - 6
@@ -63,9 +70,11 @@ dependencies:
63
70
  name: liquid
64
71
  prerelease: false
65
72
  requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
66
74
  requirements:
67
75
  - - ">="
68
76
  - !ruby/object:Gem::Version
77
+ hash: 15
69
78
  segments:
70
79
  - 2
71
80
  - 0
@@ -74,33 +83,52 @@ dependencies:
74
83
  type: :runtime
75
84
  version_requirements: *id004
76
85
  - !ruby/object:Gem::Dependency
77
- name: thoughtbot-shoulda
86
+ name: parsey
78
87
  prerelease: false
79
88
  requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
80
90
  requirements:
81
91
  - - ">="
82
92
  - !ruby/object:Gem::Version
93
+ hash: 29
83
94
  segments:
84
95
  - 0
85
- version: "0"
86
- type: :development
96
+ - 1
97
+ - 3
98
+ version: 0.1.3
99
+ type: :runtime
87
100
  version_requirements: *id005
88
101
  - !ruby/object:Gem::Dependency
89
- name: yard
102
+ name: thoughtbot-shoulda
90
103
  prerelease: false
91
104
  requirement: &id006 !ruby/object:Gem::Requirement
105
+ none: false
92
106
  requirements:
93
107
  - - ">="
94
108
  - !ruby/object:Gem::Version
109
+ hash: 3
95
110
  segments:
96
111
  - 0
97
112
  version: "0"
98
113
  type: :development
99
114
  version_requirements: *id006
115
+ - !ruby/object:Gem::Dependency
116
+ name: yard
117
+ prerelease: false
118
+ requirement: &id007 !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ hash: 3
124
+ segments:
125
+ - 0
126
+ version: "0"
127
+ type: :development
128
+ version_requirements: *id007
100
129
  description: Henshin is a static site generator, with a plugin system and more
101
130
  email: m@hawx.me
102
131
  executables:
103
- - files.rb
104
132
  - henshin
105
133
  extensions: []
106
134
 
@@ -113,14 +141,14 @@ files:
113
141
  - README.markdown
114
142
  - Rakefile
115
143
  - VERSION
116
- - bin/files.rb
117
144
  - bin/henshin
118
145
  - henshin.gemspec
119
146
  - lib/henshin.rb
120
147
  - lib/henshin/archive.rb
121
- - lib/henshin/categories.rb
148
+ - lib/henshin/exec/files.rb
122
149
  - lib/henshin/ext.rb
123
150
  - lib/henshin/gen.rb
151
+ - lib/henshin/labels.rb
124
152
  - lib/henshin/plugin.rb
125
153
  - lib/henshin/plugins/highlight.rb
126
154
  - lib/henshin/plugins/liquid.rb
@@ -130,9 +158,8 @@ files:
130
158
  - lib/henshin/post.rb
131
159
  - lib/henshin/site.rb
132
160
  - lib/henshin/static.rb
133
- - lib/henshin/tags.rb
134
161
  - test/helper.rb
135
- - test/site/css/includes/reset.sass
162
+ - test/site/css/_reset.sass
136
163
  - test/site/css/print.css
137
164
  - test/site/css/screen.sass
138
165
  - test/site/includes/head.html
@@ -154,17 +181,12 @@ files:
154
181
  - test/site/posts/lorem-ipsum.markdown
155
182
  - test/site/posts/same-date.markdown
156
183
  - test/site/static.html
157
- - test/test_archives.rb
158
- - test/test_categories.rb
159
- - test/test_gens.rb
160
- - test/test_henshin.rb
161
- - test/test_layouts.rb
184
+ - test/suite.rb
185
+ - test/test_gen.rb
162
186
  - test/test_options.rb
163
- - test/test_posts.rb
187
+ - test/test_post.rb
164
188
  - test/test_site.rb
165
- - test/test_statics.rb
166
- - test/test_tags.rb
167
- - test/text_exts.rb
189
+ - test/test_static.rb
168
190
  has_rdoc: true
169
191
  homepage: http://github.com/hawx/henshin
170
192
  licenses: []
@@ -175,37 +197,36 @@ rdoc_options:
175
197
  require_paths:
176
198
  - lib
177
199
  required_ruby_version: !ruby/object:Gem::Requirement
200
+ none: false
178
201
  requirements:
179
202
  - - ">="
180
203
  - !ruby/object:Gem::Version
204
+ hash: 3
181
205
  segments:
182
206
  - 0
183
207
  version: "0"
184
208
  required_rubygems_version: !ruby/object:Gem::Requirement
209
+ none: false
185
210
  requirements:
186
211
  - - ">="
187
212
  - !ruby/object:Gem::Version
213
+ hash: 3
188
214
  segments:
189
215
  - 0
190
216
  version: "0"
191
217
  requirements: []
192
218
 
193
219
  rubyforge_project:
194
- rubygems_version: 1.3.6
220
+ rubygems_version: 1.3.7
195
221
  signing_key:
196
222
  specification_version: 3
197
223
  summary: Henshin is a static site generator
198
224
  test_files:
199
225
  - test/helper.rb
200
226
  - test/site/plugins/test.rb
201
- - test/test_archives.rb
202
- - test/test_categories.rb
203
- - test/test_gens.rb
204
- - test/test_henshin.rb
205
- - test/test_layouts.rb
227
+ - test/suite.rb
228
+ - test/test_gen.rb
206
229
  - test/test_options.rb
207
- - test/test_posts.rb
230
+ - test/test_post.rb
208
231
  - test/test_site.rb
209
- - test/test_statics.rb
210
- - test/test_tags.rb
211
- - test/text_exts.rb
232
+ - test/test_static.rb