dokkit 0.1.1 → 0.2.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 (98) hide show
  1. data/CHANGES +15 -1
  2. data/LICENSE +673 -19
  3. data/README +32 -0
  4. data/Rakefile +59 -25
  5. data/bin/dokkit +48 -38
  6. data/lib/dokkit/#render_task_factory.rb# +94 -0
  7. data/lib/dokkit/app.rb +212 -257
  8. data/lib/dokkit/deplate/fmt/latex-notemplate.rb +3 -1
  9. data/lib/dokkit/dokkittasks.rb +45 -15
  10. data/lib/dokkit/filters/deplate.rb +11 -5
  11. data/lib/dokkit/hash.rb +41 -0
  12. data/lib/dokkit/models/Rakefile.tpl +9 -0
  13. data/lib/dokkit/models/share/builtin.rf +28 -0
  14. data/lib/dokkit/page.rb +161 -20
  15. data/lib/dokkit/render_task_factory.rb +91 -0
  16. data/lib/dokkit.rb +35 -42
  17. data/tests/data/output/simple_document/README +57 -0
  18. data/tests/data/output/simple_document/Rakefile +7 -0
  19. data/tests/data/output/simple_document/doc/config/simple_document.yaml +5 -0
  20. data/tests/data/output/simple_document/doc/pages/simple_document.dpl +12 -0
  21. data/{lib/dokkit/projects/website → tests/data/output/website_project}/Rakefile +2 -1
  22. data/tests/data/projects/simple-document/README +57 -0
  23. data/tests/data/projects/simple-document/Rakefile +22 -0
  24. data/tests/data/projects/simple-document/doc/config/author.yaml +4 -0
  25. data/tests/data/projects/simple-document/doc/config/model.yaml +18 -0
  26. data/tests/data/projects/simple-document/doc/config/simple_document.yaml +6 -0
  27. data/tests/data/projects/simple-document/doc/layouts/another_simple_document.html +8 -0
  28. data/tests/data/projects/simple-document/doc/layouts/another_simple_document.tex +10 -0
  29. data/tests/data/projects/simple-document/doc/layouts/layout_with_custom_name.html +8 -0
  30. data/tests/data/projects/simple-document/doc/layouts/semantic.cache +23 -0
  31. data/tests/data/projects/simple-document/doc/pages/COMMON.yaml +23 -0
  32. data/tests/data/projects/simple-document/doc/pages/another_simple_document.dpl +12 -0
  33. data/tests/data/projects/simple-document/doc/pages/simple_document.dpl +12 -0
  34. data/tests/data/projects/simple-document/doc/pages/simple_document_without_layout.dpl +12 -0
  35. data/tests/data/projects/simple-document/doc/pages/subdir/COMMON.yaml +4 -0
  36. data/tests/data/projects/simple-document/doc/pages/subdir/simple_document_in_subdir.dpl +12 -0
  37. data/tests/data/projects/simple-document/doc/pages/subdir/simple_document_in_subdir.yaml +3 -0
  38. data/tests/data/projects/simple-document/doc/pages/subdir/subdir/COMMON.yaml +2 -0
  39. data/tests/data/projects/simple-document/doc/pages/subdir/subdir/another_simple_document_in_subdir.dpl +12 -0
  40. data/tests/data/projects/simple-document/doc/pages/yet_another_simple_document.dpl +12 -0
  41. data/tests/data/projects/simple-document/doc/pages/yet_another_simple_document.yaml +8 -0
  42. data/tests/spec_page.rb +25 -0
  43. data/tests/test.rb +2 -0
  44. data/tests/test_application.rb +40 -0
  45. data/tests/test_builtin_tasks.rb +37 -0
  46. data/tests/test_config.rb +108 -0
  47. data/tests/test_core.rb +12 -0
  48. data/tests/test_dokkit_commandline.rb +18 -0
  49. data/tests/test_exception.rb +7 -0
  50. data/tests/test_filters.rb +1 -1
  51. data/tests/test_layout.rb +64 -0
  52. data/tests/test_options.rb +33 -0
  53. data/tests/test_project_tasks.rb +48 -0
  54. data/tests/test_recursive_merge.rb +42 -0
  55. data/tests/test_task_factory.rb +38 -0
  56. metadata +138 -94
  57. data/Rakefile.old +0 -62
  58. data/lib/dokkit/builtin.rake +0 -55
  59. data/lib/dokkit/projects/invoice/Rakefile +0 -100
  60. data/lib/dokkit/projects/invoice/doc/config/company.yaml +0 -12
  61. data/lib/dokkit/projects/invoice/doc/config/customer.yaml +0 -4
  62. data/lib/dokkit/projects/invoice/doc/layouts/invoice.dpltex +0 -90
  63. data/lib/dokkit/projects/invoice/doc/pages/COMMON.rb +0 -12
  64. data/lib/dokkit/projects/invoice/doc/pages/invoice.rb +0 -5
  65. data/lib/dokkit/projects/invoice/doc/pages/invoice.yamltex +0 -16
  66. data/lib/dokkit/projects/invoice/doc/res/tex/deplate.sty +0 -46
  67. data/lib/dokkit/projects/invoice/doc/res/tex/images/logo.eps +0 -209
  68. data/lib/dokkit/projects/invoice/doc/res/tex/include/deplate.sty +0 -46
  69. data/lib/dokkit/projects/invoice/doc/res/tex/include/layout.inc +0 -24
  70. data/lib/dokkit/projects/invoice/doc/res/tex/include/macro.inc +0 -67
  71. data/lib/dokkit/projects/invoice/doc/res/tex/include/packages.inc +0 -51
  72. data/lib/dokkit/projects/invoice/lib/invoice.rb +0 -104
  73. data/lib/dokkit/projects/tech_report/README +0 -49
  74. data/lib/dokkit/projects/tech_report/Rakefile +0 -102
  75. data/lib/dokkit/projects/tech_report/doc/config/company.yaml +0 -13
  76. data/lib/dokkit/projects/tech_report/doc/config/tech_report.yaml +0 -3
  77. data/lib/dokkit/projects/tech_report/doc/layouts/report.dpltex +0 -40
  78. data/lib/dokkit/projects/tech_report/doc/pages/COMMON.rb +0 -12
  79. data/lib/dokkit/projects/tech_report/doc/pages/report.dpltex +0 -37
  80. data/lib/dokkit/projects/tech_report/doc/pages/report.inc +0 -2
  81. data/lib/dokkit/projects/tech_report/doc/pages/report.rb +0 -3
  82. data/lib/dokkit/projects/tech_report/doc/res/attachments/attachment_2 +0 -0
  83. data/lib/dokkit/projects/tech_report/doc/res/tex/images/logo.eps +0 -311
  84. data/lib/dokkit/projects/tech_report/doc/res/tex/include/deplate.sty +0 -46
  85. data/lib/dokkit/projects/tech_report/doc/res/tex/include/layout.inc +0 -24
  86. data/lib/dokkit/projects/tech_report/doc/res/tex/include/macro.inc +0 -67
  87. data/lib/dokkit/projects/tech_report/doc/res/tex/include/packages.inc +0 -48
  88. data/lib/dokkit/projects/tech_report/doc/res/tex/report.bib +0 -4
  89. data/lib/dokkit/projects/tech_report/lib/tech_report.rb +0 -17
  90. data/lib/dokkit/projects/website/README +0 -49
  91. /data/{lib/dokkit/projects/invoice → tests/data/output/website_project}/README +0 -0
  92. /data/{lib/dokkit/projects/website → tests/data/output/website_project}/doc/layouts/normal.thtml +0 -0
  93. /data/{lib/dokkit/projects/website → tests/data/output/website_project}/doc/pages/COMMON.rb +0 -0
  94. /data/{lib/dokkit/projects/website → tests/data/output/website_project}/doc/pages/deplate.dplhtml +0 -0
  95. /data/{lib/dokkit/projects/website → tests/data/output/website_project}/doc/pages/index.rb +0 -0
  96. /data/{lib/dokkit/projects/website → tests/data/output/website_project}/doc/pages/index.thtml +0 -0
  97. /data/{lib/dokkit/projects/website → tests/data/output/website_project}/doc/res/images/rote-tiny.png +0 -0
  98. /data/{lib/dokkit/projects/tech_report/doc/res/attachments/attachment_1 → tests/pages/test.dpltex} +0 -0
