dokkit 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 (180) hide show
  1. data/History.txt +5 -0
  2. data/Manifest.txt +90 -105
  3. data/README.txt +27 -7
  4. data/Rakefile +2 -3
  5. data/bin/dokkit +3 -2
  6. data/lib/dokkit/application.rb +159 -0
  7. data/lib/dokkit/cache/cache.rb +53 -0
  8. data/lib/dokkit/{models/simpledocument/model/Rakefile → cache.rb} +3 -15
  9. data/lib/dokkit/environment/basic.rb +156 -0
  10. data/lib/dokkit/environment/helpers/extmap.rb +29 -0
  11. data/lib/dokkit/environment/helpers/fileselection.rb +53 -0
  12. data/lib/dokkit/environment/helpers.rb +20 -0
  13. data/{spec/data/test_build/Rakefile → lib/dokkit/environment.rb} +4 -15
  14. data/lib/dokkit/factory/factory.rb +56 -0
  15. data/lib/dokkit/factory.rb +9 -0
  16. data/lib/dokkit/filters/deplate.rb +25 -20
  17. data/lib/dokkit/filters/maruku.rb +6 -5
  18. data/lib/dokkit/filters/nil.rb +7 -6
  19. data/lib/dokkit/filters.rb +5 -27
  20. data/lib/dokkit/hash.rb +82 -0
  21. data/lib/dokkit/{logger.rb → logging/logger.rb} +30 -24
  22. data/lib/dokkit/logging/observers/console.rb +52 -0
  23. data/lib/dokkit/{extension/extension.rb → logging/observers.rb} +7 -5
  24. data/lib/dokkit/logging.rb +11 -0
  25. data/lib/dokkit/models/simple/Rakefile +6 -0
  26. data/lib/dokkit/models/simple/doc/data/html/css/style.css +3 -0
  27. data/lib/dokkit/models/simple/doc/data/latex/deplate.sty +46 -0
  28. data/lib/dokkit/models/simple/doc/layouts/simple.html +9 -0
  29. data/lib/dokkit/models/simple/doc/layouts/simple.latex +11 -0
  30. data/lib/dokkit/models/simple/doc/pages/simple.deplate +80 -0
  31. data/lib/dokkit/models/simple/setup/setup.rb +10 -0
  32. data/lib/dokkit/resource/data.rb +36 -0
  33. data/lib/dokkit/resource/document.rb +385 -0
  34. data/lib/dokkit/resource/extensions/builtin.rb +19 -0
  35. data/lib/dokkit/resource/extensions/html.rb +22 -0
  36. data/lib/dokkit/resource/extensions/url.rb +25 -0
  37. data/lib/dokkit/{filters/base.rb → resource/extensions.rb} +7 -8
  38. data/lib/dokkit/resource/filenamehelper.rb +28 -0
  39. data/lib/dokkit/resource.rb +11 -0
  40. data/lib/dokkit/tasklib/clean.rb +73 -0
  41. data/lib/dokkit/tasklib/render.rb +137 -0
  42. data/lib/dokkit/tasklib.rb +11 -0
  43. data/lib/dokkit.rb +26 -29
  44. data/spec/dokkit/application_spec.rb +141 -0
  45. data/spec/dokkit/cache/cache_spec.rb +87 -0
  46. data/spec/dokkit/dokkit_spec.rb +20 -0
  47. data/spec/dokkit/environment/basic_spec.rb +135 -0
  48. data/spec/dokkit/environment/helpers/extmap_spec.rb +52 -0
  49. data/spec/dokkit/environment/helpers/fileselection_spec.rb +80 -0
  50. data/spec/dokkit/environment/test_data/doc/pages/document_1.yaml +3 -0
  51. data/spec/dokkit/factory/factory_spec.rb +69 -0
  52. data/spec/{filter_deplate_spec.rb → dokkit/filters/deplate_spec.rb} +7 -8
  53. data/spec/{filter_maruku_spec.rb → dokkit/filters/maruku_spec.rb} +3 -4
  54. data/spec/{filter_nil_spec.rb → dokkit/filters/nil_spec.rb} +3 -4
  55. data/spec/{recursivemerge_spec.rb → dokkit/hash_spec.rb} +25 -27
  56. data/spec/{logger_spec.rb → dokkit/logging/logger_spec.rb} +35 -47
  57. data/spec/{consolelog_spec.rb → dokkit/logging/observers/console_spec.rb} +14 -15
  58. data/spec/dokkit/resource/data_spec.rb +32 -0
  59. data/spec/dokkit/resource/document_spec.rb +485 -0
  60. data/spec/dokkit/resource/extensions/html_spec.rb +35 -0
  61. data/spec/dokkit/resource/extensions/url_spec.rb +29 -0
  62. data/spec/{filehelper_spec.rb → dokkit/resource/filenamehelper_spec.rb} +12 -13
  63. data/spec/dokkit/resource/test_data/doc/configs/config_1.yaml +3 -0
  64. data/spec/dokkit/resource/test_data/doc/configs/config_2.yaml +3 -0
  65. data/spec/dokkit/resource/test_data/doc/configs/required.yaml +3 -0
  66. data/spec/dokkit/resource/test_data/doc/configs/subdir/document.yaml +3 -0
  67. data/spec/dokkit/resource/test_data/doc/layouts/container.html +6 -0
  68. data/spec/dokkit/resource/test_data/doc/layouts/layout.html +6 -0
  69. data/spec/{data/test_build/doc/layouts → dokkit/resource/test_data/doc/layouts/nested}/nested.html +2 -1
  70. data/spec/dokkit/resource/test_data/doc/layouts/subdir/document.html +6 -0
  71. data/spec/dokkit/resource/test_data/doc/pages/COMMON.yaml +4 -0
  72. data/spec/dokkit/resource/test_data/doc/pages/document_with_many_config.ext +7 -0
  73. data/spec/dokkit/resource/test_data/doc/pages/document_with_many_errors.ext +12 -0
  74. data/spec/dokkit/resource/test_data/doc/pages/document_with_many_targets.ext +19 -0
  75. data/spec/dokkit/resource/test_data/doc/pages/document_with_nested_layout.ext +13 -0
  76. data/spec/dokkit/resource/test_data/doc/pages/document_with_nil_target.ext +5 -0
  77. data/spec/dokkit/resource/test_data/doc/pages/document_with_not_defined_target.ext +6 -0
  78. data/spec/dokkit/resource/test_data/doc/pages/document_with_one_target.ext +8 -0
  79. data/spec/dokkit/resource/test_data/doc/pages/subdir/COMMON.yaml +3 -0
  80. data/spec/dokkit/resource/test_data/doc/pages/subdir/document.ext +8 -0
  81. data/spec/dokkit/resource/test_data/doc/pages/subdir/document.yaml +5 -0
  82. data/spec/dokkit/tasklib/clean_spec.rb +75 -0
  83. data/spec/dokkit/tasklib/render_spec.rb +125 -0
  84. data/spec/dokkit/tasklib/test_data/doc/pages/document_2 +0 -0
  85. data/spec/dokkit/test_data/dokkit/models/model1/doc/pages/model1 +0 -0
  86. data/spec/dokkit/test_data/dokkit/models/model2/doc/pages/model2 +0 -0
  87. data/spec/spec.opts +4 -0
  88. data/spec/spec_helper.rb +120 -47
  89. metadata +94 -117
  90. data/lib/dokkit/app.rb +0 -131
  91. data/lib/dokkit/builtintask.rb +0 -85
  92. data/lib/dokkit/cachemanager.rb +0 -61
  93. data/lib/dokkit/cleantask.rb +0 -51
  94. data/lib/dokkit/consolelog.rb +0 -42
  95. data/lib/dokkit/defaults.rb +0 -19
  96. data/lib/dokkit/deplate/fmt/html-notemplate.rb +0 -21
  97. data/lib/dokkit/deplate/fmt/latex-notemplate.rb +0 -24
  98. data/lib/dokkit/document.rb +0 -221
  99. data/lib/dokkit/dokkitlib.rb +0 -68
  100. data/lib/dokkit/extension/filehelper.rb +0 -25
  101. data/lib/dokkit/fileselection.rb +0 -44
  102. data/lib/dokkit/filters/all.rb +0 -18
  103. data/lib/dokkit/model.rb +0 -34
  104. data/lib/dokkit/models/simpledocument/model/doc/layouts/simpledocument.html +0 -9
  105. data/lib/dokkit/models/simpledocument/model/doc/pages/simpledocument.deplate +0 -102
  106. data/lib/dokkit/models/simpledocument/model/tasks/all.rb +0 -3
  107. data/lib/dokkit/models/simpledocument/model/tasks/clean.rake +0 -3
  108. data/lib/dokkit/models/simpledocument/model/tasks/render.rake +0 -8
  109. data/lib/dokkit/models/simpledocument/model/tasks/setup.rb +0 -9
  110. data/lib/dokkit/modeltask.rb +0 -83
  111. data/lib/dokkit/pathhelper.rb +0 -46
  112. data/lib/dokkit/recursivemerge.rb +0 -59
  113. data/lib/dokkit/rendertask.rb +0 -101
  114. data/lib/dokkit/resourcemanager.rb +0 -177
  115. data/lib/dokkit/taskconfig.rb +0 -39
  116. data/lib/dokkit/templatetask.rb +0 -37
  117. data/spec/app_spec.rb +0 -55
  118. data/spec/builtintask_spec.rb +0 -114
  119. data/spec/cachemanager_spec.rb +0 -107
  120. data/spec/cleantask_spec.rb +0 -72
  121. data/spec/data/test_build/doc/configs/document_1.yaml +0 -3
  122. data/spec/data/test_build/doc/configs/required.yaml +0 -3
  123. data/spec/data/test_build/doc/configs/subdir/document_4.yaml +0 -3
  124. data/spec/data/test_build/doc/layouts/document_1.html +0 -9
  125. data/spec/data/test_build/doc/layouts/document_with_partials.html +0 -9
  126. data/spec/data/test_build/doc/layouts/layout.html +0 -8
  127. data/spec/data/test_build/doc/layouts/layout.html.backup +0 -8
  128. data/spec/data/test_build/doc/layouts/partials/partial.html +0 -4
  129. data/spec/data/test_build/doc/pages/COMMON.yaml +0 -6
  130. data/spec/data/test_build/doc/pages/document_1 +0 -20
  131. data/spec/data/test_build/doc/pages/document_1.dep +0 -4
  132. data/spec/data/test_build/doc/pages/document_1.yaml +0 -11
  133. data/spec/data/test_build/doc/pages/document_2 +0 -9
  134. data/spec/data/test_build/doc/pages/document_2.yaml +0 -6
  135. data/spec/data/test_build/doc/pages/document_3 +0 -13
  136. data/spec/data/test_build/doc/pages/document_7 +0 -4
  137. data/spec/data/test_build/doc/pages/document_7.yaml +0 -5
  138. data/spec/data/test_build/doc/pages/document_extended +0 -1
  139. data/spec/data/test_build/doc/pages/document_nested +0 -6
  140. data/spec/data/test_build/doc/pages/document_nested.yaml +0 -5
  141. data/spec/data/test_build/doc/pages/document_nolayout.ext +0 -3
  142. data/spec/data/test_build/doc/pages/document_nolayout.yaml +0 -2
  143. data/spec/data/test_build/doc/pages/document_with_partials +0 -3
  144. data/spec/data/test_build/doc/pages/document_with_partials.yaml +0 -2
  145. data/spec/data/test_build/doc/pages/partials/COMMON.yaml +0 -5
  146. data/spec/data/test_build/doc/pages/partials/circular_partial +0 -2
  147. data/spec/data/test_build/doc/pages/partials/circular_partial.yaml +0 -3
  148. data/spec/data/test_build/doc/pages/partials/partial +0 -2
  149. data/spec/data/test_build/doc/pages/subdir/COMMON.yaml +0 -2
  150. data/spec/data/test_build/doc/pages/subdir/document_4 +0 -11
  151. data/spec/data/test_build/doc/pages/subdir/subdir/COMMON.yaml +0 -2
  152. data/spec/data/test_build/doc/pages/subdir/subdir/document_6 +0 -3
  153. data/spec/data/test_build/tasks/all.rb +0 -3
  154. data/spec/data/test_build/tasks/clean.rake +0 -3
  155. data/spec/data/test_build/tasks/render.rake +0 -8
  156. data/spec/data/test_build/tasks/setup.rb +0 -9
  157. data/spec/data/test_build/tasks/template.rake +0 -3
  158. data/spec/document_spec.rb +0 -321
  159. data/spec/dokkitlib_spec.rb +0 -63
  160. data/spec/fileselection_spec.rb +0 -101
  161. data/spec/filter_base_spec.rb +0 -29
  162. data/spec/filters_spec.rb +0 -37
  163. data/spec/model_spec.rb +0 -45
  164. data/spec/pathhelper_spec.rb +0 -62
  165. data/spec/rendertask_spec.rb +0 -374
  166. data/spec/taskconfig_spec.rb +0 -45
  167. data/spec/templatetask_spec.rb +0 -72
  168. /data/lib/dokkit/models/{simpledocument/model/doc/configs/simpledocument.yaml → simple/doc/configs/simple.yaml} +0 -0
  169. /data/lib/dokkit/models/{simpledocument/model/doc/layouts/simpledocument.text → simple/doc/layouts/simple.text} +0 -0
  170. /data/{lib/dokkit/models/simpledocument/model/doc/data/css/style.css → spec/dokkit/environment/helpers/test_data/doc/pages/document_1.ext_1} +0 -0
  171. /data/spec/{data/test_build/doc/data/resource → dokkit/environment/helpers/test_data/doc/pages/document_2} +0 -0
  172. /data/spec/{data/test_build/doc/data/resource.exclude → dokkit/environment/helpers/test_data/doc/pages/document_3.ext_3} +0 -0
  173. /data/spec/{data/test_build/doc/data/subdir/resource.insubdir → dokkit/environment/test_data/doc/data/data} +0 -0
  174. /data/spec/{data/test_build/doc/layouts/layout → dokkit/environment/test_data/doc/pages/document_1} +0 -0
  175. /data/spec/{data/test_build/doc/pages/document_2.dep → dokkit/environment/test_data/doc/pages/document_2} +0 -0
  176. /data/spec/{data/test_build/doc/pages/document_5.exclude → dokkit/environment/test_data/doc/pages/subdir/document_1} +0 -0
  177. /data/{lib/dokkit/models/simpledocument/model/doc/layouts/simpledocument.latex → spec/dokkit/resource/test_data/doc/layouts/layout.latex} +0 -0
  178. /data/spec/{data/test_build/doc/layouts/document_1.latex → dokkit/resource/test_data/doc/layouts/subdir/document.latex} +0 -0
  179. /data/spec/{data/test_build/templates/layouts/layout → dokkit/tasklib/test_data/doc/data/data_1} +0 -0
  180. /data/spec/{data/test_build/templates/pages/template → dokkit/tasklib/test_data/doc/pages/document_1} +0 -0
