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
@@ -1,21 +0,0 @@
1
- # latex-notemplate.rb
2
- # @Author: Andrea Fazzi (andrea.fazzi AT alca.le.it)
3
- # @Website: http://alca.le.it/
4
- # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
- # @Created: 04-Dic-2006.
6
- # @Last Change: 04-Dic-2006.
7
- # @Revision: 0.1
8
-
9
- require 'deplate/fmt/html'
10
-
11
- class Deplate::Formatter::HTMLNoTemplate < Deplate::Formatter::HTML
12
- self.myname = "html-notemplate"
13
- self.rx = /html?(-notemplate)?/i
14
-
15
-
16
- def prepare
17
- end
18
-
19
- def add_package(pkg, *options)
20
- end
21
- end
@@ -1,24 +0,0 @@
1
- # latex-notemplate.rb
2
- # @Author: Luca Greco (luca.greco AT alca.le.it)
3
- # @Website: http://alca.le.it/
4
- # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
- # @Created: 16-Oct-2006.
6
- # @Last Change: 16-Oct-2006.
7
- # @Revision: 0.1
8
-
9
- require 'deplate/fmt/latex'
10
-
11
- class Deplate::Formatter::LatexNoTemplate < Deplate::Formatter::LaTeX
12
- self.myname = "latex-notemplate"
13
- self.rx = /(la)?tex(-notemplate)?/i
14
-
15
- def prepare
16
- end
17
-
18
- def initialize_deplate_sty
19
- end
20
-
21
- def add_package(pkg, *options)
22
- end
23
- end
24
-
@@ -1,221 +0,0 @@
1
- #
2
- # File 'document.rb' created on 13 gen 2008 at 18:49:57.
3
- #
4
- # See 'dokkit.rb' or +LICENSE+ for licence information.
5
- #
6
- # (C) 2006, 2007 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
7
- #
8
-
9
- require 'ostruct'
10
- require 'yaml'
11
- require 'erb'
12
- require 'dokkit/logger'
13
- require 'dokkit/consolelog'
14
- require 'dokkit/pathhelper'
15
- require 'dokkit/cachemanager'
16
- require 'dokkit/recursivemerge'
17
- require 'dokkit/pathhelper'
18
- require 'dokkit/filters/all'
19
- require 'dokkit/extension/filehelper'
20
-
21
- module Dokkit
22
- class Document
23
- DEFAULT_FILTER_CHAIN = {
24
- 'html' => ['deplate-html'],
25
- 'latex' => ['deplate-latex'],
26
- 'text' => ['deplate-text'],
27
- 'nil' => ['nil']
28
- }
29
- include Extension::FileHelper, PathHelper
30
- attr_reader :document, :taskconfig
31
- attr_reader :document_basename
32
- attr_reader :configs, :targets, :layouts
33
- attr_reader :filter_chain
34
- attr_reader :configuration
35
- attr_reader :source_text
36
- attr_reader :prerequisites
37
- attr_reader :logger
38
- def initialize(document, taskconfig, rendered = [], &blk)
39
- @logger = Log::ConsoleLog.consolelog
40
- @document, @taskconfig, @rendered = document, taskconfig, rendered
41
- @document_basename = File.basename(document)
42
- @stripped_document = strip_ext(@document)
43
- @layouts, @targets, @prerequisites, @filter_chain = { }, { }, { }, { }
44
- @configs = []
45
- @configuration = Hash.new do |h, k|
46
- @logger.warn("Configuration key '#{k}' not defined in '#{targets[@format]}'!")
47
- h[k] = "'#{k}' not defined!"
48
- end
49
- @configuration.extend ConfigHash
50
- @source_text = read_source
51
- @cache = CacheManager.instance
52
-
53
- yield self if block_given?
54
-
55
- collect_resources
56
- end
57
- def render(format)
58
- @format = format
59
- unless @source_text.nil?
60
- erb = ERB.new(@source_text)
61
- erb.filename = @document
62
- @content_for_layout = apply_filters(erb.result(binding), format)
63
- end
64
- unless @layouts[format].empty?
65
- @layouts[format].each do |layout_fn|
66
- erb = ERB.new(File.read(layout_fn))
67
- erb.filename = layout_fn
68
- @content_for_layout = erb.result(binding)
69
- end
70
- end
71
- @content_for_layout
72
- end
73
-
74
- private
75
-
76
- def extract_meta!(text)
77
- meta_regexp = /\A-{3}$(.*?)-{3}$/m
78
- meta = text.scan(meta_regexp).to_s
79
- text.sub!(meta_regexp, '')
80
- return meta
81
- end
82
- def render_partial(document_fn, format = @format, &blk)
83
- unless @rendered.include?(document)
84
- result = Document.new(File.join(@taskconfig.document_dir, document_fn), @taskconfig, @rendered << document, &blk).render(format)
85
- @cache.add_dependency(targets[format], File.join(@taskconfig.document_dir, document_fn))
86
- @rendered.clear
87
- else
88
- @logger.error("Circular dependency detected in '#{document}', aborting.")
89
- end
90
- result
91
- end
92
- def collect_resources
93
- collect_configs
94
- collect_targets
95
- collect_layouts
96
- collect_prerequisites
97
- end
98
- def collect_prerequisites
99
- @targets.each_key do |format|
100
- @prerequisites[format] = []
101
- @prerequisites[format] << document
102
- @prerequisites[format].concat @configs
103
- @prerequisites[format].concat(@layouts[format]) if @layouts[format]
104
- @prerequisites
105
- end
106
- end
107
- def collect_configs
108
- @configs << (config_fn_helper(@stripped_document, @taskconfig)) if File.exists?(config_fn_helper(@stripped_document, @taskconfig))
109
- @configs.concat(resolve_common_configs(File.dirname(@document)))
110
- @configs << (@stripped_document + '.yaml') if File.exists?(@stripped_document + '.yaml')
111
-
112
- meta_configuration = YAML::load(extract_meta!(@source_text))
113
- if meta_configuration
114
- if meta_configuration.has_key?('config')
115
- (@configs << get_config_fns(meta_configuration['config'])).flatten!
116
- meta_configuration.delete('config')
117
- end
118
- end
119
-
120
- @configs.each do |config_fn|
121
- @configuration.recursive_merge!(YAML::load(File.open(config_fn)))
122
- if @configuration.has_key?('config')
123
- (@configs << get_config_fns(@configuration['config'])).flatten!
124
- @configuration.delete('config')
125
- end
126
- end
127
-
128
- @configuration.recursive_merge!(meta_configuration) if meta_configuration
129
- end
130
- def resolve_common_configs(dir, arr = [])
131
- parent = File.expand_path(File.join(dir, '..'))
132
- resolve_common_configs(parent, arr) unless parent == dir # at root
133
- fn = File.join(dir,'COMMON.yaml')
134
- arr << fn if (File.exists?(fn) && File.readable?(fn))
135
- arr
136
- end
137
- def build_config_fn(fn)
138
- result_fn = fn
139
- if File.extname(fn).empty?
140
- result_fn += '.yaml'
141
- end
142
- result_fn = File.join(@taskconfig.config_dir, result_fn)
143
- end
144
- def get_config_fns(configuration)
145
- if configuration.is_a?(String)
146
- result = build_config_fn(configuration)
147
- elsif configuration.is_a?(Array)
148
- result = configuration.collect do |fn|
149
- fn = build_config_fn(fn)
150
- end
151
- else
152
- @logger.fail('Invalid config file value.')
153
- end
154
- result
155
- end
156
- def collect_targets
157
- if @configuration.has_key?('render_in')
158
- @configuration['render_in'].each do |fmt|
159
- if fmt.class != Hash
160
- @targets[fmt] = output_fn_helper(@stripped_document, ".#{fmt}", @taskconfig)
161
- @filter_chain[fmt] = DEFAULT_FILTER_CHAIN[fmt]
162
- else
163
- fmt.each do |format, configuration|
164
- if(configuration.empty?)
165
- @targets[format] = output_fn_helper(@stripped_document, ".#{format}")
166
- @filter_chain[fmt] = DEFAULT_FILTER_CHAIN[fmt]
167
- else
168
- output, ext = @taskconfig.output_dir, ".#{format}"
169
- ext = configuration['ext'] if configuration.has_key?('ext')
170
- output = File.join(@taskconfig.output_dir, configuration['output']) if configuration.has_key?('output')
171
- @targets[format] = File.join(output, strip_ext(@document_basename) + ext)
172
- if configuration.has_key?('filters')
173
- @filter_chain[format] = configuration['filters']
174
- end
175
- end
176
- end
177
- end
178
- end
179
- else
180
- @targets['html'] = output_fn_helper(@stripped_document, '.html', @taskconfig)
181
- @filter_chain['html'] = DEFAULT_FILTER_CHAIN['html']
182
- end
183
- end
184
- def collect_layouts
185
- @targets.each do |format, target|
186
- layout_fn = []
187
- layout_ext = File.extname(target)
188
- layout_fn << (layout_fn_helper(@stripped_document, layout_ext, @taskconfig)) if File.exists?(layout_fn_helper(@stripped_document, layout_ext, @taskconfig))
189
- layout_fn << (@stripped_document + layout_ext) if File.exists?(@stripped_document + layout_ext)
190
- if @configuration.has_key?('layout')
191
- @configuration['layout'].each do |layout|
192
- config_layout_fn = strip_ext(layout)
193
- layout_fn << File.join(@taskconfig.layout_dir, config_layout_fn + layout_ext) if File.exists?(File.join(@taskconfig.layout_dir, config_layout_fn + layout_ext))
194
- layout_fn << (config_layout_fn + layout_ext) if File.exists?(config_layout_fn + layout_ext)
195
- end
196
- end
197
- @logger.warn("Layout not found for '#{target}'!") if layout_fn.empty?
198
- @layouts[format] = layout_fn.uniq.reverse
199
- end
200
- end
201
- def read_source
202
- File.read(document)
203
- end
204
- def apply_filters(text, target)
205
- filters = []
206
- chain = @filter_chain[target]
207
- if chain
208
- @filter_chain[target].each do |name|
209
- begin
210
- filters << Filters[name]
211
- rescue
212
- @logger.warn("Filter '#{name}' not found, ignored.")
213
- end
214
- end
215
- filters.inject(text) { |s, f| f.filter(s) }
216
- else
217
- @logger.error("Don't know how to render in '#{target}' format!")
218
- end
219
- end
220
- end
221
- end
@@ -1,68 +0,0 @@
1
- #
2
- # File 'dokkitlib.rb' created on 18 feb 2008 at 17:54:20.
3
- #
4
- # See 'dokkit.rb' or +LICENSE+ for licence information.
5
- #
6
- # (C) 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
7
- #
8
-
9
- require 'ostruct'
10
- require 'rake'
11
- require 'rake/tasklib'
12
- require 'dokkit/defaults'
13
- require 'dokkit/taskconfig'
14
- require 'dokkit/pathhelper'
15
- require 'dokkit/consolelog'
16
-
17
- module Dokkit
18
- class DokkitLib < Rake::TaskLib
19
- include PathHelper, Rake::TaskManager
20
- attr_reader :ns
21
- attr_reader :logger
22
- attr_reader :model
23
- attr_accessor :config
24
- def initialize(model, namespace = 'dokkit', opts = { })
25
- @ns = namespace
26
- @model = model
27
- @config = model.config
28
- @logger = Log::ConsoleLog.consolelog
29
-
30
- pre_block_configuration
31
-
32
- yield self if block_given?
33
-
34
- post_block_configuration
35
-
36
- check_directories if opts[:check_dir]
37
- define_dokkit_tasks
38
- end
39
- def dokkit_task(*args, &block)
40
- task_name, arg_names, needs = resolve_args(args.dup)
41
- task(*args, &block) unless Rake::Task.task_defined?("#{@ns}:#{task_name}")
42
- end
43
-
44
- private
45
-
46
- def check_directories
47
- unless @config.directories.empty?
48
- @config.directories.each_value do |dir|
49
- @logger.error("Directory '#{dir}' does not exist") unless (dir =~ /output|cache/ || File.exists?(dir))
50
- end
51
- end
52
- end
53
- def pre_block_configuration
54
- nil
55
- end
56
- def post_block_configuration
57
- nil
58
- end
59
- def define_dokkit_tasks
60
- namespace @ns do
61
- private_methods.select { |meth| meth =~ /define_dokkit_/ and not meth =~ /define_dokkit_tasks/ }.each do |method|
62
- self.send(method)
63
- end
64
- end
65
- end
66
- end
67
- end
68
-
@@ -1,25 +0,0 @@
1
- #
2
- # File 'filehelper.rb' created on 28 feb 2008 at 16:40:57.
3
- #
4
- # See 'dokkit.rb' or +LICENSE+ for licence information.
5
- #
6
- # (C) 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
7
- #
8
-
9
- require 'dokkit/extension/extension'
10
-
11
- module Dokkit
12
- module Extension
13
- module FileHelper
14
- def relative(href)
15
- thr = href
16
- if thr.is_a?(String) && href[0,1] == '/'
17
- dtfn = File.dirname(document[/^#{taskconfig.document_dir}\/(.*)/,1]) + '/'
18
- count = dtfn == './' ? 0 : dtfn.split('/').length
19
- thr = ('../' * count) + href[1..href.length]
20
- end
21
- thr
22
- end
23
- end
24
- end
25
- end
@@ -1,44 +0,0 @@
1
- #
2
- # File 'fileselection.rb' created on 07 feb 2008 at 15:52:42.
3
- #
4
- # See 'dokkit.rb' or +LICENSE+ for licence information.
5
- #
6
- # (C) 2006, 2007 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
7
- #
8
-
9
- require 'rake'
10
-
11
- module Dokkit
12
- module ExtMapping
13
- attr_reader :extmapping
14
- def extend(regexp=/.*/, &blk)
15
- @extmapping ||= { }
16
- (files.select { |file| file =~ regexp }).each do |file|
17
- @extmapping[file] = blk
18
- end
19
- end
20
- end
21
- class FileSelection
22
- attr_accessor :base_dir
23
- alias :dir :base_dir
24
- alias :dir= :base_dir=
25
- def initialize(base_dir = '.')
26
- @base_dir = base_dir
27
- @includes = []
28
- @excludes = []
29
- yield self if block_given?
30
- end
31
- def include(*patterns)
32
- patterns.each { |pattern| @includes << pattern }
33
- end
34
- def exclude(*patterns)
35
- patterns.each { |pattern| @excludes << pattern }
36
- end
37
- def files
38
- FileList.new(@base_dir) do |fl|
39
- fl.exclude *@excludes.collect { |exclude| File.join(@base_dir, exclude) } unless @excludes.empty?
40
- fl.include *@includes.collect { |include| File.join(@base_dir, include) } unless @includes.empty?
41
- end.uniq.select { |fn| not File.directory?(fn) }
42
- end
43
- end
44
- end
@@ -1,18 +0,0 @@
1
- #
2
- # File 'all_filters.rb' created on 18 feb 2008 at 17:13:12.
3
- #
4
- # See 'dokkit.rb' or +LICENSE+ for licence information.
5
- #
6
- # (C) 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
7
- #
8
-
9
- require 'dokkit/filters/base'
10
-
11
- Dir[File.join(File.dirname(__FILE__), '*.rb')].each do |fn|
12
- begin
13
- require fn unless fn =~ /[\\\/]base.rb$/ or fn == 'all.rb'
14
- rescue LoadError
15
- nil
16
- end
17
- end
18
-
data/lib/dokkit/model.rb DELETED
@@ -1,34 +0,0 @@
1
- #
2
- # File 'model.rb' created on 10 mar 2008 at 13:39:48.
3
- #
4
- # See 'dokkit.rb' or +LICENSE+ for licence information.
5
- #
6
- # (C) 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
7
- #
8
-
9
- require 'yaml'
10
- require 'dokkit/taskconfig'
11
- require 'dokkit/cachemanager'
12
-
13
- module Dokkit
14
- class Model
15
- class << self
16
- def init(name = 'model', &blk)
17
- @model ||= Model.new(name, &blk)
18
- end
19
- end
20
- attr_accessor :config
21
- attr_reader :name, :cache
22
- def initialize(name, &blk)
23
- @name = name
24
- @config = TaskConfig.new
25
-
26
- yield self if block_given?
27
-
28
- @cache = CacheManager.instance
29
- @cache.init('deps.yaml', @config.cache_dir)
30
-
31
- self
32
- end
33
- end
34
- end
@@ -1,9 +0,0 @@
1
- <html>
2
- <link href="<%= relative('/css/style.css') %>" rel="stylesheet" type="text/css" media="screen" />
3
- <head>
4
- <title>A changed title</title>
5
- </head>
6
- <body>
7
- <%= @content_for_layout %>
8
- </body>
9
- </html>
@@ -1,102 +0,0 @@
1
- ---
2
- title: The simpledocument model
3
- render_in:
4
- - html
5
- - latex
6
- - text
7
- ---
8
-
9
- %% Dynamic generation of the Table of Contents.
10
- %% Generate TOC only if formatter is different from html.
11
-
12
- #IF: fmt==html-notemplate
13
- #VAR: headings=plain
14
- #ELSE
15
- #LIST: toc
16
- ----8<----
17
- #ENDIF
18
-
19
-
20
- * Description of the model
21
-
22
- This is a simple document model for ''dokkit''. You can use this model
23
- as a base to create simple documents like tutorials, howtos, technical
24
- reports, etc.
25
-
26
- * Edit and render your document
27
-
28
- To edit the content of the document simply edit
29
- ''simpledocument.deplate'' in ''doc/pages'' folder or create a new
30
- file in ''doc/pages'' directory.
31
-
32
- To get further information about the deplate wiki syntax please check
33
- [[http://deplate.sf.net/deplate.html][deplate]] homepage.
34
-
35
- To render this document in ''html'', ''tex'' and ''plain text'', open a terminal and type:
36
-
37
- #Verbatim <<EOB
38
- $ dokkit ## or rake
39
- EOB
40
-
41
- from the top-level directory or from any subdirectory contained in it.
42
-
43
- You should get the output files in the 'output' folder.
44
-
45
- * Rendering the modified parts of the document and cleaning up
46
-
47
- Once you have rendered the document, running the ''dokkit'' command again will
48
- appear to do nothing, because only changed resources are re-rendered.
49
- To clean the output and start over run:
50
-
51
- #Verbatim <<EOB
52
- $ dokkit clobber
53
- EOB
54
-
55
- Note that if you modify any part of the document then you must re-run
56
- ''dokkit'' command in order to apply changes and to re-generate the
57
- desidered output.
58
-
59
- So, once you have modified your document, run:
60
-
61
- #Verbatim <<EOB
62
- $ dokkit ## or rake
63
- EOB
64
-
65
- Only the modified resources will be transformed.
66
-
67
- * Configure the documentation environment
68
-
69
- To configure your documentation environment edit the *.rake files in
70
- ''tasks'' folder.
71
-
72
- * How to get other ''dokkit'' models
73
-
74
- To search for other document models open a terminal and type:
75
-
76
- #Verbatim <<EOB
77
- $ gem list dokkit-model
78
- EOB
79
-
80
- To get a particular model named <model_name> run:
81
-
82
- #Verbatim <<EOB
83
- $ gem install dokkit-model-<model_name>
84
- EOB
85
-
86
- or check http://rubyforge.org/projects/dokkit/.
87
-
88
- * What's next?
89
-
90
- * See what else you can do by typing:
91
-
92
- ''$ dokkit --tasks''
93
-
94
-
95
- - Modify the configuration of the document by editing
96
- ''doc/config/simpledocument.yaml''.
97
-
98
- - Override the default layout creating in custom layouts in ''doc/layouts''.
99
-
100
- For further information about ''dokkit'' see http://dokkit.rubyforge.org/.
101
-
102
-
@@ -1,3 +0,0 @@
1
- require 'tasks/setup'
2
-
3
- Dir.glob('tasks/*.rake').each {|fn| import fn}
@@ -1,3 +0,0 @@
1
- require 'dokkit/cleantask'
2
-
3
- Dokkit::CleanTask.new(MODEL, 'clean')
@@ -1,8 +0,0 @@
1
- require 'dokkit/rendertask'
2
-
3
- Dokkit::RenderTask.new(MODEL, 'render') do |task|
4
- task.config.data_dir = 'doc/data'
5
- task.documents.include('**/*')
6
- task.documents.exclude('**/*.yaml', '**/*_extended', '**/*partial*')
7
- task.data.include('**/*')
8
- end
@@ -1,9 +0,0 @@
1
- require 'dokkit/model'
2
-
3
- MODEL = Dokkit::Model.init('simpledocument') do |model|
4
- model.config.document_dir = 'doc/pages'
5
- model.config.config_dir = 'doc/configs'
6
- model.config.layout_dir = 'doc/layouts'
7
- model.config.output_dir = 'output'
8
- model.config.cache_dir = '.cache'
9
- end
@@ -1,83 +0,0 @@
1
- #
2
- # File 'modeltask.rb' created on 23 feb 2008 at 20:45:10.
3
- #
4
- # See 'dokkit.rb' or +LICENSE+ for licence information.
5
- #
6
- # (C) 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
7
- #
8
-
9
- require 'yaml'
10
- require 'dokkit'
11
- require 'dokkit/dokkitlib'
12
-
13
- module Dokkit
14
- class ModelTask < DokkitLib
15
- attr_reader :models
16
- def initialize(model, namespace = 'model')
17
- super(model, namespace)
18
- end
19
- def pre_block_configuration
20
- @config.local_dir ||= DEFAULT_LOCAL_DIR
21
- @config.search_in ||= [:dokkit_dir, :local_dir]
22
- end
23
- def post_block_configuration
24
- fetch_models
25
- end
26
- def dokkit_dir
27
- lib = nil
28
- unless lib = ENV['DOKKIT_LIB']
29
- $:.each do |it|
30
- if File.exists?(File.join(it, 'dokkit/app.rb'))
31
- lib = it
32
- break
33
- end
34
- end
35
- end
36
- lib
37
- end
38
- def builtin_model_dir
39
- File.join(dokkit_dir, 'dokkit/models')
40
- end
41
-
42
- private
43
-
44
- def from_location(location)
45
- return builtin_model_dir if location == :dokkit_dir
46
- return File.expand_path(File.join('~', @config.local_dir)) if location == :local_dir
47
- end
48
- def fetch_models
49
- @models = { }
50
- config.search_in.each do |location|
51
- Dir.glob(File.join(from_location(location), '**/Rakefile')).each do |model|
52
- @models[model.scan(/models\/(.*)\/Rakefile/).flatten.to_s] = File.dirname(model)
53
- end
54
- end
55
- end
56
- def define_dokkit_list_model_task
57
- desc 'List the installed models'
58
- dokkit_task 'list' do
59
- @models.each do |modelname, path|
60
- @logger.info("Found model '#{modelname}' in #{path}")
61
- end
62
- end
63
- end
64
- def define_dokkit_create_task
65
- desc 'Bootstrap a new documentation project'
66
- dokkit_task 'create', :model do |t, args|
67
- model = args.model || DEFAULT_MODEL
68
- if ARGV.size == 2
69
- dest_dir = t.application.top_level_tasks.pop
70
- else
71
- @logger.error('A target directory must be provided.')
72
- end
73
- @logger.error("Directory '#{dest_dir}' exists.") if File.exists?(dest_dir)
74
- @logger.error("Model '#{model}' not found.") unless @models[model]
75
- @logger.info("Create '#{dest_dir}' based on '#{model}' model.")
76
- cp_r(@models[model], dest_dir)
77
- File.open(File.join(dest_dir, 'tasks/model.yaml'), 'w') do |file|
78
- file << { 'name' => model, 'from' => @models[model] }.to_yaml
79
- end
80
- end
81
- end
82
- end
83
- end