@@ -0,0 +1,41 @@
1
+ #
2
+ # File 'hash.rb' created on 09 ott 2007 at 15:59:11.
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
+ class Hash
10
+ # Set the default values for keyword arguments.
11
+ # See http://www.lukeredpath.co.uk/2006/7/27/using-ruby-hashes-as-keyword-arguments-with-easy-defaults
12
+ # for a complete discussion.
13
+ def with_defaults!(defaults)
14
+ self.merge!(defaults) { |key, old, new| old.nil? ? new : old }
15
+ end
16
+ # Non-desctructive version of Hash#with_defaults method.
17
+ def with_defaults(defaults)
18
+ self.merge(defaults) { |key, old, new| old.nil? ? new : old }
19
+ end
20
+ # Hash#recursive_merge merges two arbitrarily deep hashes into a single hash.
21
+ # The hash is followed recursively, so that deeply nested hashes that are at
22
+ # the same level will be merged when the parent hashes are merged.
23
+ def recursive_merge!(other_hash)
24
+ merge!(other_hash) do |key, value, other_value|
25
+ if(value.class == Hash && other_value.class == Hash)
26
+ value.recursive_merge other_value
27
+ elsif(value.class == Array && other_value.class == Array)
28
+ value.concat(other_value)
29
+ else
30
+ store(key, other_value)
31
+ end
32
+ end
33
+ end
34
+ # Non-destructive version of Hash#recursive_merge method.
35
+ def recursive_merge(other_hash)
36
+ dup.recursive_merge!(other_hash)
37
+ end
38
+ end
39
+
40
+
41
+
@@ -0,0 +1,9 @@
1
+ #
2
+ # File '(>>>FILE<<<)' created on (>>>DATE<<<) at (>>>TIME<<<).
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
+ (>>>POINT<<<)
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require 'dokkit'
3
+ require 'dokkit/app'
4
+
5
+ EXCLUDE_FL = /TEMPLATE/
6
+
7
+ desc "Bootstrap a new documentation project based on #{ENV['PROJECT']} model."
8
+ task :create do
9
+ rule '' do |t|
10
+ base_path = File.join(Dokkit.fetch_models[ENV['PROJECT']], 'lib/model')
11
+ file_to_copy = FileList.new(["#{base_path}/doc/**/*", "#{base_path}/[A-Z]*"]) do |fl|
12
+ fl.exclude(EXCLUDE_FL).to_a
13
+ end
14
+ copy_model_files base_path, file_to_copy, t.name
15
+ end
16
+ end
17
+
18
+ def copy_model_files(base_path, source_fl, dest_dir)
19
+ puts "Creating model structure on directory '#{dest_dir}'"
20
+ source_fl.each do |complete_fn|
21
+ next if File.directory?(complete_fn)
22
+ complete_fn.scan(/#{base_path}\/(.*)/) do |file_to_copy|
23
+ dirname = File.join(dest_dir, File.dirname(file_to_copy.to_s))
24
+ mkdir_p(dirname, :verbose => false) unless File.exists?(dirname)
25
+ cp complete_fn, dirname, :verbose => true
26
+ end
27
+ end
28
+ end
data/lib/dokkit/page.rb CHANGED
@@ -1,38 +1,107 @@
1
- # Dokkit page class
2
- # (c)2006 Andrea Fazzi (and contributors)
1
+ #
2
+ # File 'page.rb' created on 09 ott 2007 at 15:56:08.
3
3
  #
4
- # See 'dokkit.rb' or LICENSE for licence information.
4
+ # See 'dokkit.rb' or +LICENSE+ for licence information.
5
+ #
6
+ # (C) 2006, 2007 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
7
+ #
5
8
 
6
9
  require 'yaml'
10
+ require 'dokkit/hash'
11
+
12
+ class Module
13
+ def track_methods
14
+ @methods_in_order = []
15
+ class << self
16
+ attr_reader :methods_in_order
17
+ def method_added( method_name )
18
+ @methods_in_order << method_name.id2name
19
+ end
20
+ end
21
+ end
22
+ end
7
23
 
8
24
  module DokkitPage
9
25
 
10
26
  # The base path for config resolution
11
27
  attr_reader :config_path
12
28
 
13
- def config(fn)
14
- @config_files << fn if fn
29
+ def init(config_page, &blk)
30
+ self.class.methods_in_order.each do |init_meth|
31
+ self.send(init_meth, config_page, &blk) if init_meth =~ /init\_/
32
+ end
33
+ end
34
+
35
+ def load_model_config
36
+ load_config('model.yaml')
15
37
  end
38
+
39
+ def config(basename)
40
+ basename.each { |fn| @config_files.push "#{fn}#{@config_defext if File.extname(fn).empty?}" } if basename
41
+ end
16
42
 
17
43
  def load_configs
18
- @config_files.each do |fn|
19
- load_config(fn)
20
- end
44
+ @config_files.each { |fn| load_config(fn) }
21
45
  @config
22
46
  end
23
47
 
24
48
  def load_config(fn)
25
- if fn = config_fn(fn)
26
- raise "Config #{fn} not found" unless File.exists?(fn)
27
- Rake.register_dependency(fn)
28
- @config.update YAML::load( File.open(fn) )
49
+ complete_fn = config_fn(fn)
50
+ if File.exists?(complete_fn)
51
+ Rake.register_dependency(complete_fn)
52
+ result = @config.recursive_merge!( YAML::load( File.open(complete_fn) ) )
53
+ if result.has_key?('document')
54
+ if result['document'].has_key?('config')
55
+ config(result['document'].delete('config'))
56
+ end
57
+ if result['document'].has_key?('layout')
58
+ layout(result['document'].delete('layout'))
59
+ end
60
+ end
61
+ result
62
+ else
63
+ nil
29
64
  end
30
65
  end
31
66
 
32
67
  def config_fn(fn)
33
- File.join(config_path,fn) if fn
68
+ if File.exists?( complete_fn = fn)
69
+ return complete_fn
70
+ elsif File.exists?( complete_fn = File.join(base_path, File.dirname(template_name), fn) )
71
+ return complete_fn
72
+ elsif File.exists?( complete_fn = File.join(config_path, fn))
73
+ return complete_fn
74
+ elsif File.exists?( complete_fn = File.join(Dokkit.model_config_dir(@config['model']['name']), fn))
75
+ return complete_fn
76
+ elsif File.exists?( complete_fn = File.join(Dokkit.model_config_dir(@config['model']['name']), @config['model']['name'] + @config_defext))
77
+ return complete_fn
78
+ else
79
+ # warn "WARNING: Config file #{fn} not found!"
80
+ return fn
81
+ end
82
+ end
83
+
84
+ # Find all COMMON.yaml files from given dir up to FS root.
85
+ def resolve_common_configs(dir, arr = []) # :nodoc:
86
+ # defer to parent dir first
87
+ parent = File.expand_path(File.join(dir, '..'))
88
+ resolve_common_configs(parent,arr) unless parent == dir # at root
89
+ fn = File.join(dir,'COMMON.yaml')
90
+ arr << fn if (File.exists?(fn) && File.readable?(fn))
91
+ arr
92
+ end
93
+
94
+ def config_hash(key)
95
+ return @config[key] if @config.has_key?(key)
96
+ nil
34
97
  end
35
98
 
99
+ # Find and evaluate all COMMON.yaml files from page dir up to FS root.
100
+ def eval_common_configs
101
+ common_configs = resolve_common_configs(File.expand_path(File.dirname(template_filename)))
102
+ common_configs.each { |fn| @config_files.push fn }
103
+ end # method
104
+
36
105
  end
37
106
 
38
107
  module Rote
@@ -40,15 +109,87 @@ module Rote
40
109
  class Page
41
110
 
42
111
  include DokkitPage
112
+
113
+ track_methods
43
114
  alias page_initialize initialize
44
115
 
45
- def initialize(template_name, pages_dir = '.', layout_dir = pages_dir, config_dir = pages_dir, &block)
46
- @config_files = []
47
- @config = {}
48
- @config_path = config_dir[STRIP_SLASHES,1]
49
- page_initialize(template_name, pages_dir, layout_dir, &block)
50
- @config = load_configs
116
+ def initialize(config_page, &blk)
117
+ init(config_page, &blk)
118
+ end
119
+
120
+ def page_initialize(config_page)
121
+ config_page = { :pages_dir => '.', :layout_dir => '.' }.merge(config_page)
122
+ @template_text = nil
123
+ @template_name = nil
124
+ @layout_names = []
125
+ @content_for_layout = nil
126
+ @result = nil
127
+ @layout_defext = config_page[:layout_defext]
128
+ @layout_path = config_page[:layout_dir][STRIP_SLASHES,1]
129
+ @layout_text = nil
130
+ @base_path = config_page[:pages_dir][STRIP_SLASHES,1]
131
+
132
+ @page_filters, @post_filters = [], []
133
+
134
+ # read in the template. Layout _may_ get configured later in page code
135
+ # We only add the pages_dir if it's not already there, because it's
136
+ # easier to pass the whole relative fn from rake...
137
+ # template_name always needs with no prefix.
138
+ tfn = @template_name = config_page[:fn]
139
+ read_template(tfn)
140
+
141
+ layout(File.basename(tfn, config_page[:template_defext]))
142
+
143
+ # Yield to the (extension mapping) block
144
+ yield self if block_given?
145
+
146
+ # Eval COMMON.rb's
147
+ eval_common_rubys
148
+
149
+ # get script filenames, and eval them if found
150
+ tfn = ruby_filename # nil if no file
151
+ instance_eval(File.read(tfn),tfn) if tfn
152
+ end
153
+
154
+ def init_dokkit_page(config_page, &blk)
155
+ config_page.with_defaults!(
156
+ { :pages_dir => '.',
157
+ :layout_dir => '.',
158
+ :config_dir => '.',
159
+ :layout_defext => '.html',
160
+ :config_defext => '.yaml',
161
+ :template_defext => '.dpl'
162
+ }
163
+ )
164
+ @config_files = []
165
+ @config = { }
166
+ @config_path = config_page[:config_dir][STRIP_SLASHES,1]
167
+ @config_defext = config_page[:config_defext]
168
+
169
+ @template_name = tfn = config_page[:fn]
170
+ @base_path = config_page[:pages_dir][STRIP_SLASHES,1]
171
+
172
+ page_initialize(config_page, &blk)
173
+
174
+ load_model_config
175
+ eval_common_configs
176
+ config(File.basename(tfn, config_page[:template_defext]))
177
+ @config = load_configs
51
178
  end
52
- end
53
179
 
180
+ private
181
+
182
+ def layout_fn(fn = nil)
183
+ if File.exists?(complete_fn = File.join(layout_path,fn))
184
+ return complete_fn
185
+ elsif File.exists?(complete_fn = File.join(Dokkit.model_layout_dir(@config['model']['name']), fn))
186
+ return complete_fn
187
+ elsif File.exists?(complete_fn = File.join(Dokkit.model_layout_dir(@config['model']['name']), @config['model']['name'] + @layout_defext))
188
+ return complete_fn
189
+ else
190
+ raise "Layout file #{fn} not found!"
191
+ end
192
+ end
193
+
194
+ end
54
195
  end
@@ -0,0 +1,91 @@
1
+ #
2
+ # File 'render_task_factory.rb' created on 18 Nov 2007 at 16:01: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 'singleton'
10
+ require 'rote/format/html'
11
+ require 'dokkit/filters'
12
+ require 'dokkit/dokkittasks'
13
+
14
+ module Dokkit
15
+ class RenderTaskFactory
16
+ include Singleton
17
+ def create_render_html(name = :render_html)
18
+ Rote::DocTask.new(name) do |task|
19
+ task.output_dir = 'html'
20
+
21
+ task.layout_dir = 'doc/layouts'
22
+ task.config_dir = 'doc/config'
23
+
24
+ task.pages.dir = 'doc/pages'
25
+ task.pages.include('**/*')
26
+ task.pages.exclude('**/*.yaml')
27
+
28
+ task.res.dir = 'doc/res/html'
29
+ task.res.include('**/*')
30
+
31
+ yield task if block_given?
32
+
33
+ task.ext_mapping(/dpl/, 'html', task.output_dir) do |page|
34
+ page.extend Rote::Format::HTML
35
+ page.page_filter Dokkit::Filters::Deplate.new('html-notemplate')
36
+ end
37
+ end
38
+ end
39
+ def create_render_tex(name = :render_tex)
40
+ Rote::DocTask.new(name) do |task|
41
+ task.output_dir = 'tex'
42
+
43
+ task.layout_dir = 'doc/layouts'
44
+ task.layout_defext = '.tex'
45
+
46
+ task.config_dir = 'doc/config'
47
+
48
+ task.pages.dir = 'doc/pages'
49
+ task.pages.include('**/*')
50
+ task.pages.exclude('**/*.yaml')
51
+
52
+ task.res.dir = 'doc/res/tex'
53
+ task.res.include('**/*')
54
+
55
+ yield task if block_given?
56
+
57
+ task.ext_mapping(/dpl/, 'tex', task.output_dir) do |page|
58
+ #FIXME: render_tex task must have its own format extension
59
+ page.extend Rote::Format::HTML
60
+ page.page_filter Dokkit::Filters::Deplate.new('latex-notemplate')
61
+ end
62
+ end
63
+ end
64
+ def create_render_text(name = :render_text)
65
+ Rote::DocTask.new(name) do |task|
66
+ task.output_dir = 'text'
67
+
68
+ task.layout_dir = 'doc/layouts'
69
+ task.layout_defext = '.text'
70
+
71
+ task.config_dir = 'doc/config'
72
+
73
+ task.pages.dir = 'doc/pages'
74
+ task.pages.include('**/*')
75
+ task.pages.exclude('**/*.yaml')
76
+
77
+ task.res.dir = 'doc/res/text'
78
+ task.res.include('**/*')
79
+
80
+ yield task if block_given?
81
+
82
+ task.ext_mapping(/dpl/, 'text', task.output_dir) do |page|
83
+ #FIXME: render_text task must have its own format extension
84
+ page.extend Rote::Format::HTML
85
+ page.page_filter Dokkit::Filters::Deplate.new('plain')
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+
data/lib/dokkit.rb CHANGED
@@ -1,25 +1,38 @@
1
1
  # dokkit.rb - main Dokkit module
2
- # Copyright (c) 2006 Andrea Fazzi (and contributors)
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
- # this software and associated documentation files (the "Software"), to deal in
6
- # the Software without restriction, including without limitation the rights to
7
- # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
8
- # of the Software, and to permit persons to whom the Software is furnished to do
9
- # so, subject to the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be included in all
12
- # copies or substantial portions of the Software.
13
- #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
- # SOFTWARE.
21
- #
22
- # See Dokkit for full documentation
2
+
3
+ #####
4
+ ## *Dokkit* is a Rote (http://rote.rubyforge.it) and Rake (http://rake.rubyforge.org)
5
+ ## based documentation building tool. It uses the deplate rendering engine to produce
6
+ ## very polished tex file, page-based documentation, websites, and general textual templates.
7
+ ## It enables embedded Ruby code, layouts, YAML config files and rake tasks
8
+ ## to be used to automatically generate output in any
9
+ ## (textual) format from a directory tree containing template files.
10
+ ##
11
+ ## Dokkit was created to manage the documentation produced by Alca Coop (http://alca.le.it/) for its customers
12
+ ## and it is a fairly flexible tool.
13
+ ##
14
+ ## Dokkit can be used from the command-line, or in your own +Rakefile+. It
15
+ ## supports both manual and automatic rendering of modified resources, and
16
+ ## can be configured to monitor your source tree for changes.
17
+ ##
18
+ ## See +README+ and http://dokkit.rubyforge.org for general usage information.
19
+ ##
20
+ ## Copyright (C) 2006, 2007 Andrea Fazzi (and contributors).
21
+ ##
22
+ ## This program is free software: you can redistribute it and/or modify
23
+ ## it under the terms of the GNU General Public License as published by
24
+ ## the Free Software Foundation, either version 3 of the License, or
25
+ ## (at your option) any later version.
26
+ ##
27
+ ## This program is distributed in the hope that it will be useful,
28
+ ## but WITHOUT ANY WARRANTY; without even the implied warranty of
29
+ ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30
+ ## GNU General Public License for more details.
31
+ ##
32
+ ## You should have received a copy of the GNU General Public License
33
+ ## along with this program. If not, see <http://www.gnu.org/licenses/>.
34
+ ##
35
+ ## See +LICENSE+ for details.
23
36
 
24
37
  # require these before gems, because we want to use them from
25
38
  # lib/ , or from normal install, if that's how Dokkit was started.
@@ -42,28 +55,8 @@ end
42
55
  require 'rake'
43
56
 
44
57
  # Master Dokkit version. Manage this from the Rake release support.
45
- DOKKITVERSION = '0.1.0'
58
+ DOKKITVERSION = '0.2.0'
46
59
 
47
- #####
48
- ## *Dokkit* is a Rote (http://rote.rubyforge.it) and Rake (http://rake.rubyforge.org)
49
- ## based documentation building tool. It uses the deplate rendering engine to produce
50
- ## very polished tex file.
51
- ## page-based documentation, websites, and general textual templates.
52
- ## It enables embedded Ruby code, layout, and optionally plain-text formatting
53
- ## (HTML-only at present) to be used to automatically generate output in any
54
- ## (textual) format from a directory tree containing template files.
55
- ##
56
- ## Dokkit was created to manage the documentation of Alca Coop (http://alca.le.it/)
57
- ## and it is a fairly flexible tool. Dokkit can handle the internal documentation of
58
- ## your software house.
59
- ##
60
- ## Dokkit can be used from the command-line, or in your own +Rakefile+. It
61
- ## supports both manual and automatic rendering of modified resources, and
62
- ## can be configured to monitor your source tree for changes.
63
- ##
64
- ## See +README+ for general usage information.
65
- ##
66
- ## Dokkit is (c)2006 Andrea Fazzi (and contributors). See +LICENSE+ for details.
67
60
  module Dokkit
68
61
 
69
62
  # this space intentionally left blank
@@ -0,0 +1,57 @@
1
+ This is 'simple_document' a simple document model included in the core
2
+ distribution of dokkit. Check http://rubyforge.org/dokkit/ for other
3
+ models.
4
+
5
+ To modify this document simply edit 'doc/pages/simple_document.dpl'. To get further
6
+ information about the wiki syntax to be used please check http://deplate.sf.net/
7
+
8
+ To render this document in html, type:
9
+
10
+ dokkit render_html
11
+
12
+ from any subdirectory contained in the top-level directory (this one).
13
+
14
+ To render this document in TeX, type:
15
+
16
+ dokkit render_tex
17
+
18
+ In either case, you should get the output in a (created) 'output'
19
+ directory:
20
+
21
+ in 'output/html' you get html output
22
+ in 'output/tex' you get tex output
23
+
24
+ ... and so on...
25
+
26
+ Once you have rendered the document, running the command again will appear
27
+ to do nothing, because only changed resources are re-rendered. To
28
+ clean the output and start over:
29
+
30
+ dokkit clobber
31
+
32
+ Alternatively, modify the page or resource files, and rerun
33
+
34
+ dokkit render_html
35
+
36
+ or
37
+
38
+ dokkit render_tex
39
+
40
+ to transform only the modified resource.
41
+
42
+ * WHAT'S NEXT?
43
+
44
+ - See what else you can do by typing:
45
+
46
+ dokkit --tasks
47
+
48
+ - Modify the configuration of the document by editing
49
+ 'doc/config/simple_document.yaml'
50
+
51
+ - Create a new document by typing:
52
+
53
+ dokkit create_new_page new_document
54
+
55
+ For further information about dokkit see http://dokkit.rubyforge.org/
56
+
57
+
@@ -0,0 +1,7 @@
1
+ # Rakefile for simple_document project model
2
+
3
+ require 'dokkit'
4
+ require 'dokkit/app'
5
+ import File.join(Dokkit.projects_dir,"simple_document","lib/rakefile.rf")
6
+
7
+
@@ -0,0 +1,5 @@
1
+ title: A Simple Document
2
+ author: John Doe
3
+
4
+
5
+
@@ -0,0 +1,12 @@
1
+ * Abstract
2
+ From a document of Jim{cite: author:jim}
3
+
4
+ * Introduction
5
+
6
+ * Main section
7
+
8
+ ** Subsection One
9
+ ** Subsection Two
10
+
11
+ * Conclusions
12
+
@@ -38,7 +38,8 @@ include Dokkit
38
38
  ws = Rote::DocTask.new(:doc) do |site|
39
39
  site.output_dir = 'html'
40
40
  site.layout_dir = 'doc/layouts'
41
-
41
+ site.config_dir = 'doc/config'
42
+
42
43
  site.pages.dir = 'doc/pages'
43
44
  site.pages.include('**/*')
44
45
 
@@ -0,0 +1,57 @@
1
+ This is 'simple_document' a simple document model included in the core
2
+ distribution of dokkit. Check http://rubyforge.org/dokkit/ for other
3
+ models.
4
+
5
+ To modify this document simply edit 'doc/pages/simple_document.dpl'. To get further
6
+ information about the wiki syntax to be used please check http://deplate.sf.net/
7
+
8
+ To render this document in html, type:
9
+
10
+ dokkit render_html
11
+
12
+ from any subdirectory contained in the top-level directory (this one).
13
+
14
+ To render this document in TeX, type:
15
+
16
+ dokkit render_tex
17
+
18
+ In either case, you should get the output in a (created) 'output'
19
+ directory:
20
+
21
+ in 'output/html' you get html output
22
+ in 'output/tex' you get tex output
23
+
24
+ ... and so on...
25
+
26
+ Once you have rendered the document, running the command again will appear
27
+ to do nothing, because only changed resources are re-rendered. To
28
+ clean the output and start over:
29
+
30
+ dokkit clobber
31
+
32
+ Alternatively, modify the page or resource files, and rerun
33
+
34
+ dokkit render_html
35
+
36
+ or
37
+
38
+ dokkit render_tex
39
+
40
+ to transform only the modified resource.
41
+
42
+ * WHAT'S NEXT?
43
+
44
+ - See what else you can do by typing:
45
+
46
+ dokkit --tasks
47
+
48
+ - Modify the configuration of the document by editing
49
+ 'doc/config/simple_document.yaml'
50
+
51
+ - Create a new document by typing:
52
+
53
+ dokkit create_new_page new_document
54
+
55
+ For further information about dokkit see http://dokkit.rubyforge.org/
56
+
57
+
@@ -0,0 +1,22 @@
1
+ #
2
+ # File 'Rakefile' created on 09 ott 2007 at 16:06: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
+ # Rakefile for simpledocument project model
9
+
10
+ require 'dokkit'
11
+ require 'dokkit/app'
12
+ require 'dokkit/render_task_factory'
13
+
14
+
15
+ factory = Dokkit::RenderTaskFactory.instance
16
+
17
+ factory.create_render_html
18
+ factory.create_render_tex
19
+
20
+ task :default => [:render_html]
21
+
22
+
@@ -0,0 +1,4 @@
1
+ document:
2
+ author:
3
+ email: john.doe@organization.org
4
+