@@ -0,0 +1,485 @@
1
+ #
2
+ # File 'document_spec.rb' created on 17 apr 2008 at 18:01:58.
3
+ # See 'dokkit.rb' or +LICENSE+ for licence information.
4
+ #
5
+ # (c) 2006, 2007, 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
6
+ #
7
+ # To execute this spec run:
8
+ #
9
+ # spec spec/document_spec.rb
10
+ #
11
+
12
+
13
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../../../lib')))
14
+
15
+ require 'rubygems'
16
+ require 'spec'
17
+ require 'dokkit/resource/document'
18
+ require 'spec/spec_helper.rb'
19
+
20
+ describe Dokkit::Resource::Document, '#include' do
21
+ include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
22
+ before(:all) do
23
+ @initial_dir = Dir.pwd
24
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
25
+ end
26
+ before do
27
+ @logger = logger
28
+ @filter_factory = filter_factory
29
+ @cache = cache
30
+ @document = Dokkit::Resource::Document.new('doc/pages/subdir/document.ext',
31
+ configuration,
32
+ @logger,
33
+ @cache,
34
+ @resource_factory,
35
+ @filter_factory)
36
+ File.stub!(:read).and_return('<%= "erb" %>')
37
+ end
38
+ after(:all) do
39
+ Dir.chdir(@initial_dir)
40
+ end
41
+ it 'should read the given file processing it with erb' do
42
+ File.should_receive(:read).with('included.html').and_return('<%= "erb" %>')
43
+ @document.include('included.html')
44
+ end
45
+ it 'should process the given file with erb' do
46
+ @erb = ERB.new('<%= "erb" %>')
47
+ ERB.should_receive(:new).with('<%= "erb" %>').and_return(@erb)
48
+ @document.include('included.html').should == "erb"
49
+ end
50
+ it 'should add the given file as dependency' do
51
+ @cache.should_receive(:add_dependency).with('doc/pages/subdir/document.ext', 'html', 'included.html')
52
+ @document.include('included.html')
53
+ end
54
+ end
55
+
56
+ describe Dokkit::Resource::Document, ' when inizialized with a code block' do
57
+ include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
58
+ before(:all) do
59
+ @initial_dir = Dir.pwd
60
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
61
+ end
62
+ before do
63
+ module Extension; def foo; end; end
64
+ end
65
+ before do
66
+ @document = Dokkit::Resource::Document.new('doc/pages/subdir/document.ext',
67
+ configuration,
68
+ logger,
69
+ cache,
70
+ resource_factory,
71
+ filter_factory) { |document| document.extend Extension }
72
+ end
73
+ after(:all) do
74
+ Dir.chdir(@initial_dir)
75
+ end
76
+ it 'should be extended with Extension module' do
77
+ @document.respond_to?(:foo).should be_true
78
+ end
79
+ end
80
+
81
+ describe Dokkit::Resource::Document, ' when inizialized with document.ext' do
82
+ include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
83
+ before(:all) do
84
+ @initial_dir = Dir.pwd
85
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
86
+ end
87
+ before do
88
+ @logger = logger
89
+ @filter_factory = filter_factory
90
+ @document = Dokkit::Resource::Document.new('doc/pages/subdir/document.ext',
91
+ configuration,
92
+ @logger,
93
+ cache,
94
+ @resource_factory,
95
+ @filter_factory)
96
+ end
97
+ after(:all) do
98
+ Dir.chdir(@initial_dir)
99
+ end
100
+ it 'should set a default output' do
101
+ @document.default_format.should == 'html'
102
+ end
103
+ it 'should have targets hash' do
104
+ @document.targets.should
105
+ end
106
+ it 'should set a default target filename for a given output format' do
107
+ @document.target_for(@document.default_format).should == 'output/subdir/document.html'
108
+ end
109
+ it 'should have a default filter chain for the default output format' do
110
+ @document.filters_for(@document.default_format).should == ['deplate-html']
111
+ end
112
+ it 'should have a default filter chain for latex output' do
113
+ @document.filters_for('latex').should == ['deplate-latex']
114
+ end
115
+ it 'should have a default filter chain for text output' do
116
+ @document.filters_for('text').should == ['deplate-text']
117
+ end
118
+ it 'should fail if a filter chain for a given output format was not found' do
119
+ @logger.should_receive(:error).with(/defined filter/)
120
+ @document.filters_for(:'notexists')
121
+ end
122
+ it 'should return the target filename for the given format' do
123
+ @document.target_for('html').should == 'output/subdir/document.html'
124
+ end
125
+ it 'should set the source file basename' do
126
+ @document.basename.should == 'document'
127
+ end
128
+ it 'should set the dirname' do
129
+ @document.dirname.should == 'doc/pages/subdir'
130
+ end
131
+ it 'should set the filename with path but without extension' do
132
+ @document.name_noext == 'doc/pages/subdir/document'
133
+ end
134
+ it 'should set name relative to document directory' do
135
+ @document.relativename == 'subdir/document'
136
+ end
137
+ it 'should read the content of the source file' do
138
+ @document.source.should match(/\* Title for document/)
139
+ end
140
+ it 'should not store header information in the source text' do
141
+ @document.source.should_not match(/^-{3}$(.*?)-{3}$/m)
142
+ end
143
+ it 'should configure itself through configuration files' do
144
+ @document.configuration.should == merge_hashes(configuration,
145
+ 'doc/configs/required.yaml',
146
+ 'doc/pages/subdir/document.yaml',
147
+ 'doc/pages/subdir/COMMON.yaml',
148
+ 'doc/pages/COMMON.yaml',
149
+ 'doc/configs/subdir/document.yaml',
150
+ { 'key_in_header' => 'value in header'}
151
+ )
152
+ end
153
+ it 'should collect config filenames' do
154
+ @document.config_fns.should == ['doc/configs/subdir/document.yaml',
155
+ File.expand_path('doc/pages/COMMON.yaml'),
156
+ File.expand_path('doc/pages/subdir/COMMON.yaml'),
157
+ 'doc/pages/subdir/document.yaml',
158
+ 'doc/configs/required.yaml',
159
+ 'doc/pages/subdir/document.ext']
160
+ end
161
+ it 'should collect layout filenames grouped by format' do
162
+ @document.layouts['html'].should == ['doc/layouts/subdir/document.html']
163
+ end
164
+ it 'should collect target filename' do
165
+ @document.target_for('html').should == 'output/subdir/document.html'
166
+ end
167
+ it 'should store the names of its dependencies grouped by format' do
168
+ @document.deps_for('html').should == ['doc/pages/subdir/document.ext',
169
+ 'doc/configs/subdir/document.yaml',
170
+ File.expand_path('doc/pages/COMMON.yaml'),
171
+ File.expand_path('doc/pages/subdir/COMMON.yaml'),
172
+ 'doc/pages/subdir/document.yaml',
173
+ 'doc/configs/required.yaml',
174
+ 'doc/layouts/subdir/document.html']
175
+ end
176
+ it 'should fail if config file doesn''t exist' do
177
+ @logger.should_receive(:error).with("Configuration file 'notexists' not found for '#{@document.source_fn}'!")
178
+ @document.add_config('notexists')
179
+ end
180
+ it 'should warn if a configuration key doesn''t exist' do
181
+ @logger.should_receive(:warn)
182
+ @document.configuration['notexists']
183
+ end
184
+ it 'should associate a default value for a not defined configuration key' do
185
+ @logger.should_receive(:warn)
186
+ @document.configuration['notexists'].should == @document.default_configuration_value
187
+ end
188
+ describe ' and rendered in html' do
189
+ it 'should produce html output' do
190
+ filter = mock('filter', :filter => '<h1>Title</h1>')
191
+ @filter_factory.should_receive(:get).with('deplate-html').and_return(filter)
192
+ @document.render.should match(/\<h1\>Title\<\/h1\>/)
193
+ end
194
+ end
195
+ describe ' and rendered in a unknown format' do
196
+ it 'should fail if output format doesn''t exist' do
197
+ @logger.should_receive(:error).with(/format.*is unknown/)
198
+ @document.render(:format => 'notexists')
199
+ end
200
+ end
201
+ end
202
+
203
+ describe Dokkit::Resource::Document, ' when inizialized with document_with_many_targets.ext' do
204
+ include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
205
+ before(:all) do
206
+ @initial_dir = Dir.pwd
207
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
208
+ end
209
+ before do
210
+ @logger = logger
211
+ @logger.stub!(:warn)
212
+ @filter_factory = filter_factory
213
+ @document = Dokkit::Resource::Document.new('doc/pages/document_with_many_targets.ext',
214
+ configuration,
215
+ @logger,
216
+ cache,
217
+ @resource_factory,
218
+ @filter_factory
219
+ )
220
+ end
221
+ after(:all) do
222
+ Dir.chdir(@initial_dir)
223
+ end
224
+ it 'should collect all the targets grouped by format' do
225
+ @document.targets.should == {
226
+ # 'html' => { :target_fn => 'output/document_with_many_targets.html' },
227
+ 'latex' => { :target_fn => 'output/document_with_many_targets.latex' },
228
+ 'text' => { :target_fn => 'output/document_with_many_targets.text' },
229
+ 'custom' => {
230
+ :target_fn => 'output/document_with_many_targets.html',
231
+ 'filter' => ['maruku-html']
232
+ }
233
+ }
234
+ end
235
+ it 'should return filter_chain for custom format' do
236
+ @document.filters_for('custom').should == ['maruku-html']
237
+ end
238
+ # describe ' and rendered in html format' do
239
+ # it 'should produce html output' do
240
+ # result = "<h1>Title</h1>"
241
+ # filter = mock('filter', :filter => result)
242
+ # @filter_factory.should_receive(:get).with('deplate-html').and_return(filter)
243
+ # @document.render(:format => 'html').should match(/#{result}/)
244
+ # end
245
+ # end
246
+ describe ' and rendered in latex format' do
247
+ it 'should produce latex output' do
248
+ result = "\section"
249
+ filter = mock('filter', :filter => result)
250
+ @filter_factory.should_receive(:get).with('deplate-latex').and_return(filter)
251
+ @document.render(:format => 'latex').should match(/#{result}/)
252
+ end
253
+ end
254
+ describe ' and rendered in text format' do
255
+ it 'should produce text output' do
256
+ result = "=====\nTitle\n====="
257
+ filter = mock('filter', :filter => result)
258
+ @filter_factory.should_receive(:get).with('deplate-text').and_return(filter)
259
+ @document.render(:format => 'text').should match(/#{result}/)
260
+ end
261
+ end
262
+ describe ' and rendered in custom format' do
263
+ it 'should produce html output using maruku' do
264
+ result = "<h1>Title</h1>"
265
+ filter = mock('filter', :filter => result)
266
+ @filter_factory.should_receive(:get).with('maruku-html').and_return(filter)
267
+ @document.render(:format => 'custom').should match(/#{result}/)
268
+ end
269
+ end
270
+ end
271
+
272
+ describe Dokkit::Resource::Document, ' when inizialized with document_with_nested_layout.ext' do
273
+ include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
274
+ before(:all) do
275
+ @initial_dir = Dir.pwd
276
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
277
+ end
278
+ before do
279
+ @logger = logger
280
+ @filter_factory = filter_factory
281
+ @document = Dokkit::Resource::Document.new('doc/pages/document_with_nested_layout.ext',
282
+ configuration,
283
+ @logger,
284
+ cache,
285
+ @resource_factory,
286
+ @filter_factory
287
+ )
288
+ end
289
+ after(:all) do
290
+ Dir.chdir(@initial_dir)
291
+ end
292
+ it 'should collect layouts' do
293
+ @document.layouts['html'].should == ['doc/layouts/nested/nested.html', 'doc/layouts/container.html']
294
+ end
295
+ describe ' and rendered in html format' do
296
+ it 'should produce html output using layout chain' do
297
+ result = "<p>Some content</p>"
298
+ filter = mock('filter', :filter => result)
299
+ @filter_factory.should_receive(:get).with('deplate-html').and_return(filter)
300
+ render_result = @document.render
301
+ render_result.should match(/\A\<html\>/)
302
+ render_result.should match(/<div id=\"nested\"\>/)
303
+ render_result.should match(/Some content/)
304
+ end
305
+ end
306
+ end
307
+
308
+ describe Dokkit::Resource::Document, ' when inizialized with document_with_many_config.ext' do
309
+ include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
310
+ before(:all) do
311
+ @initial_dir = Dir.pwd
312
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
313
+ end
314
+ before do
315
+ @logger = logger
316
+ @filter_factory = filter_factory
317
+ @document = Dokkit::Resource::Document.new('doc/pages/document_with_many_config.ext',
318
+ configuration,
319
+ @logger,
320
+ cache,
321
+ @resource_factory,
322
+ @filter_factory
323
+ )
324
+ end
325
+ after(:all) do
326
+ Dir.chdir(@initial_dir)
327
+ end
328
+ it 'should collect config files' do
329
+ @document.config_fns.should include(config_path('config_1.yaml'), config_path('config_2.yaml'))
330
+ end
331
+ end
332
+
333
+ describe Dokkit::Resource::Document, ' when inizialized with document_with_many_errors.ext' do
334
+ include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
335
+ before(:all) do
336
+ @initial_dir = Dir.pwd
337
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
338
+ end
339
+ before do
340
+ @logger = logger
341
+ @filter_factory = filter_factory
342
+ end
343
+ after(:all) do
344
+ Dir.chdir(@initial_dir)
345
+ end
346
+ it 'should warn that layouts not exist for html and custom output format' do
347
+ @logger.should_receive(:warn).with(/Layout.* not exists/)
348
+ @document = Dokkit::Resource::Document.new('doc/pages/document_with_many_errors.ext',
349
+ configuration,
350
+ @logger,
351
+ cache,
352
+ @resource_factory,
353
+ @filter_factory)
354
+ end
355
+ it 'should not add not existent layout to deps array' do
356
+ @logger.stub!(:warn)
357
+ @document = Dokkit::Resource::Document.new('doc/pages/document_with_many_errors.ext',
358
+ configuration,
359
+ @logger,
360
+ cache,
361
+ resource_factory,
362
+ @filter_factory)
363
+ @document.deps['html'].should_not include(nil)
364
+ end
365
+ describe ' and rendered' do
366
+ before do
367
+ @logger.stub!(:warn)
368
+ @document = Dokkit::Resource::Document.new('doc/pages/document_with_many_errors.ext',
369
+ configuration,
370
+ @logger,
371
+ cache,
372
+ @resource_factory,
373
+ @filter_factory)
374
+ end
375
+ it 'should fail if rendered in :notexists format' do
376
+ @logger.should_receive(:error)
377
+ @document.render(:format => 'notexists')
378
+ end
379
+ end
380
+ end
381
+
382
+ describe Dokkit::Resource::Document, ' when inizialized with document_with_one_target' do
383
+ include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
384
+ before(:all) do
385
+ @initial_dir = Dir.pwd
386
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
387
+ end
388
+ before do
389
+ @logger = logger
390
+ @logger.stub!(:warn)
391
+ @filter_factory = filter_factory
392
+ end
393
+ before do
394
+ @document = Dokkit::Resource::Document.new('doc/pages/document_with_one_target.ext',
395
+ configuration,
396
+ @logger,
397
+ cache,
398
+ @resource_factory,
399
+ @filter_factory)
400
+ end
401
+ after(:all) do
402
+ Dir.chdir(@initial_dir)
403
+ end
404
+ it 'should correctly setup targets' do
405
+ @document.targets['text'].should == { :target_fn => output_path('document_with_one_target.text') }
406
+ end
407
+ end
408
+
409
+ # describe Dokkit::Resource::Document, ' when inizialized with document_with_nil_target' do
410
+ # include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
411
+ # before(:all) do
412
+ # @initial_dir = Dir.pwd
413
+ # Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
414
+ # end
415
+ # before do
416
+ # @logger = logger
417
+ # @logger.stub!(:warn)
418
+ # @filter_factory = filter_factory
419
+ # end
420
+ # after(:all) do
421
+ # Dir.chdir(@initial_dir)
422
+ # end
423
+ # it 'should fail because target format doesn''t exist' do
424
+ # @logger.should_receive(:error).with(/invalid target/i)
425
+ # @document = Dokkit::Resource::Document.new('doc/pages/document_with_nil_target.ext',
426
+ # configuration,
427
+ # @logger,
428
+ # cache,
429
+ # @resource_factory,
430
+ # @filter_factory)
431
+ # end
432
+ # end
433
+
434
+ describe Dokkit::Resource::Document, ' when inizialized with document_with_not_defined_target' do
435
+ include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
436
+ before(:all) do
437
+ @initial_dir = Dir.pwd
438
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
439
+ end
440
+ before do
441
+ @logger = logger
442
+ @logger.stub!(:warn)
443
+ @filter_factory = filter_factory
444
+ end
445
+ after(:all) do
446
+ Dir.chdir(@initial_dir)
447
+ end
448
+ it 'should fail because target format was not defined' do
449
+ @logger.should_receive(:error).with(/must define format/i)
450
+ @document = Dokkit::Resource::Document.new('doc/pages/document_with_not_defined_target.ext',
451
+ configuration,
452
+ @logger,
453
+ cache,
454
+ @resource_factory,
455
+ @filter_factory)
456
+ end
457
+ end
458
+
459
+ describe Dokkit::Resource::Document, ' when render partial' do
460
+ include SpecHelper::Logger, SpecHelper::Cache, SpecHelper::Configuration, SpecHelper::Resource
461
+ before(:all) do
462
+ @initial_dir = Dir.pwd
463
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
464
+ end
465
+ before do
466
+ @partial = mock('partial')
467
+ @partial.stub!(:render)
468
+ @cache = mock('cache')
469
+ @cache.stub!(:add_dependency)
470
+ @resource_factory = resource_factory
471
+ end
472
+ before do
473
+ # @document = Dokkit::Resource::Document.new('doc/pages/document_with_partial.ext',
474
+ # configuration,
475
+ # @logger,
476
+ # cache,
477
+ # @resource_factory,
478
+ # @filter_factory)
479
+ end
480
+ after(:all) do
481
+ Dir.chdir(@initial_dir)
482
+ end
483
+ it 'should instantiate a document object'
484
+ it 'should cache document'
485
+ end
@@ -0,0 +1,35 @@
1
+ #
2
+ # File 'html_spec.rb' created on 21 giu 2008 at 19:57:13.
3
+ # See 'dokkit.rb' or +LICENSE+ for licence information.
4
+ #
5
+ # (c)2006-2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
6
+ #
7
+
8
+ require 'rubygems'
9
+ require 'spec'
10
+ require 'dokkit'
11
+
12
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '../../../../lib')))
13
+ require 'dokkit/resource/extensions/html'
14
+
15
+
16
+ module Dokkit
17
+ module Resource
18
+ module Extension
19
+
20
+ describe HTML, '#link_to' do
21
+ before do
22
+ @document = mock('document',
23
+ :configuration => { :document_dir => 'doc/pages' },
24
+ :source_fn => 'doc/pages/subdir/document.ext'
25
+ )
26
+ @document.extend Dokkit::Resource::Extension::HTML
27
+ end
28
+ it 'should produce a link with the given href, name and class' do
29
+ @document.link_to("Link to page", :href => '/page.html', :class => 'class').should == "<a href=\"../page.html\" class=\"class\">Link to page</a>"
30
+ end
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ #
2
+ # File 'url_spec.rb' created on 09 mag 2008 at 19:17:03.
3
+ # See 'dokkit.rb' or +LICENSE+ for licence information.
4
+ #
5
+ # (c)2006-2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
6
+ #
7
+
8
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '../../../../lib')))
9
+
10
+ require 'rubygems'
11
+ require 'spec'
12
+ require 'dokkit'
13
+ require 'dokkit/resource/extensions/url'
14
+ require 'spec/spec_helper.rb'
15
+
16
+ describe Dokkit::Resource::Extension::Url do
17
+ before do
18
+ @document = mock('document',
19
+ :configuration => { :document_dir => 'doc/pages' },
20
+ :source_fn => 'doc/pages/subdir/document.ext'
21
+ )
22
+ @document.extend Dokkit::Resource::Extension::Url
23
+ end
24
+ it 'should resolve the absolute path name' do
25
+ @document.relative('/images/image.img').should == '../images/image.img'
26
+ end
27
+ end
28
+
29
+
@@ -2,7 +2,7 @@
2
2
  # File 'filehelper_spec.rb' created on 28 feb 2008 at 16:44:07.
