smartgen 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +0 -8
  3. data/Gemfile.lock +25 -31
  4. data/lib/smartgen/object_hash.rb +2 -2
  5. data/lib/smartgen/version.rb +1 -1
  6. metadata +138 -194
  7. data/spec/fixtures/expectations/common/another_index.html +0 -13
  8. data/spec/fixtures/expectations/common/index.html +0 -8
  9. data/spec/fixtures/expectations/common/other_index.html +0 -13
  10. data/spec/fixtures/expectations/erb/index.html +0 -15
  11. data/spec/fixtures/expectations/erb/with_layout/index.html +0 -19
  12. data/spec/fixtures/expectations/indexer/index_with_indexer.html +0 -16
  13. data/spec/fixtures/expectations/indexer/index_with_indexer_and_numbered_index.html +0 -16
  14. data/spec/fixtures/expectations/with_layout/index.html +0 -12
  15. data/spec/fixtures/expectations/with_layout/index_with_metadata.html +0 -43
  16. data/spec/fixtures/expectations/with_layout/index_with_specific_metadata.html +0 -44
  17. data/spec/fixtures/src/assets/images/image.gif +0 -0
  18. data/spec/fixtures/src/assets/javascripts/somelib.js +0 -2
  19. data/spec/fixtures/src/assets/stylesheets/style.css +0 -2
  20. data/spec/fixtures/src/common/another_index.md +0 -12
  21. data/spec/fixtures/src/common/index.textile +0 -10
  22. data/spec/fixtures/src/common/other_index.markdown +0 -12
  23. data/spec/fixtures/src/common/somefile +0 -10
  24. data/spec/fixtures/src/erb/index.html.erb +0 -7
  25. data/spec/fixtures/src/erb/with_layout/index.html.erb +0 -7
  26. data/spec/fixtures/src/erb/with_layout/layout.html.erb +0 -5
  27. data/spec/fixtures/src/indexer/index_with_indexer.textile +0 -26
  28. data/spec/fixtures/src/indexer/index_with_indexer_and_numbered_index.textile +0 -26
  29. data/spec/fixtures/src/layout.html.erb +0 -5
  30. data/spec/fixtures/src/layout_with_metadata.html.erb +0 -22
  31. data/spec/fixtures/src/layout_with_specific_metadata.html.erb +0 -23
  32. data/spec/fixtures/src/metadata.yml +0 -43
  33. data/spec/fixtures/src/with_layout/index.textile +0 -10
  34. data/spec/fixtures/src/with_layout/index_with_specific_metadata.textile +0 -10
  35. data/spec/lib/smartgen/configuration_spec.rb +0 -5
  36. data/spec/lib/smartgen/engines/base_spec.rb +0 -92
  37. data/spec/lib/smartgen/engines/erb_spec.rb +0 -37
  38. data/spec/lib/smartgen/engines/markdown_spec.rb +0 -23
  39. data/spec/lib/smartgen/engines/textile_spec.rb +0 -19
  40. data/spec/lib/smartgen/generator_spec.rb +0 -272
  41. data/spec/lib/smartgen/indexer_spec.rb +0 -122
  42. data/spec/lib/smartgen/markup_file_spec.rb +0 -168
  43. data/spec/lib/smartgen/object_hash_spec.rb +0 -91
  44. data/spec/lib/smartgen/renderers/erb_spec.rb +0 -38
  45. data/spec/lib/smartgen/resource_spec.rb +0 -73
  46. data/spec/lib/smartgen/watcher_spec.rb +0 -71
  47. data/spec/lib/smartgen_spec.rb +0 -18
  48. data/spec/sandbox/.gitkeep +0 -0
  49. data/spec/spec_helper.rb +0 -37
