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.
- data/.gitignore +5 -1
- data/README.markdown +9 -46
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/bin/henshin +11 -12
- data/henshin.gemspec +20 -27
- data/lib/henshin.rb +21 -98
- data/lib/henshin/archive.rb +87 -115
- data/{bin → lib/henshin/exec}/files.rb +0 -0
- data/lib/henshin/ext.rb +35 -58
- data/lib/henshin/gen.rb +83 -68
- data/lib/henshin/labels.rb +144 -0
- data/lib/henshin/plugin.rb +70 -33
- data/lib/henshin/plugins/highlight.rb +19 -26
- data/lib/henshin/plugins/liquid.rb +50 -52
- data/lib/henshin/plugins/maruku.rb +14 -16
- data/lib/henshin/plugins/sass.rb +19 -23
- data/lib/henshin/plugins/textile.rb +14 -16
- data/lib/henshin/post.rb +67 -120
- data/lib/henshin/site.rb +154 -131
- data/lib/henshin/static.rb +10 -8
- data/test/helper.rb +20 -8
- data/test/site/css/{includes/reset.sass → _reset.sass} +0 -0
- data/test/site/css/screen.sass +1 -1
- data/test/site/index.html +2 -3
- data/test/site/layouts/archive_date.html +5 -4
- data/test/site/layouts/archive_month.html +10 -5
- data/test/site/layouts/archive_year.html +13 -6
- data/test/site/layouts/category_page.html +7 -7
- data/test/site/layouts/main.html +3 -4
- data/test/site/layouts/post.html +1 -1
- data/test/site/layouts/tag_index.html +3 -2
- data/test/site/layouts/tag_page.html +6 -6
- data/test/site/options.yaml +2 -2
- data/test/site/plugins/test.rb +1 -3
- data/test/site/posts/Testing-Stuff.markdown +1 -1
- data/test/site/posts/Textile-Test.textile +1 -1
- data/test/site/posts/lorem-ipsum.markdown +1 -1
- data/test/site/posts/same-date.markdown +1 -1
- data/test/{test_henshin.rb → suite.rb} +0 -1
- data/test/test_gen.rb +98 -0
- data/test/test_options.rb +34 -19
- data/test/test_post.rb +67 -0
- data/test/test_site.rb +159 -46
- data/test/test_static.rb +13 -0
- metadata +53 -32
- data/lib/henshin/categories.rb +0 -29
- data/lib/henshin/tags.rb +0 -28
- data/test/test_archives.rb +0 -27
- data/test/test_categories.rb +0 -0
- data/test/test_gens.rb +0 -54
- data/test/test_layouts.rb +0 -14
- data/test/test_posts.rb +0 -75
- data/test/test_statics.rb +0 -0
- data/test/test_tags.rb +0 -0
- data/test/text_exts.rb +0 -0
data/test/test_site.rb
CHANGED
@@ -1,84 +1,197 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__) ,'helper')
|
2
2
|
|
3
3
|
class TestSite < Test::Unit::TestCase
|
4
|
-
context "
|
5
|
-
|
6
|
-
|
7
|
-
|
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 "
|
11
|
-
|
12
|
-
@site.reset
|
18
|
+
should "load and sort plugins" do
|
19
|
+
site = new_site
|
13
20
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
-
|
57
|
+
site = new_site
|
58
|
+
site.read_posts
|
24
59
|
p = Dir.glob( File.join(root_dir, 'posts', '**', '*.*') )
|
25
|
-
assert_equal p.size,
|
60
|
+
assert_equal p.size, site.posts.size
|
26
61
|
end
|
27
62
|
|
28
|
-
should "read
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
35
|
-
|
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,
|
78
|
+
assert_equal 2, site.statics.size
|
40
79
|
end
|
41
80
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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 "
|
52
|
-
|
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 "
|
56
|
-
|
57
|
-
|
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,
|
64
|
-
|
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 "
|
68
|
-
|
69
|
-
|
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,
|
74
|
-
|
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 "
|
78
|
-
|
79
|
-
|
80
|
-
assert
|
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
|
data/test/test_static.rb
ADDED
@@ -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
|
-
-
|
8
|
+
- 4
|
8
9
|
- 0
|
9
|
-
version: 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-
|
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:
|
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
|
-
|
86
|
-
|
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:
|
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/
|
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/
|
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/
|
158
|
-
- test/
|
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/
|
187
|
+
- test/test_post.rb
|
164
188
|
- test/test_site.rb
|
165
|
-
- test/
|
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.
|
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/
|
202
|
-
- test/
|
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/
|
230
|
+
- test/test_post.rb
|
208
231
|
- test/test_site.rb
|
209
|
-
- test/
|
210
|
-
- test/test_tags.rb
|
211
|
-
- test/text_exts.rb
|
232
|
+
- test/test_static.rb
|