3
3
  # See 'dokkit.rb' or +LICENSE+ for licence information.
4
4
  #
5
- # (c)2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
5
+ # (c) 2006, 2007, 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
6
6
  #
7
7
  # To execute this spec run:
8
8
  #
@@ -10,25 +10,24 @@
10
10
  #
11
11
 
12
12
 
13
- $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../lib')))
13
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../../../lib')))
14
14
 
15
15
  require 'rubygems'
16
16
  require 'spec'
17
17
  require 'dokkit'
18
- require 'dokkit/extension/filehelper'
19
- require File.dirname(__FILE__) + '/spec_helper.rb'
18
+ require 'dokkit/resource/filenamehelper'
19
+ require 'spec/spec_helper.rb'
20
20
 
21
- describe Dokkit::Extension::FileHelper do
21
+ describe Dokkit::Resource::FilenameHelper do
22
22
  before do
23
- @document = mock('document')
24
- @document.extend Dokkit::Extension::FileHelper
23
+ @resource = mock('resource')
24
+ @resource.extend Dokkit::Resource::FilenameHelper
25
25
  end
26
- it 'should resolve the absolute path name' do
27
- @taskconfig = mock('taskconfig')
28
- @taskconfig.should_receive(:document_dir).and_return('doc/pages')
29
- @document.should_receive(:taskconfig).and_return(@taskconfig)
30
- @document.should_receive(:document).and_return('doc/pages/subdir/document.ext')
31
- @document.relative('/images/image.img').should == '../images/image.img'
26
+ it 'should replace source path with the new path' do
27
+ @resource.filename_helper('doc/pages/resource', 'doc/pages', 'output').should == 'output/resource'
28
+ end
29
+ it 'should add new extension to the source extension' do
30
+ @resource.filename_helper('doc/pages/resource.ext', 'doc/pages', 'output', '.html').should == 'output/resource.ext.html'
32
31
  end
