dokkit 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
+