@@ -1,10 +0,0 @@
1
- h1. Here is some header
2
-
3
- And here is a paragraph
4
-
5
- * some bullet lists with *style*
6
- * some bullet lists with _style_
7
-
8
- h2. Another header
9
-
10
- With some text
@@ -1,10 +0,0 @@
1
- h1. Here is some header
2
-
3
- And here is a paragraph
4
-
5
- * some bullet lists with *style*
6
- * some bullet lists with _style_
7
-
8
- h2. Another header
9
-
10
- With some text
@@ -1,5 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Smartgen::Configuration do
4
- it { subject.should be_kind_of(Smartgen::ObjectHash) }
5
- end
@@ -1,92 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Smartgen::Engine::Base do
4
- describe "processing" do
5
- describe "pre processing" do
6
- before do
7
- Smartgen::Engine::Base.pre_processors = []
8
- end
9
-
10
- context "without pre processors" do
11
- it "should just return body" do
12
- body = 'body'
13
- subject.process(body).should == body
14
- end
15
- end
16
-
17
- context "with pre processors" do
18
- class PreProcessor
19
- def process(body, metadata=Smartgen::ObjectHash.new) # just needs to respond_to?(:process)
20
- "<pre_processed>#{body}#{metadata[:name]}</pre_processed>"
21
- end
22
- end
23
-
24
- it "should pre process body" do
25
- Smartgen::Engine::Base.register(PreProcessor.new)
26
-
27
- body = 'body'
28
- subject.process(body).should == "<pre_processed>#{body}</pre_processed>"
29
- end
30
-
31
- it "should pre process body with metadata" do
32
- Smartgen::Engine::Base.register(PreProcessor.new)
33
-
34
- body = 'body'
35
- subject.process(body, Smartgen::ObjectHash.new({:name => " John"})).should == "<pre_processed>body John</pre_processed>"
36
- end
37
-
38
- it "should do run pre processors in the order they were registered" do
39
- class AnotherPreProcessor
40
- def process(body, metadata={})
41
- body.gsub(/pre_processed/, 'another')
42
- end
43
- end
44
-
45
- Smartgen::Engine::Base.register(PreProcessor.new)
46
- Smartgen::Engine::Base.register(AnotherPreProcessor.new)
47
-
48
- body = 'body'
49
- subject.process(body).should == "<another>#{body}</another>"
50
- end
51
-
52
- context "when pre processor has engine setter" do
53
- class PreProcessor
54
- attr_accessor :engine
55
- end
56
-
57
- it "should set engine on pre processor after initializing the engine" do
58
- pre_processor = PreProcessor.new
59
- Smartgen::Engine::Base.register(pre_processor)
60
- subject
61
- pre_processor.engine.should == subject
62
- end
63
- end
64
-
65
- context "when forcing processing without pre processors" do
66
- it "should return just body" do
67
- subject.process_without_pre_processors('some body').should == 'some body'
68
- end
69
- end
70
-
71
- context "of a subclass" do
72
- class OtherPreProcessor
73
- def process(body, metadata={})
74
- "<another>#{body}</another>"
75
- end
76
- end
77
-
78
- class MyCustomEngine < Smartgen::Engine::Base
79
- end
80
-
81
- it "should pre process body with different processor of ancestor" do
82
- Smartgen::Engine::Base.register(PreProcessor.new)
83
- MyCustomEngine.register(OtherPreProcessor.new)
84
-
85
- body = 'body'
86
- MyCustomEngine.new.process(body).should == "<another>#{body}</another>"
87
- end
88
- end
89
- end
90
- end
91
- end
92
- end
@@ -1,37 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Smartgen::Engine::ERB do
4
- let :body do
5
- "2 + 2 = <%= 2 * 2 %>"
6
- end
7
-
8
- let :contents do
9
- "2 + 2 = 4"
10
- end
11
-
12
- it "should process body using ERB" do
13
- subject.process(body).should == contents
14
- end
15
-
16
- it "should support .erb extension" do
17
- should be_supported('.erb')
18
- end
19
-
20
- context "with metadata" do
21
- let :body do
22
- "Some metadata: <%= metadata.name %>"
23
- end
24
-
25
- let :contents do
26
- "Some metadata: #{metadata.name}"
27
- end
28
-
29
- let :metadata do
30
- Smartgen::ObjectHash.new :name => 'Vicente'
31
- end
32
-
33
- it "should process body using ERB" do
34
- subject.process(body, metadata).should == contents
35
- end
36
- end
37
- end
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Smartgen::Engine::Markdown do
4
- def body
5
- "# Some Header\n\nSome paragraph"
6
- end
7
-
8
- def contents
9
- "<h1>Some Header</h1>\n\n<p>Some paragraph</p>"
10
- end
11
-
12
- it "should process body using BlueCloth" do
13
- subject.process(body).should == contents
14
- end
15
-
16
- it "should support .md extension" do
17
- should be_supported('.md')
18
- end
19
-
20
- it "should support .markdown extension" do
21
- should be_supported('.markdown')
22
- end
23
- end
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Smartgen::Engine::Textile do
4
- def body
5
- "h1. Some Header\n\nSome paragraph"
6
- end
7
-
8
- def contents
9
- "<h1>Some Header</h1>\n<p>Some paragraph</p>"
10
- end
11
-
12
- it "should process body using RedCloth" do
13
- subject.process(body).should == contents
14
- end
15
-
16
- it "should support .textile extension" do
17
- should be_supported('.textile')
18
- end
19
- end
@@ -1,272 +0,0 @@
1
- require 'spec_helper'
2
- require 'fileutils'
3
-
4
- describe Smartgen::Generator do
5
- def src_files
6
- [fixture('src/common/**/*')]
7
- end
8
-
9
- def output_folder
10
- sandbox('doc')
11
- end
12
-
13
- def output_folder_file(path)
14
- File.join(output_folder, path)
15
- end
16
-
17
- def actual_src_files
18
- Dir[*src_files].select { |f| ['.textile', '.markdown', '.md'].include?(File.extname(f)) }
19
- end
20
-
21
- def actual_src_filenames
22
- actual_src_files.map { |f| [File.basename(f, File.extname(f)), File.extname(f)] }
23
- end
24
-
25
- def read_output(filename)
26
- File.read(output_folder_file(filename))
27
- end
28
-
29
- def read_fixture(filename)
30
- File.read(fixture(filename))
31
- end
32
-
33
- def arguments
34
- [src_files, output_folder]
35
- end
36
-
37
- def options
38
- {}
39
- end
40
-
41
- subject { Smartgen::Generator.new arguments, options, { :verbose => false } }
42
-
43
- before do
44
- FileUtils.rm_rf output_folder
45
- end
46
-
47
- describe "generation" do
48
- it "should create the output folder" do
49
- capture(:stdout) { subject.invoke_all }
50
- File.should be_directory(output_folder)
51
- end
52
-
53
- it "should create HTML files for each markup template in src_files" do
54
- capture(:stdout) { subject.invoke_all }
55
-
56
- actual_src_filenames.each do |src_filename, src_ext|
57
- File.should be_file(output_folder_file("#{src_filename}.html"))
58
- end
59
- end
60
-
61
- it "should convert markup files into HTML files when generating" do
62
- capture(:stdout) { subject.invoke_all }
63
- actual_src_filenames.each do |src_filename, src_ext|
64
- read_output("#{src_filename}.html").should == read_fixture("expectations/common/#{src_filename}.html")
65
- end
66
- end
67
-
68
- it "should always force generation of each file, even if it exists" do
69
- FileUtils.mkdir_p(output_folder)
70
- File.open(output_folder_file("index.html"), 'w') { |f| f.write('old contents') }
71
- capture(:stdout) { subject.invoke_all }
72
- read_output("index.html").should == read_fixture("expectations/common/index.html")
73
- end
74
-
75
- context "with nil layout" do
76
- def options
77
- { :layout => nil }
78
- end
79
-
80
- it "should not use layout" do
81
- capture(:stdout) { subject.invoke_all }
82
- actual_src_filenames.each do |src_filename, src_ext|
83
- read_output("#{src_filename}.html").should == read_fixture("expectations/common/#{src_filename}.html")
84
- end
85
- end
86
- end
87
-
88
- describe "inexistent file" do
89
- def src_files
90
- [fixture('src/common/inexistent_file.textile')]
91
- end
92
-
93
- it "should not generate html" do
94
- capture(:stdout) { subject.invoke_all }
95
- File.should_not be_file(output_folder_file("inexistent_file.html"))
96
- end
97
- end
98
-
99
- describe "with ERB files" do
100
- def src_files
101
- [fixture('src/erb/index.html.erb')]
102
- end
103
-
104
- it "should generate index file" do
105
- capture(:stdout) { subject.invoke_all }
106
- read_output("index.html").should == read_fixture("expectations/erb/index.html")
107
- end
108
-
109
- describe "with layout" do
110
- def src_files
111
- [fixture('src/erb/with_layout/index.html.erb')]
112
- end
113
-
114
- def options
115
- { :layout => fixture('src/layout.html.erb') }
116
- end
117
-
118
- it "should use the layout when generating" do
119
- capture(:stdout) { subject.invoke_all }
120
- read_output("index.html").should == read_fixture("expectations/erb/with_layout/index.html")
121
- end
122
-
123
- context "inside the src_files pattern" do
124
- def src_files
125
- [fixture('src/erb/with_layout/**/*')]
126
- end
127
-
128
- def options
129
- { :layout => fixture('src/erb/with_layout/layout.html.erb') }
130
- end
131
-
132
- it "should use the layout when generating" do
133
- capture(:stdout) { subject.invoke_all }
134
- read_output("index.html").should == read_fixture("expectations/erb/with_layout/index.html")
135
- end
136
-
137
- it "should not attempt to render layout using ERB engine" do
138
- capture(:stdout) { subject.invoke_all }
139
- read_output("index.html").should == read_fixture("expectations/erb/with_layout/index.html")
140
- end
141
- end
142
- end
143
- end
144
-
145
- describe "with layout" do
146
- def src_files
147
- [fixture('src/with_layout/index.textile')]
148
- end
149
-
150
- def options
151
- { :layout => fixture('src/layout.html.erb') }
152
- end
153
-
154
- it "should use the layout when generating" do
155
- capture(:stdout) { subject.invoke_all }
156
- read_output("index.html").should == read_fixture("expectations/with_layout/index.html")
157
- end
158
-
159
- describe "and metadata" do
160
- def options
161
- { :layout => fixture('src/layout_with_metadata.html.erb'), :metadata_file => fixture('src/metadata.yml') }
162
- end
163
-
164
- it "should load metadata from file and expose it when rendering files" do
165
- capture(:stdout) { subject.invoke_all }
166
- read_output("index.html").should == read_fixture("expectations/with_layout/index_with_metadata.html")
167
- end
168
-
169
- describe "using conventions" do
170
- def src_files
171
- [fixture('src/with_layout/index_with_specific_metadata.textile')]
172
- end
173
-
174
- def options
175
- { :layout => fixture('src/layout_with_specific_metadata.html.erb'), :metadata_file => fixture('src/metadata.yml') }
176
- end
177
-
178
- it "should expose metadata for current page data for each file in metadata.current_page" do
179
- capture(:stdout) { subject.invoke_all }
180
- read_output("index_with_specific_metadata.html").should == read_fixture("expectations/with_layout/index_with_specific_metadata.html")
181
- end
182
- end
183
- end
184
- end
185
-
186
- describe "assets" do
187
- def assets
188
- [fixture("src/assets/images"), fixture("src/assets/javascripts"), fixture("src/assets/stylesheets")]
189
- end
190
-
191
- def options
192
- { :assets => assets }
193
- end
194
-
195
- it "should copy directories to output folder" do
196
- capture(:stdout) { subject.invoke_all }
197
-
198
- File.should be_directory(output_folder_file('images'))
199
- File.should be_directory(output_folder_file('javascripts'))
200
- end
201
-
202
- it "should copy the contents of the given directories to output folder" do
203
- capture(:stdout) { subject.invoke_all }
204
-
205
- File.should be_file(output_folder_file('images/image.gif'))
206
- File.should be_file(output_folder_file('javascripts/somelib.js'))
207
- File.should be_file(output_folder_file('stylesheets/style.css'))
208
- end
209
-
210
- it "should force copy of the contents of the given directories to output folder" do
211
- FileUtils.mkdir_p(output_folder_file('javascripts'))
212
- File.open(output_folder_file('javascripts/somelib.js'), 'w') { |f| f.write('//some code') }
213
-
214
- capture(:stdout) { subject.invoke_all }
215
- read_output('javascripts/somelib.js').should == read_fixture('src/assets/javascripts/somelib.js')
216
- end
217
- end
218
-
219
- describe "with indexer" do
220
- def src_files
221
- [fixture('src/indexer/index_with_indexer.textile')]
222
- end
223
-
224
- def options
225
- { :use_indexer => true }
226
- end
227
-
228
- it "should add IDs to each <h> tag" do
229
- capture(:stdout) { subject.invoke_all }
230
-
231
- actual_src_filenames.each do |src_filename, src_ext|
232
- read_output("#{src_filename}.html").should == read_fixture("expectations/indexer/#{src_filename}.html")
233
- end
234
- end
235
-
236
- context "and numbered_index" do
237
- def src_files
238
- [fixture('src/indexer/index_with_indexer_and_numbered_index.textile')]
239
- end
240
-
241
- def options
242
- { :use_indexer => true, :numbered_index => true }
243
- end
244
-
245
- it "should add numbered indexes on each <h> tag" do
246
- capture(:stdout) { subject.invoke_all }
247
-
248
- actual_src_filenames.each do |src_filename, src_ext|
249
- read_output("#{src_filename}.html").should == read_fixture("expectations/indexer/#{src_filename}.html")
250
- end
251
- end
252
- end
253
- end
254
- end
255
-
256
- describe "renderer registration" do
257
- it "should register ERB renderer by default" do
258
- Smartgen::Generator.renderer.should be_an_instance_of(Smartgen::Renderer::ERB)
259
- end
260
-
261
- it "should allow the registration of a custom renderer" do
262
- class MyRenderer
263
- def render(layout, markup_file)
264
- "do some rendering stuff"
265
- end
266
- end
267
-
268
- Smartgen::Generator.renderer = MyRenderer.new
269
- Smartgen::Generator.renderer.render('some_layout', mock(Smartgen::MarkupFile)).should == "do some rendering stuff"
270
- end
271
- end
272
- end