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,19 @@
1
+ ---
2
+ layout: layout
3
+ format:
4
+ - latex
5
+ - text
6
+ - custom:
7
+ filter:
8
+ - maruku-html
9
+ ext: html
10
+ ---
11
+
12
+ This document can be rendered in the format below:
13
+
14
+ * html
15
+ * latex
16
+ * text
17
+ * custom
18
+
19
+ The custom format use maruku filter for html rendering.
@@ -0,0 +1,13 @@
1
+ ---
2
+ layout:
3
+ - clear
4
+ - nested/nested
5
+ - container
6
+ ---
7
+
8
+ This is a document thai uses a nested layout inside a layout that acts as container.
9
+ Layouts are rendered in the same order of the array values above. That is:
10
+
11
+ result in result in
12
+ document_with_nested_layout ========> doc/layouts/nested/nested.html ========> doc/layouts/container.html
13
+
@@ -0,0 +1,5 @@
1
+ ---
2
+ format:
3
+ ---
4
+
5
+ Document with output format defined.
@@ -0,0 +1,6 @@
1
+ ---
2
+ format:
3
+ - blah:
4
+ ---
5
+
6
+ Document with not defined format.
@@ -0,0 +1,8 @@
1
+ ---
2
+ format:
3
+ - text
4
+ ---
5
+
6
+ Document with text target.
7
+
8
+
@@ -0,0 +1,3 @@
1
+ ---
2
+ key_in_common_in_subdir: key in common in subdir
3
+
@@ -0,0 +1,8 @@
1
+ ---
2
+ key_in_header: value in header
3
+ ---
4
+
5
+ * Title for document
6
+
7
+ Body of the document
8
+
@@ -0,0 +1,5 @@
1
+ ---
2
+ key: value in document.yaml
3
+ config: required
4
+ layout: subdir/document
5
+
@@ -0,0 +1,75 @@
1
+ #
2
+ # File 'clean_spec.rb' created on 14 apr 2008 at 16:00:41.
3
+ # See 'dokkit.rb' or +LICENSE+ for licence information.
4
+ #
5
+ # (c)2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
6
+ #
7
+ # To execute this spec run:
8
+ #
9
+ # spec spec/clean_spec.rb
10
+ #
11
+
12
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../../../lib')))
13
+
14
+ require 'rubygems'
15
+ require 'rake'
16
+ require 'spec'
17
+ require 'dokkit/tasklib/clean'
18
+ require 'spec/spec_helper.rb'
19
+
20
+ describe Dokkit::TaskLib::Clean do
21
+ include SpecHelper::Logger
22
+ before(:all) do
23
+ @initial_dir = Dir.pwd
24
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
25
+ end
26
+ after(:all) do
27
+ Dir.chdir(@initial_dir)
28
+ end
29
+ before do
30
+ @logger = logger
31
+ @rake = Rake.application
32
+ @clean = Dokkit::TaskLib::Clean.new(@logger, { :output_dir => 'output', :cache_dir => '.cache'} )
33
+ end
34
+ after do
35
+ Rake.application.clear
36
+ end
37
+ it 'should define a clean:output task' do
38
+ @rake.tasks.should include(task('clean:output'))
39
+ end
40
+ it 'should define a clean:cache task' do
41
+ @rake.tasks.should include(task('clean:cache'))
42
+ end
43
+ it 'should define a clean:all task' do
44
+ @rake.tasks.should include(task('clean:all'))
45
+ end
46
+ describe ' when clean:output is invoked' do
47
+ before do
48
+ mkdir 'output'
49
+ end
50
+ after do
51
+ rm_rf 'output'
52
+ end
53
+ it 'should remove output directory' do
54
+ @logger.stub!(:info)
55
+ @rake['clean:output'].execute({ })
56
+ File.exists?('output').should be_false
57
+ end
58
+ end
59
+ describe ' when clean:cache is invoked' do
60
+ before do
61
+ mkdir '.cache'
62
+ end
63
+ after do
64
+ rm_rf '.cache'
65
+ end
66
+ it 'should remove cache directory' do
67
+ @logger.stub!(:info)
68
+ @rake['clean:cache'].execute({ })
69
+ File.exists?('.cache').should be_false
70
+ end
71
+ end
72
+ end
73
+
74
+
75
+
@@ -0,0 +1,125 @@
1
+ #
2
+ # File 'rendertask_spec.rb' created on 18 feb 2008 at 19:55:16.
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/render_spec.rb
10
+ #
11
+
12
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../../../lib')))
13
+
14
+ require 'rubygems'
15
+ require 'spec'
16
+ require 'dokkit/tasklib/render'
17
+ require 'spec/spec_helper.rb'
18
+
19
+ describe Dokkit::TaskLib::Render do
20
+ include SpecHelper::Resource, SpecHelper::Logger
21
+ before(:all) do
22
+ @initial_dir = Dir.pwd
23
+ Dir.chdir(File.join(File.dirname(__FILE__), SpecHelper::Path::TEST_DATA))
24
+ end
25
+ after(:all) do
26
+ Dir.chdir(@initial_dir)
27
+ end
28
+ before do
29
+ @rake = Rake.application
30
+ @document_1 = document_1
31
+ @document_2 = document_2
32
+ @data_1 = data_1
33
+ @resource_factory = resource_factory
34
+ @logger = logger
35
+ @render = Dokkit::TaskLib::Render.new(@logger, @resource_factory, ['doc/pages/document_1', 'doc/pages/document_2'], ['doc/data/data_1'])
36
+ end
37
+ after do
38
+ Rake.application.clear
39
+ end
40
+ it 'should define a render:doc task' do
41
+ @rake['render:doc'].should
42
+ end
43
+ it 'should define a render:data task' do
44
+ @rake['render:data'].should
45
+ end
46
+ it 'should define a render:all task' do
47
+ @rake['render:all'].prerequisites.should == ['render:doc', 'render:data']
48
+ end
49
+ describe ' when render:doc invoked' do
50
+ before do
51
+ @logger.stub!(:info)
52
+ @resource_factory.stub!(:get).and_return(@document_1, @document_2)
53
+ end
54
+ before do
55
+ @rake['render:doc'].execute({ })
56
+ end
57
+ after do
58
+ rm_rf 'output'
59
+ end
60
+ it 'should create the output directory' do
61
+ File.exists?('output').should be_true
62
+ end
63
+ it 'should create document_1.html' do
64
+ File.exists?('document_1.html')
65
+ end
66
+ it 'should create document_2.html' do
67
+ File.exists?('document_2.html')
68
+ end
69
+ it 'should create document_2.text' do
70
+ File.exists?('document_2.html')
71
+ end
72
+ end
73
+ describe ' when render:data invoked' do
74
+ before do
75
+ @logger.stub!(:info)
76
+ @resource_factory.stub!(:get).and_return(@data_1)
77
+ end
78
+ before do
79
+ @rake['render:data'].execute({ })
80
+ end
81
+ after do
82
+ rm_rf 'output'
83
+ end
84
+ it 'should create the output directory' do
85
+ File.exists?('output').should be_true
86
+ end
87
+ it 'should copy data_1' do
88
+ File.exists?('data_1')
89
+ end
90
+ end
91
+ describe ' when doc/data/data_1 has been changed' do
92
+ before do
93
+ @logger.stub!(:info)
94
+ @resource_factory.stub!(:get).and_return(@data_1)
95
+ @rake['render:data'].execute({ })
96
+ end
97
+ after do
98
+ rm_rf 'output'
99
+ end
100
+ it 'should re-render output/data_1' do
101
+ File.utime(0, Time.now, data_path('data_1'))
102
+ @logger.should_receive(:info).with(/copy/i)
103
+ @rake['render:data'].execute({ })
104
+ end
105
+ end
106
+ describe ' when doc/pages/document_1 has been changed' do
107
+ before do
108
+ @logger.stub!(:info)
109
+ @resource_factory.stub!(:get).and_return(@document_1)
110
+ @rake['render:doc'].execute({ })
111
+ end
112
+ after do
113
+ rm_rf 'output'
114
+ end
115
+ it 'should re-render output/document_1' do
116
+ File.utime(0, Time.now + 2, document_path('document_1'))
117
+ # FIXME: logger should receive *exactly* 2 times :info message
118
+ # but actually it receives four.. maybe there is some issue with
119
+ # Rake::Task#execute .. to investigate ..
120
+ @logger.should_receive(:info).at_least(2).with(/render/i)
121
+ @rake['render:doc'].execute({ })
122
+ end
123
+ end
124
+ end
125
+
data/spec/spec.opts ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ --format
3
+ specdoc
4
+
data/spec/spec_helper.rb CHANGED
@@ -5,57 +5,130 @@
5
5
  # (c)2006, 2007 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
