dokkit 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Manifest.txt +125 -0
- data/README.txt +53 -0
- data/Rakefile +25 -167
- data/bin/dokkit +4 -60
- data/lib/dokkit/app.rb +63 -192
- data/lib/dokkit/builtintask.rb +85 -0
- data/lib/dokkit/cachemanager.rb +61 -0
- data/lib/dokkit/cleantask.rb +51 -0
- data/lib/dokkit/consolelog.rb +42 -0
- data/lib/dokkit/defaults.rb +19 -0
- data/lib/dokkit/document.rb +221 -0
- data/lib/dokkit/dokkitlib.rb +68 -0
- data/lib/dokkit/extension/extension.rb +15 -0
- data/lib/dokkit/extension/filehelper.rb +25 -0
- data/lib/dokkit/fileselection.rb +44 -0
- data/lib/dokkit/filters/all.rb +18 -0
- data/lib/dokkit/filters/base.rb +18 -0
- data/lib/dokkit/filters/deplate.rb +21 -25
- data/lib/dokkit/filters/maruku.rb +23 -0
- data/lib/dokkit/filters/nil.rb +23 -0
- data/lib/dokkit/filters.rb +29 -21
- data/lib/dokkit/logger.rb +73 -0
- data/lib/dokkit/model.rb +34 -0
- data/lib/dokkit/models/{Rakefile.tpl → simpledocument/model/Rakefile} +15 -2
- data/lib/dokkit/models/simpledocument/model/doc/configs/simpledocument.yaml +3 -0
- data/lib/dokkit/models/simpledocument/model/doc/layouts/simpledocument.html +9 -0
- data/lib/dokkit/models/simpledocument/model/doc/layouts/simpledocument.latex +8 -0
- data/lib/dokkit/models/simpledocument/model/doc/layouts/simpledocument.text +1 -0
- data/lib/dokkit/models/simpledocument/model/doc/pages/simpledocument.deplate +102 -0
- data/lib/dokkit/models/simpledocument/model/tasks/all.rb +3 -0
- data/lib/dokkit/models/simpledocument/model/tasks/clean.rake +3 -0
- data/lib/dokkit/models/simpledocument/model/tasks/render.rake +8 -0
- data/lib/dokkit/models/simpledocument/model/tasks/setup.rb +9 -0
- data/lib/dokkit/modeltask.rb +83 -0
- data/lib/dokkit/pathhelper.rb +46 -0
- data/lib/dokkit/recursivemerge.rb +59 -0
- data/lib/dokkit/rendertask.rb +101 -0
- data/lib/dokkit/resourcemanager.rb +177 -0
- data/lib/dokkit/taskconfig.rb +39 -0
- data/lib/dokkit/templatetask.rb +37 -0
- data/lib/dokkit.rb +2 -8
- data/spec/app_spec.rb +55 -0
- data/spec/builtintask_spec.rb +114 -0
- data/spec/cachemanager_spec.rb +107 -0
- data/spec/cleantask_spec.rb +72 -0
- data/spec/consolelog_spec.rb +69 -0
- data/{tests/data/projects/simple-document → spec/data/test_build}/Rakefile +8 -8
- data/spec/data/test_build/doc/configs/document_1.yaml +3 -0
- data/spec/data/test_build/doc/configs/required.yaml +3 -0
- data/spec/data/test_build/doc/configs/subdir/document_4.yaml +3 -0
- data/spec/data/test_build/doc/layouts/document_1.html +9 -0
- data/spec/data/test_build/doc/layouts/document_1.latex +8 -0
- data/spec/data/test_build/doc/layouts/document_with_partials.html +9 -0
- data/spec/data/test_build/doc/layouts/layout +0 -0
- data/spec/data/test_build/doc/layouts/layout.html +8 -0
- data/spec/data/test_build/doc/layouts/layout.html.backup +8 -0
- data/spec/data/test_build/doc/layouts/nested.html +3 -0
- data/spec/data/test_build/doc/layouts/partials/partial.html +4 -0
- data/spec/data/test_build/doc/pages/COMMON.yaml +6 -0
- data/spec/data/test_build/doc/pages/document_1 +20 -0
- data/spec/data/test_build/doc/pages/document_1.dep +4 -0
- data/spec/data/test_build/doc/pages/document_1.yaml +11 -0
- data/spec/data/test_build/doc/pages/document_2 +9 -0
- data/spec/data/test_build/doc/pages/document_2.dep +0 -0
- data/spec/data/test_build/doc/pages/document_2.yaml +6 -0
- data/spec/data/test_build/doc/pages/document_3 +13 -0
- data/spec/data/test_build/doc/pages/document_5.exclude +0 -0
- data/spec/data/test_build/doc/pages/document_7 +4 -0
- data/spec/data/test_build/doc/pages/document_7.yaml +5 -0
- data/spec/data/test_build/doc/pages/document_extended +1 -0
- data/spec/data/test_build/doc/pages/document_nested +6 -0
- data/spec/data/test_build/doc/pages/document_nested.yaml +5 -0
- data/spec/data/test_build/doc/pages/document_nolayout.ext +3 -0
- data/spec/data/test_build/doc/pages/document_nolayout.yaml +2 -0
- data/spec/data/test_build/doc/pages/document_with_partials +3 -0
- data/spec/data/test_build/doc/pages/document_with_partials.yaml +2 -0
- data/spec/data/test_build/doc/pages/partials/COMMON.yaml +5 -0
- data/spec/data/test_build/doc/pages/partials/circular_partial +2 -0
- data/spec/data/test_build/doc/pages/partials/circular_partial.yaml +3 -0
- data/spec/data/test_build/doc/pages/partials/partial +2 -0
- data/spec/data/test_build/doc/pages/subdir/COMMON.yaml +2 -0
- data/spec/data/test_build/doc/pages/subdir/document_4 +11 -0
- data/spec/data/test_build/doc/pages/subdir/subdir/COMMON.yaml +2 -0
- data/spec/data/test_build/doc/pages/subdir/subdir/document_6 +3 -0
- data/spec/data/test_build/tasks/all.rb +3 -0
- data/spec/data/test_build/tasks/clean.rake +3 -0
- data/spec/data/test_build/tasks/render.rake +8 -0
- data/spec/data/test_build/tasks/setup.rb +9 -0
- data/spec/data/test_build/tasks/template.rake +3 -0
- data/spec/data/test_build/templates/layouts/layout +0 -0
- data/spec/data/test_build/templates/pages/template +0 -0
- data/spec/document_spec.rb +321 -0
- data/spec/dokkitlib_spec.rb +63 -0
- data/spec/filehelper_spec.rb +34 -0
- data/spec/fileselection_spec.rb +101 -0
- data/spec/filter_base_spec.rb +29 -0
- data/spec/filter_deplate_spec.rb +48 -0
- data/spec/filter_maruku_spec.rb +29 -0
- data/spec/filter_nil_spec.rb +30 -0
- data/spec/filters_spec.rb +37 -0
- data/spec/logger_spec.rb +150 -0
- data/spec/model_spec.rb +45 -0
- data/spec/pathhelper_spec.rb +62 -0
- data/spec/recursivemerge_spec.rb +91 -0
- data/spec/rendertask_spec.rb +374 -0
- data/spec/spec_helper.rb +61 -0
- data/spec/taskconfig_spec.rb +45 -0
- data/spec/templatetask_spec.rb +72 -0
- data/tasks/annotations.rake +30 -0
- data/tasks/doc.rake +49 -0
- data/tasks/gem.rake +89 -0
- data/tasks/manifest.rake +41 -0
- data/tasks/rubyforge.rake +57 -0
- data/tasks/setup.rb +151 -0
- data/tasks/spec.rake +40 -0
- data/tasks/svn.rake +44 -0
- data/tasks/test.rake +40 -0
- metadata +188 -161
- data/CHANGES +0 -26
- data/LICENSE +0 -674
- data/README +0 -32
- data/lib/dokkit/#render_task_factory.rb# +0 -94
- data/lib/dokkit/dokkittasks.rb +0 -99
- data/lib/dokkit/hash.rb +0 -41
- data/lib/dokkit/models/share/builtin.rf +0 -28
- data/lib/dokkit/page.rb +0 -195
- data/lib/dokkit/render_task_factory.rb +0 -91
- data/tests/data/output/simple_document/README +0 -57
- data/tests/data/output/simple_document/Rakefile +0 -7
- data/tests/data/output/simple_document/doc/config/simple_document.yaml +0 -5
- data/tests/data/output/simple_document/doc/pages/simple_document.dpl +0 -12
- data/tests/data/output/website_project/README +0 -49
- data/tests/data/output/website_project/Rakefile +0 -82
- data/tests/data/output/website_project/doc/layouts/normal.thtml +0 -38
- data/tests/data/output/website_project/doc/pages/COMMON.rb +0 -9
- data/tests/data/output/website_project/doc/pages/deplate.dplhtml +0 -9
- data/tests/data/output/website_project/doc/pages/index.rb +0 -10
- data/tests/data/output/website_project/doc/pages/index.thtml +0 -12
- data/tests/data/output/website_project/doc/res/images/rote-tiny.png +0 -0
- data/tests/data/projects/simple-document/README +0 -57
- data/tests/data/projects/simple-document/doc/config/author.yaml +0 -4
- data/tests/data/projects/simple-document/doc/config/model.yaml +0 -18
- data/tests/data/projects/simple-document/doc/config/simple_document.yaml +0 -6
- data/tests/data/projects/simple-document/doc/layouts/another_simple_document.html +0 -8
- data/tests/data/projects/simple-document/doc/layouts/another_simple_document.tex +0 -10
- data/tests/data/projects/simple-document/doc/layouts/layout_with_custom_name.html +0 -8
- data/tests/data/projects/simple-document/doc/layouts/semantic.cache +0 -23
- data/tests/data/projects/simple-document/doc/pages/COMMON.yaml +0 -23
- data/tests/data/projects/simple-document/doc/pages/another_simple_document.dpl +0 -12
- data/tests/data/projects/simple-document/doc/pages/simple_document.dpl +0 -12
- data/tests/data/projects/simple-document/doc/pages/simple_document_without_layout.dpl +0 -12
- data/tests/data/projects/simple-document/doc/pages/subdir/COMMON.yaml +0 -4
- data/tests/data/projects/simple-document/doc/pages/subdir/simple_document_in_subdir.dpl +0 -12
- data/tests/data/projects/simple-document/doc/pages/subdir/simple_document_in_subdir.yaml +0 -3
- data/tests/data/projects/simple-document/doc/pages/subdir/subdir/COMMON.yaml +0 -2
- data/tests/data/projects/simple-document/doc/pages/subdir/subdir/another_simple_document_in_subdir.dpl +0 -12
- data/tests/data/projects/simple-document/doc/pages/yet_another_simple_document.dpl +0 -12
- data/tests/data/projects/simple-document/doc/pages/yet_another_simple_document.yaml +0 -8
- data/tests/gem_tests.rb +0 -4
- data/tests/spec_page.rb +0 -25
- data/tests/test.rb +0 -2
- data/tests/test_application.rb +0 -40
- data/tests/test_builtin_tasks.rb +0 -37
- data/tests/test_config.rb +0 -108
- data/tests/test_core.rb +0 -12
- data/tests/test_dokkit_commandline.rb +0 -18
- data/tests/test_exception.rb +0 -7
- data/tests/test_filters.rb +0 -46
- data/tests/test_layout.rb +0 -64
- data/tests/test_options.rb +0 -33
- data/tests/test_project_tasks.rb +0 -48
- data/tests/test_recursive_merge.rb +0 -42
- data/tests/test_task_factory.rb +0 -38
- /data/{CONTRIBUTORS → lib/dokkit/models/simpledocument/model/doc/data/css/style.css} +0 -0
- /data/{DONE → spec/data/test_build/doc/data/resource} +0 -0
- /data/{TODO → spec/data/test_build/doc/data/resource.exclude} +0 -0
- /data/{tests/pages/test.dpltex → spec/data/test_build/doc/data/subdir/resource.insubdir} +0 -0
data/README
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
= WHAT'S dokkit?
|
2
|
-
|
3
|
-
+dokkit+ is an open source documentation environment based on
|
4
|
-
ruby.
|
5
|
-
|
6
|
-
+dokkit+ puts together the flexibility of +rote+ and the great
|
7
|
-
variety of +deplate+'s output formats.
|
8
|
-
|
9
|
-
With +dokkit+ you can:
|
10
|
-
|
11
|
-
* generate many types of documentation in many formats (html, tex,
|
12
|
-
docbook, plain text, etc.)
|
13
|
-
* write your documents using a simple wiki syntax (emacs-wiki like)
|
14
|
-
* generate different output formats from the same source document
|
15
|
-
* use a big set of models to quickly generate the documents you want (technical report, invoice, howto,
|
16
|
-
guides, presentation, website, etc.)
|
17
|
-
* simply derive new document models from the existing ones
|
18
|
-
* simply modify existing models to fit your needs
|
19
|
-
|
20
|
-
+dokkit+'s success keys are:
|
21
|
-
|
22
|
-
* a smart task system based on +rake+ a consistent documentation
|
23
|
-
per-model framework organized in templates, layouts, ruby classes,
|
24
|
-
configuration files, resources based on +rote+
|
25
|
-
* a powerful templating system based on +erb+
|
26
|
-
* a simple and flexible configuration system based on +yaml+
|
27
|
-
|
28
|
-
+dokkit+ aims to be modular and extensible: you can easily add
|
29
|
-
new filters, formatters and document models.
|
30
|
-
|
31
|
-
See http://dokkit.rubyforge.org for further information.
|
32
|
-
|
@@ -1,94 +0,0 @@
|
|
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
|
-
def create_render_pdf
|
90
|
-
Rake::Task.new
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
data/lib/dokkit/dokkittasks.rb
DELETED
@@ -1,99 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# File 'dokkittasks.rb' created on 09 ott 2007 at 17:08:49.
|
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
|
-
# Rake tasklib for Dokkit.
|
9
|
-
|
10
|
-
require 'rote/rotetasks.rb'
|
11
|
-
require 'dokkit/page'
|
12
|
-
require 'dokkit/hash'
|
13
|
-
|
14
|
-
module Rote
|
15
|
-
|
16
|
-
class DocTask
|
17
|
-
|
18
|
-
# Base directories used by the task.
|
19
|
-
attr_accessor :config_dir
|
20
|
-
attr_accessor :config_page
|
21
|
-
attr_accessor :layout_defext
|
22
|
-
|
23
|
-
def initialize(name = :doc) # :yield: self if block_given?
|
24
|
-
@name = name
|
25
|
-
@config_page = { }
|
26
|
-
@output_dir = '.'
|
27
|
-
@pages = FilePatterns.new('.')
|
28
|
-
@res = FilePatterns.new('.')
|
29
|
-
@monitor_interval = 1
|
30
|
-
@ext_mappings = ExtHash.new
|
31
|
-
@show_page_tasks = false
|
32
|
-
|
33
|
-
DEFAULT_SRC_EXCLUDES.each { |excl| @pages.exclude(excl) }
|
34
|
-
|
35
|
-
yield self if block_given?
|
36
|
-
|
37
|
-
@config_page = {
|
38
|
-
:layout_dir => layout_dir,
|
39
|
-
:config_dir => config_dir,
|
40
|
-
:pages_dir => pages.dir,
|
41
|
-
:layout_defext => layout_defext
|
42
|
-
}
|
43
|
-
|
44
|
-
define
|
45
|
-
end
|
46
|
-
|
47
|
-
# define a task for each page, and 'all pages' task
|
48
|
-
def define_page_tasks
|
49
|
-
pages_fl = pages.to_filelist
|
50
|
-
|
51
|
-
gen_files = pages_fl.select { |fn| not File.directory?(fn) }.map do |fn|
|
52
|
-
tfn, blk = target_fn(/^#{pages.dir}/, fn)
|
53
|
-
|
54
|
-
desc "#{fn} => #{tfn}" #if show_file_tasks?
|
55
|
-
file tfn => [fn] do
|
56
|
-
dn = File.dirname(tfn)
|
57
|
-
mkdir_p dn unless File.exists?(dn)
|
58
|
-
puts "tr #{fn} => #{tfn}"
|
59
|
-
begin
|
60
|
-
File.open(tfn, 'w+') do |f|
|
61
|
-
# new page, run extension block, render out, throw away
|
62
|
-
f << Page.new( {:fn => fn}.merge(config_page), &blk).render
|
63
|
-
end
|
64
|
-
rescue => e
|
65
|
-
# Oops... Unlink file and dump backtrace
|
66
|
-
File.unlink(tfn)
|
67
|
-
bt = e.backtrace
|
68
|
-
end_idx = bt.each_with_index do |entry, idx|
|
69
|
-
break idx if entry =~ /^#{File.dirname(__FILE__)}/
|
70
|
-
end
|
71
|
-
puts bt[0...end_idx]
|
72
|
-
raise
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
# Each page depends properly on source and common - thx again
|
77
|
-
# Jonathan :)
|
78
|
-
src_rb = Page::page_ruby_filename(fn)
|
79
|
-
if File.exists?(src_rb)
|
80
|
-
file tfn => [src_rb]
|
81
|
-
end
|
82
|
-
|
83
|
-
common_rbs = Page::resolve_common_rubys(File.dirname(fn))
|
84
|
-
file tfn => common_rbs unless common_rbs.empty?
|
85
|
-
|
86
|
-
tfn
|
87
|
-
end
|
88
|
-
|
89
|
-
desc "Render new/changed documentation pages"
|
90
|
-
task "#{name}_pages" => gen_files
|
91
|
-
task "clobber_#{name}_pages" do
|
92
|
-
gen_files.each do |f|
|
93
|
-
rm_f f
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
end
|
99
|
-
end
|
data/lib/dokkit/hash.rb
DELETED
@@ -1,41 +0,0 @@
|
|
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
|
-
|
@@ -1,28 +0,0 @@
|
|
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
DELETED
@@ -1,195 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# File 'page.rb' created on 09 ott 2007 at 15:56:08.
|
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 '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
|
23
|
-
|
24
|
-
module DokkitPage
|
25
|
-
|
26
|
-
# The base path for config resolution
|
27
|
-
attr_reader :config_path
|
28
|
-
|
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')
|
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
|
42
|
-
|
43
|
-
def load_configs
|
44
|
-
@config_files.each { |fn| load_config(fn) }
|
45
|
-
@config
|
46
|
-
end
|
47
|
-
|
48
|
-
def load_config(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
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def config_fn(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
|
97
|
-
end
|
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
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
module Rote
|
108
|
-
|
109
|
-
class Page
|
110
|
-
|
111
|
-
include DokkitPage
|
112
|
-
|
113
|
-
track_methods
|
114
|
-
alias page_initialize initialize
|
115
|
-
|
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
|
178
|
-
end
|
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
|
195
|
-
end
|
@@ -1,91 +0,0 @@
|
|
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
|
-
|
@@ -1,57 +0,0 @@
|
|
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
|
-
|