33
32
  end
34
33
 
@@ -0,0 +1,3 @@
1
+ ---
2
+ key: value
3
+ ---
@@ -0,0 +1,3 @@
1
+ ---
2
+ key: value
3
+ ---
@@ -0,0 +1,3 @@
1
+ ---
2
+ key_in_required: value in required
3
+
@@ -0,0 +1,3 @@
1
+ ---
2
+ key_in_configs: value in configs/
3
+
@@ -0,0 +1,6 @@
1
+ <html>
2
+ <body>
3
+ <%= @content_for_layout %>
4
+ </body>
5
+ </html>
6
+
@@ -0,0 +1,6 @@
1
+ <html>
2
+ <body>
3
+ <%= @content_for_layout %>
4
+ </body>
5
+ </html>
6
+
@@ -1,3 +1,4 @@
1
- <div class="nested">
1
+ <div id="nested">
2
2
  <%= @content_for_layout %>
3
3
  </div>
4
+
@@ -0,0 +1,6 @@
1
+ <html>
2
+ <body>
3
+ <%= @content_for_layout %>
4
+ </body>
5
+ </html>
6
+
@@ -0,0 +1,4 @@
1
+ ---
2
+ layout: subdir/document
3
+ key_in_common: key in common
4
+
@@ -0,0 +1,7 @@
1
+ ---
2
+ config:
3
+ - config_1
4
+ - config_2
5
+ ---
6
+
7
+ This is a document with many configuration files.
@@ -0,0 +1,12 @@
1
+ ---
2
+ layout: notexists
3
+ targets:
4
+ - html
5
+ - notexists
6
+ - custom:
7
+ filters:
8
+ - notexists
9
+ ---
10
+
11
+ This a document that presents configuration errors and inconsistencies.
12
+