6
6
  #
7
7
 
8
- module SpecPathHelper
9
- DATA_TEST_DIR = 'data/test_build'
10
- DATA_DEST_DIR = 'data'
11
- CACHE_PATH = '.cache'
12
- DOCUMENT_PATH = 'doc/pages'
13
- DATA_PATH = 'doc/data'
14
- CONFIG_PATH = 'doc/configs'
15
- LAYOUT_PATH = 'doc/layouts'
16
- TEMPLATE_PATH = 'templates'
17
- OUTPUT_PATH = 'output'
18
- def base_path(fn = '')
19
- File.join('.', fn)
20
- end
21
- def cache_path(fn = '')
22
- File.join(base_path, CACHE_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
8
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../lib')))
9
+
10
+ require 'dokkit/hash'
11
+
12
+ module SpecHelper
13
+ module Path
14
+ TEST_DATA = 'test_data'
15
+ DATA_DEST_DIR = 'data'
16
+ CACHE_PATH = '.cache'
17
+ DOCUMENT_PATH = 'doc/pages'
18
+ DATA_PATH = 'doc/data'
19
+ CONFIG_PATH = 'doc/configs'
20
+ LAYOUT_PATH = 'doc/layouts'
21
+ TEMPLATE_PATH = 'templates'
22
+ OUTPUT_PATH = 'output'
23
+ def base_path(fn = '')
24
+ File.join('.', fn)
25
+ end
26
+ def cache_path(fn = '')
27
+ File.join(base_path, CACHE_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
28
+ end
29
+ def document_path(fn = '')
30
+ File.join(base_path, DOCUMENT_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
31
+ end
32
+ def config_path(fn = '')
33
+ File.join(base_path, CONFIG_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
34
+ end
35
+ def layout_path(fn = '')
36
+ File.join(base_path, LAYOUT_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
37
+ end
38
+ def data_path(fn = '')
39
+ File.join(base_path, DATA_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
40
+ end
41
+ def output_path(fn = '')
42
+ File.join(base_path, OUTPUT_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
43
+ end
23
44
  end
24
- def document_path(fn = '')
25
- File.join(base_path, DOCUMENT_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
45
+ module Logger
46
+ def logger
47
+ mock('logger',
48
+ :info => nil,
49
+ :error => nil,
50
+ :warn => nil,
51
+ :debug => nil)
52
+ end
26
53
  end
27
- def config_path(fn = '')
28
- File.join(base_path, CONFIG_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
54
+ module Resource
55
+ include Path
56
+ def document_1
57
+ mock('document_1',
58
+ :source_fn => 'doc/pages/document_1',
59
+ :targets => { :html => nil, :text => nil },
60
+ :target_for => 'output/document_1.html',
61
+ :deps_for => ['doc/pages/document_1'],
62
+ :render => nil
63
+ )
64
+ end
65
+ def document_2
66
+ mock('document_2',
67
+ :source_fn => 'doc/pages/document_2',
68
+ :targets => { :html => nil },
69
+ :target_for => 'output/document_1.html',
70
+ :deps_for => ['doc/pages/document_2'],
71
+ :render => nil
72
+ )
73
+ end
74
+ def data_1
75
+ mock('data_1',
76
+ :target_fn => 'output/data_1',
77
+ :source_fn => 'doc/data/data_1'
78
+ )
79
+ end
80
+ def resource_factory
81
+ mock('resource_factory')
82
+ end
83
+ def filter_factory
84
+ mock('filter_factory')
85
+ end
29
86
  end
30
- def layout_path(fn = '')
31
- File.join(base_path, LAYOUT_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
87
+ module Cache
88
+ def cache
89
+ mock('cache', :load => nil,
90
+ :deps => { },
91
+ :add_dependency => nil)
92
+ end
32
93
  end
33
- def data_path(fn = '')
34
- File.join(base_path, DATA_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
94
+ module Configuration
95
+ def configuration
96
+ { :document_dir => 'doc/pages',
97
+ :data_dir => 'doc/data',
98
+ :layout_dir => 'doc/layouts',
99
+ :config_dir => 'doc/configs',
100
+ :cache_dir => '.cache',
101
+ :output_dir => 'output'
102
+ }
103
+ end
104
+ def merge_hashes(*hashes)
105
+ config = { }
106
+ hashes.each do |hash|
107
+ config.recursive_merge!(YAML::load(File.read(hash))) if File.exists?(hash.to_s)
108
+ config.recursive_merge!(hash) if hash.is_a?(Hash)
109
+ end
110
+ config.delete('config')
111
+ config
112
+ end
35
113
  end
36
- def output_path(fn = '')
37
- File.join(base_path, OUTPUT_PATH, fn).sub(/^\.\//, '').sub(/\/$/, '')
38
- end
39
- end
40
-
41
- module CaptureStdout
42
- def capture_stdout
43
- s = StringIO.new
44
- oldstdout = $stdout
45
- $stdout = s
46
- yield
47
- s.string
48
- ensure
49
- $stdout = oldstdout
114
+ module CaptureOutput
115
+ def capture_stdout
116
+ s = StringIO.new
117
+ oldstdout = $stdout
118
+ $stdout = s
119
+ yield
120
+ s.string
121
+ ensure
122
+ $stdout = oldstdout
123
+ end
124
+ def capture_stderr
125
+ s = StringIO.new
126
+ oldstdout = $stderr
127
+ $stderr = s
128
+ yield
129
+ s.string
130
+ ensure
131
+ $stderr = oldstdout
132
+ end
50
133
  end
51
- def capture_stderr
52
- s = StringIO.new
53
- oldstdout = $stderr
54
- $stderr = s
55
- yield
56
- s.string
57
- ensure
58
- $stderr = oldstdout
59
- end
60
134
  end
61
-