dokkit 0.1.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.
- data/CONTRIBUTORS +0 -0
- data/DONE +0 -0
- data/LICENSE +20 -0
- data/README +0 -0
- data/Rakefile +62 -0
- data/TODO +0 -0
- data/bin/dokkit +53 -0
- data/lib/dokkit/app.rb +305 -0
- data/lib/dokkit/builtin.rake +55 -0
- data/lib/dokkit/deplate/fmt/html-notemplate.rb +21 -0
- data/lib/dokkit/deplate/fmt/latex-notemplate.rb +22 -0
- data/lib/dokkit/dokkittasks.rb +69 -0
- data/lib/dokkit/filters/deplate.rb +37 -0
- data/lib/dokkit/filters.rb +26 -0
- data/lib/dokkit/page.rb +54 -0
- data/lib/dokkit/projects/invoice/README +49 -0
- data/lib/dokkit/projects/invoice/Rakefile +100 -0
- data/lib/dokkit/projects/invoice/doc/config/company.yaml +12 -0
- data/lib/dokkit/projects/invoice/doc/config/customer.yaml +4 -0
- data/lib/dokkit/projects/invoice/doc/layouts/invoice.dpltex +90 -0
- data/lib/dokkit/projects/invoice/doc/pages/COMMON.rb +12 -0
- data/lib/dokkit/projects/invoice/doc/pages/invoice.rb +5 -0
- data/lib/dokkit/projects/invoice/doc/pages/invoice.yamltex +16 -0
- data/lib/dokkit/projects/invoice/doc/res/tex/deplate.sty +46 -0
- data/lib/dokkit/projects/invoice/doc/res/tex/images/logo.eps +209 -0
- data/lib/dokkit/projects/invoice/doc/res/tex/include/deplate.sty +46 -0
- data/lib/dokkit/projects/invoice/doc/res/tex/include/layout.inc +24 -0
- data/lib/dokkit/projects/invoice/doc/res/tex/include/macro.inc +67 -0
- data/lib/dokkit/projects/invoice/doc/res/tex/include/packages.inc +51 -0
- data/lib/dokkit/projects/invoice/lib/invoice.rb +104 -0
- data/lib/dokkit/projects/tech_report/README +49 -0
- data/lib/dokkit/projects/tech_report/Rakefile +102 -0
- data/lib/dokkit/projects/tech_report/doc/config/company.yaml +13 -0
- data/lib/dokkit/projects/tech_report/doc/config/tech_report.yaml +3 -0
- data/lib/dokkit/projects/tech_report/doc/layouts/report.dpltex +40 -0
- data/lib/dokkit/projects/tech_report/doc/pages/COMMON.rb +12 -0
- data/lib/dokkit/projects/tech_report/doc/pages/report.dpltex +37 -0
- data/lib/dokkit/projects/tech_report/doc/pages/report.inc +2 -0
- data/lib/dokkit/projects/tech_report/doc/pages/report.rb +3 -0
- data/lib/dokkit/projects/tech_report/doc/res/attachments/attachment_1 +0 -0
- data/lib/dokkit/projects/tech_report/doc/res/attachments/attachment_2 +0 -0
- data/lib/dokkit/projects/tech_report/doc/res/tex/images/logo.eps +311 -0
- data/lib/dokkit/projects/tech_report/doc/res/tex/include/deplate.sty +46 -0
- data/lib/dokkit/projects/tech_report/doc/res/tex/include/layout.inc +24 -0
- data/lib/dokkit/projects/tech_report/doc/res/tex/include/macro.inc +67 -0
- data/lib/dokkit/projects/tech_report/doc/res/tex/include/packages.inc +48 -0
- data/lib/dokkit/projects/tech_report/doc/res/tex/report.bib +4 -0
- data/lib/dokkit/projects/tech_report/lib/tech_report.rb +17 -0
- data/lib/dokkit/projects/website/README +49 -0
- data/lib/dokkit/projects/website/Rakefile +81 -0
- data/lib/dokkit/projects/website/doc/layouts/normal.thtml +38 -0
- data/lib/dokkit/projects/website/doc/pages/COMMON.rb +9 -0
- data/lib/dokkit/projects/website/doc/pages/deplate.dplhtml +9 -0
- data/lib/dokkit/projects/website/doc/pages/index.rb +10 -0
- data/lib/dokkit/projects/website/doc/pages/index.thtml +12 -0
- data/lib/dokkit/projects/website/doc/res/images/rote-tiny.png +0 -0
- data/lib/dokkit/projects/website/html/deplate.html +21 -0
- data/lib/dokkit/projects/website/html/images/rote-tiny.png +0 -0
- data/lib/dokkit/projects/website/html/index.html +37 -0
- data/lib/dokkit.rb +71 -0
- data/tests/gem_tests.rb +4 -0
- data/tests/test_filters.rb +46 -0
- metadata +177 -0
data/CONTRIBUTORS
ADDED
File without changes
|
data/DONE
ADDED
File without changes
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c)2006 Andrea Fazzi (and contributors). All rights reserved.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
4
|
+
this software and associated documentation files (the "Software"), to deal in
|
5
|
+
the Software without restriction, including without limitation the rights to
|
6
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
7
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
8
|
+
so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
11
|
+
copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
|
+
SOFTWARE.
|
20
|
+
|
data/README
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
# Standard Rakefile for custom Dokkit build
|
2
|
+
#
|
3
|
+
#
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'rubygems'
|
7
|
+
rescue LoadError
|
8
|
+
nil # optional
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'rake'
|
12
|
+
require 'rake/clean'
|
13
|
+
require 'rake/testtask'
|
14
|
+
require 'rake/rdoctask'
|
15
|
+
require 'rake/gempackagetask'
|
16
|
+
|
17
|
+
CLOBBER.include('html')
|
18
|
+
CLOBBER.include('tex')
|
19
|
+
|
20
|
+
Rake::RDocTask.new do |rd|
|
21
|
+
rd.main = "README"
|
22
|
+
rd.rdoc_files.include("README", "lib/**/*.rb", "tests/*.rb")
|
23
|
+
rd.rdoc_dir = "apidoc"
|
24
|
+
rd.options.push('-d').push('-F')
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "Run basic tests"
|
28
|
+
Rake::TestTask.new("test_units") { |t|
|
29
|
+
t.pattern = 'tests/ts_*.rb'
|
30
|
+
t.verbose = true
|
31
|
+
#t.warning = true
|
32
|
+
}
|
33
|
+
|
34
|
+
spec = Gem::Specification.new do |s|
|
35
|
+
s.platform = Gem::Platform::RUBY
|
36
|
+
s.summary = "Ruby Documentation ToolKit."
|
37
|
+
s.name = 'dokkit'
|
38
|
+
s.version = '0.1.0'
|
39
|
+
|
40
|
+
s.add_dependency('deplate', '>= 0.8')
|
41
|
+
s.add_dependency('rote', '>= 0.3.2.2')
|
42
|
+
s.add_dependency('rake')
|
43
|
+
s.add_dependency('syntax')
|
44
|
+
|
45
|
+
s.has_rdoc = true
|
46
|
+
s.test_file = 'tests/gem_tests.rb'
|
47
|
+
|
48
|
+
s.require_path = 'lib'
|
49
|
+
s.autorequire = 'dokkit'
|
50
|
+
s.bindir = 'bin'
|
51
|
+
s.executables << 'dokkit'
|
52
|
+
s.extra_rdoc_files << 'README'
|
53
|
+
s.files = FileList['lib/**/*', 'bin/*', '[A-Z]*', 'tests/*', 'tests/**/**'].exclude(/alca/).to_a
|
54
|
+
s.description = <<-EOF
|
55
|
+
Dokkit is a documentation toolkit based on Rote.
|
56
|
+
EOF
|
57
|
+
end
|
58
|
+
|
59
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
60
|
+
pkg.need_zip = true
|
61
|
+
pkg.need_tar = true
|
62
|
+
end
|
data/TODO
ADDED
File without changes
|
data/bin/dokkit
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
#
|
2
|
+
# Commandline launcher for Dokkit, (c)2006 Andrea Fazzi (and contributors)
|
3
|
+
#
|
4
|
+
# Get set up with library paths, however we're installed.
|
5
|
+
|
6
|
+
def croak
|
7
|
+
puts "Cannot locate Dokkit libraries - Do you need to set $DOKKIT_LIB ?"
|
8
|
+
exit(1)
|
9
|
+
end
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'rubygems'
|
13
|
+
rescue LoadError
|
14
|
+
# just ignore, don't use gems
|
15
|
+
end
|
16
|
+
|
17
|
+
fail = false
|
18
|
+
|
19
|
+
dokkit_lib = nil
|
20
|
+
|
21
|
+
begin
|
22
|
+
require 'dokkit'
|
23
|
+
require 'dokkit/app'
|
24
|
+
|
25
|
+
# find this later
|
26
|
+
dokkit_lib = nil
|
27
|
+
rescue LoadError
|
28
|
+
unless fail || !(dokkit_lib = ENV['DOKKIT_LIB'])
|
29
|
+
$: << dokkit_lib
|
30
|
+
# at least we can know this now...
|
31
|
+
builtin = File.join(dokkit_lib,'dokkit/builtin.rake')
|
32
|
+
fail = true # next time.
|
33
|
+
retry
|
34
|
+
else
|
35
|
+
croak
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# If we're loaded via RubyGems or some such we need to locate
|
40
|
+
# the builtin rakefile.
|
41
|
+
unless dokkit_lib
|
42
|
+
$:.each { |it|
|
43
|
+
if File.exists?(File.join(it,'dokkit/builtin.rake'))
|
44
|
+
dokkit_lib = it
|
45
|
+
break
|
46
|
+
end
|
47
|
+
}
|
48
|
+
end
|
49
|
+
|
50
|
+
croak unless dokkit_lib
|
51
|
+
|
52
|
+
Dokkit::Application.new(dokkit_lib).run
|
53
|
+
|
data/lib/dokkit/app.rb
ADDED
@@ -0,0 +1,305 @@
|
|
1
|
+
# Dokkit application class
|
2
|
+
# (c)2006 Andrea Fazzi (and contributors)
|
3
|
+
#
|
4
|
+
# See 'dokkit.rb' or LICENSE for licence information.
|
5
|
+
|
6
|
+
require 'optparse'
|
7
|
+
require 'rake'
|
8
|
+
|
9
|
+
DEFAULT_PROJECT_MODEL = "tech_report"
|
10
|
+
|
11
|
+
module Rake
|
12
|
+
|
13
|
+
class Application
|
14
|
+
|
15
|
+
def do_option(opt, value)
|
16
|
+
case opt
|
17
|
+
when '--directory'
|
18
|
+
Dir.chdir( File.expand_path(value) )
|
19
|
+
options.directory = true
|
20
|
+
when '--dry-run'
|
21
|
+
verbose(true)
|
22
|
+
nowrite(true)
|
23
|
+
options.dryrun = true
|
24
|
+
options.trace = true
|
25
|
+
when '--help'
|
26
|
+
help
|
27
|
+
exit
|
28
|
+
when '--libdir'
|
29
|
+
$:.push(value)
|
30
|
+
when '--nosearch'
|
31
|
+
options.nosearch = true
|
32
|
+
when '--prereqs'
|
33
|
+
options.show_prereqs = true
|
34
|
+
when '--quiet'
|
35
|
+
verbose(false)
|
36
|
+
when '--rakefile'
|
37
|
+
RAKEFILES.clear
|
38
|
+
RAKEFILES << value
|
39
|
+
when '--rakelibdir'
|
40
|
+
options.rakelib = value.split(':')
|
41
|
+
when '--require'
|
42
|
+
begin
|
43
|
+
require value
|
44
|
+
rescue LoadError => ex
|
45
|
+
begin
|
46
|
+
rake_require value
|
47
|
+
rescue LoadError => ex2
|
48
|
+
raise ex
|
49
|
+
end
|
50
|
+
end
|
51
|
+
when '--silent'
|
52
|
+
verbose(false)
|
53
|
+
options.silent = true
|
54
|
+
when '--tasks'
|
55
|
+
options.show_tasks = true
|
56
|
+
options.show_task_pattern = Regexp.new(value || '.')
|
57
|
+
when '--trace'
|
58
|
+
options.trace = true
|
59
|
+
verbose(true)
|
60
|
+
when '--usage'
|
61
|
+
usage
|
62
|
+
exit
|
63
|
+
when '--verbose'
|
64
|
+
verbose(true)
|
65
|
+
when '--version'
|
66
|
+
puts "rake, version #{RAKEVERSION}"
|
67
|
+
exit
|
68
|
+
when '--classic-namespace'
|
69
|
+
require 'rake/classic_namespace'
|
70
|
+
options.classic_namespace = true
|
71
|
+
else
|
72
|
+
fail "Unknown option: #{opt}"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def handle_options
|
77
|
+
options.rakelib ||= 'rakelib'
|
78
|
+
options.each { |opt, value| do_option(opt, value) }
|
79
|
+
end
|
80
|
+
|
81
|
+
def display_tasks_and_comments
|
82
|
+
displayable_tasks = Rake::Task.tasks.select { |t|
|
83
|
+
t.comment && t.name =~ options.show_task_pattern
|
84
|
+
}
|
85
|
+
width = displayable_tasks.collect { |t|
|
86
|
+
t.name.length
|
87
|
+
}.max
|
88
|
+
displayable_tasks.each do |t|
|
89
|
+
printf "dokkit %-#{width}s # %s\n", t.name, t.comment
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
# Search for a Rakefile
|
94
|
+
def search_for_rakefile
|
95
|
+
initial_dir = here = Dir.pwd
|
96
|
+
while ! have_rakefile
|
97
|
+
Dir.chdir("..")
|
98
|
+
if Dir.pwd == here
|
99
|
+
Dir.chdir(initial_dir)
|
100
|
+
return false
|
101
|
+
end
|
102
|
+
here = Dir.pwd
|
103
|
+
end
|
104
|
+
return true
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
module Dokkit
|
112
|
+
|
113
|
+
# Command-line launcher for Dokkit.
|
114
|
+
class Application
|
115
|
+
|
116
|
+
attr_accessor :dokkit_lib
|
117
|
+
attr_accessor :debug
|
118
|
+
attr_accessor :tasks
|
119
|
+
attr_accessor :trace
|
120
|
+
attr_accessor :usage
|
121
|
+
attr_accessor :version
|
122
|
+
attr_accessor :rake
|
123
|
+
attr_accessor :rakefile
|
124
|
+
attr_accessor :rakeopts
|
125
|
+
attr_accessor :rake_env
|
126
|
+
attr_accessor :list_projects
|
127
|
+
|
128
|
+
@@project_dirs = nil
|
129
|
+
|
130
|
+
# Create a new Application instance, processing command-line arguments,
|
131
|
+
# optionally passing +self+ to the supplied block for further
|
132
|
+
# configuration.
|
133
|
+
|
134
|
+
def initialize(dokkit_lib) # :yield: self if block_given?
|
135
|
+
# init vars
|
136
|
+
@@project_dirs = ($:.collect { |dir| File.join(dir,"dokkit/projects")}).concat(Array["~/.dokkit/projects"])
|
137
|
+
|
138
|
+
@dokkit_lib = dokkit_lib
|
139
|
+
@debug = false
|
140
|
+
@tasks = false
|
141
|
+
@trace = false
|
142
|
+
@usage = false
|
143
|
+
@version = false
|
144
|
+
@list_projects = false
|
145
|
+
@directory = false
|
146
|
+
@rf = false
|
147
|
+
@rakefile = "#{dokkit_lib}/dokkit/builtin.rake"
|
148
|
+
raise "Missing builtin.rake (expected at '#{@rakefile}')!" unless File.exists?(@rakefile)
|
149
|
+
|
150
|
+
@rakeopts = ENV['RAKE_OPTS'] || ''
|
151
|
+
@rake_env = "PROJECT=#{@project}"
|
152
|
+
|
153
|
+
ENV['PROJECT'] = @project = DEFAULT_PROJECT_MODEL
|
154
|
+
|
155
|
+
@rake = Rake::Application.new
|
156
|
+
|
157
|
+
process_args
|
158
|
+
|
159
|
+
yield self if block_given?
|
160
|
+
end
|
161
|
+
|
162
|
+
# Gets the list of the directory to search into for project models
|
163
|
+
def Application.get_project_dirs
|
164
|
+
@@project_dirs
|
165
|
+
end
|
166
|
+
|
167
|
+
# Run the application with the current options.
|
168
|
+
def run
|
169
|
+
|
170
|
+
@rake.do_option("--libdir",dokkit_lib)
|
171
|
+
|
172
|
+
if @version
|
173
|
+
print "dokkit, version #{DOKKITVERSION}\n"
|
174
|
+
|
175
|
+
elsif @tasks
|
176
|
+
if @rake.search_for_rakefile
|
177
|
+
@rake.do_option("--rakelibdir","#{dokkit_lib}/dokkit/")
|
178
|
+
@rake.do_option("--tasks",nil)
|
179
|
+
@rake.run
|
180
|
+
else
|
181
|
+
@rake.do_option("--tasks",nil)
|
182
|
+
@rake.do_option("--rakefile","#{rakefile}")
|
183
|
+
@rake.run
|
184
|
+
end
|
185
|
+
elsif @list_projects
|
186
|
+
show_all_projects
|
187
|
+
elsif @usage
|
188
|
+
show_usage()
|
189
|
+
else
|
190
|
+
if @trace
|
191
|
+
@rake.do_option("--trace",nil)
|
192
|
+
elsif @debug
|
193
|
+
@rake.do_option("--verbose",nil)
|
194
|
+
elsif @rf
|
195
|
+
@rake.do_option("--rakefile",@rf)
|
196
|
+
elsif @directory
|
197
|
+
@rake.do_option("--directory",@directory)
|
198
|
+
elsif @project
|
199
|
+
ENV['PROJECT'] = @project
|
200
|
+
end
|
201
|
+
|
202
|
+
if @rake.search_for_rakefile
|
203
|
+
@rake.do_option("--rakelibdir","#{dokkit_lib}/dokkit/")
|
204
|
+
else
|
205
|
+
@rake.do_option("--rakefile","#{rakefile}")
|
206
|
+
end
|
207
|
+
|
208
|
+
@rake.run
|
209
|
+
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
private
|
214
|
+
|
215
|
+
# Process commandline
|
216
|
+
def process_args
|
217
|
+
GetoptLong.new(
|
218
|
+
[ "--verbose", "-v", GetoptLong::NO_ARGUMENT ],
|
219
|
+
[ "--tasks", "-T", GetoptLong::NO_ARGUMENT ],
|
220
|
+
[ "--trace", "-t", GetoptLong::NO_ARGUMENT ],
|
221
|
+
[ "--usage", "-u", GetoptLong::NO_ARGUMENT ],
|
222
|
+
[ "--project", "-P", GetoptLong::REQUIRED_ARGUMENT],
|
223
|
+
[ "--rakefile","-f", GetoptLong::REQUIRED_ARGUMENT],
|
224
|
+
[ "--directory","-D", GetoptLong::REQUIRED_ARGUMENT],
|
225
|
+
[ "--list", "-l", GetoptLong::NO_ARGUMENT ],
|
226
|
+
[ "--help", "-h", GetoptLong::NO_ARGUMENT ],
|
227
|
+
[ "--version", "-V", GetoptLong::NO_ARGUMENT ]
|
228
|
+
).each { |opt,arg|
|
229
|
+
@debug = true if opt == '--verbose'
|
230
|
+
@trace = true if opt == '--trace'
|
231
|
+
@tasks = true if opt == '--tasks'
|
232
|
+
@project = arg if opt == '--project'
|
233
|
+
@rf = arg if opt == '--rakefile'
|
234
|
+
@directory = arg if opt == '--directory'
|
235
|
+
@list_projects = true if opt == '--list'
|
236
|
+
@usage = true if opt == '--usage' || opt == '--help'
|
237
|
+
@version = true if opt == '--version'
|
238
|
+
}
|
239
|
+
end
|
240
|
+
|
241
|
+
# Show all the projects present in the distro default dir $DOKKIT_LIB/dokkit/projects/
|
242
|
+
# and into the user dir $HOME/.dokkit/projects
|
243
|
+
def show_all_projects
|
244
|
+
puts "Searching in #{dokkit_lib}.."
|
245
|
+
puts "Available project models are:"
|
246
|
+
Dir["#{dokkit_lib}/dokkit/projects/**/Rakefile"].concat(Dir["#{File.expand_path("~/.dokkit/projects/**/Rakefile")}"]).each do |project|
|
247
|
+
puts File.dirname(project).scan(/projects\/\w+\/*\w+/).to_s.gsub!(/projects\//,"")
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
# Display help text
|
252
|
+
def show_usage
|
253
|
+
print <<-EOM
|
254
|
+
Usage: dokkit [options] [task1] .. [taskN]
|
255
|
+
|
256
|
+
Where [taskN] is a valid task or target name for the current project.
|
257
|
+
Dokkit generates targets for each page source, and also defines a number
|
258
|
+
of top-level tasks for various things. Use the '--tasks' option to get
|
259
|
+
a list of valid tasks.
|
260
|
+
|
261
|
+
Recognised options are:
|
262
|
+
|
263
|
+
--directory=DIR -D
|
264
|
+
Change to directory DIR before reading the rakefiles or doing anything else.
|
265
|
+
|
266
|
+
--rakefile=FILE -f
|
267
|
+
Use FILE as a Rakefile.
|
268
|
+
|
269
|
+
--list -l
|
270
|
+
Display the list of model projects available.
|
271
|
+
|
272
|
+
--help -h
|
273
|
+
Synonym for --usage
|
274
|
+
|
275
|
+
--project=PROJECT -P
|
276
|
+
Sets the model project to create. Use --list for the full list of available projects.
|
277
|
+
|
278
|
+
--tasks -T
|
279
|
+
Display a list of tasks in this project.
|
280
|
+
|
281
|
+
--trace -t
|
282
|
+
Enables trace-level output (debugging).
|
283
|
+
|
284
|
+
--usage -u
|
285
|
+
Display this help message and quit.
|
286
|
+
|
287
|
+
--verbose -v
|
288
|
+
Enable verbose output.
|
289
|
+
|
290
|
+
--version -V
|
291
|
+
Display Dokkit's version and quit
|
292
|
+
|
293
|
+
In addition to the standard doc_XXX tasks and those provided by any
|
294
|
+
local configuration, the following 'special' tasks are recognised:
|
295
|
+
|
296
|
+
create <project> Create a blank project from the built-in template using the #{DEFAULT_PROJECT_MODEL} project model.
|
297
|
+
|
298
|
+
In non-standard environments, it may be necessary to set the DOKKIT_LIB
|
299
|
+
variable to point to the location of Dokkit's libraries.
|
300
|
+
|
301
|
+
EOM
|
302
|
+
end
|
303
|
+
|
304
|
+
end # Application
|
305
|
+
end # Dokkit
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# Built-in Dokkit rakefile
|
2
|
+
#
|
3
|
+
# This is effectively a copy of the template rakefile,
|
4
|
+
# but with extra tasks for the command-line wrapper.
|
5
|
+
#
|
6
|
+
# (c)2006 Andrea Fazzi (and contributors)
|
7
|
+
#
|
8
|
+
begin
|
9
|
+
require 'rubygems'
|
10
|
+
rescue LoadError
|
11
|
+
nil # optional
|
12
|
+
end
|
13
|
+
require 'rake'
|
14
|
+
require 'rake/clean'
|
15
|
+
require 'dokkit'
|
16
|
+
|
17
|
+
# Import tasks for current project
|
18
|
+
|
19
|
+
#################### CREATE NEW PROJECT FROM TEMPLATE ###############
|
20
|
+
#
|
21
|
+
# This works in a slightly odd way. The 'create' task simply sets up
|
22
|
+
# a rule that catches anything. This rule will then be triggered by
|
23
|
+
# the task that follows on the command-line, and taken as the
|
24
|
+
# target directory name.
|
25
|
+
#
|
26
|
+
# So instead of 'dokkit create NAME=foo' we have 'dokkit create foo'
|
27
|
+
#
|
28
|
+
# Note that this does preclude having other tasks on the same
|
29
|
+
# invocation (after the create at least) but does also allow
|
30
|
+
# multiple projects to be created at once.
|
31
|
+
#
|
32
|
+
# Also need a way to display error message if the rule isn't
|
33
|
+
# invoked at least once...
|
34
|
+
# /(((\w*\/)*)(\w*))\/{2}(((\w*\/)*)(\w*))/.match(t.name)
|
35
|
+
|
36
|
+
desc "Bootstrap a new documentation project"
|
37
|
+
task :create do
|
38
|
+
rule '' do |t|
|
39
|
+
fail "#{t.name} already exists" if File.exists?(t.name)
|
40
|
+
|
41
|
+
src = ENV['PROJECT']
|
42
|
+
src_dir = Dokkit::Application.get_project_dirs.detect { |it| File.exists?(File.join(File.expand_path(it),src)) }
|
43
|
+
|
44
|
+
fail "Cannot locate project template #{src}!\n" unless src_dir
|
45
|
+
|
46
|
+
cp_r File.join(File.expand_path(src_dir), src), t.name
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
#src = ENV['PROJECT']
|
51
|
+
#src_dir = Dokkit::Application.get_project_dirs.detect { |it| File.exists?(File.join(File.expand_path(it),src)) }
|
52
|
+
|
53
|
+
#import "#{File.join(File.join(src_dir,src),'Rakefile')}" if File.exists?(File.join(File.join(src_dir,src),'Rakefile'))
|
54
|
+
#import File.join(File.dirname(__FILE__),('/projects/tech_report/Rakefile'))
|
55
|
+
|
@@ -0,0 +1,21 @@
|
|
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
|
@@ -0,0 +1,22 @@
|
|
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
|
+
|
16
|
+
def prepare
|
17
|
+
end
|
18
|
+
|
19
|
+
def add_package(pkg, *options)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#--
|
2
|
+
# Rake tasklib for Dokkit
|
3
|
+
# (c)2006 Andrea Fazzi (and contributors)
|
4
|
+
#
|
5
|
+
# See 'dokkit.rb' or LICENSE for licence information.
|
6
|
+
#++
|
7
|
+
|
8
|
+
require 'rote/rotetasks.rb'
|
9
|
+
|
10
|
+
module Rote
|
11
|
+
|
12
|
+
class DocTask
|
13
|
+
|
14
|
+
# Base directories used by the task.
|
15
|
+
attr_accessor :config_dir
|
16
|
+
|
17
|
+
# define a task for each page, and 'all pages' task
|
18
|
+
def define_page_tasks
|
19
|
+
pages_fl = pages.to_filelist
|
20
|
+
|
21
|
+
gen_files = pages_fl.select { |fn| not File.directory?(fn) }.map do |fn|
|
22
|
+
tfn, blk = target_fn(/^#{pages.dir}/, fn)
|
23
|
+
|
24
|
+
desc "#{fn} => #{tfn}" #if show_file_tasks?
|
25
|
+
file tfn => [fn] do
|
26
|
+
dn = File.dirname(tfn)
|
27
|
+
mkdir_p dn unless File.exists?(dn)
|
28
|
+
puts "tr #{fn} => #{tfn}"
|
29
|
+
begin
|
30
|
+
File.open(tfn, 'w+') do |f|
|
31
|
+
# new page, run extension block, render out, throw away
|
32
|
+
f << Page.new(fn,pages.dir,layout_dir,config_dir,&blk).render
|
33
|
+
end
|
34
|
+
rescue => e
|
35
|
+
# Oops... Unlink file and dump backtrace
|
36
|
+
File.unlink(tfn)
|
37
|
+
bt = e.backtrace
|
38
|
+
end_idx = bt.each_with_index do |entry, idx|
|
39
|
+
break idx if entry =~ /^#{File.dirname(__FILE__)}/
|
40
|
+
end
|
41
|
+
puts bt[0...end_idx]
|
42
|
+
raise
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Each page depends properly on source and common - thx again
|
47
|
+
# Jonathan :)
|
48
|
+
src_rb = Page::page_ruby_filename(fn)
|
49
|
+
if File.exists?(src_rb)
|
50
|
+
file tfn => [src_rb]
|
51
|
+
end
|
52
|
+
|
53
|
+
common_rbs = Page::resolve_common_rubys(File.dirname(fn))
|
54
|
+
file tfn => common_rbs unless common_rbs.empty?
|
55
|
+
|
56
|
+
tfn
|
57
|
+
end
|
58
|
+
|
59
|
+
desc "Render new/changed documentation pages"
|
60
|
+
task "#{name}_pages" => gen_files
|
61
|
+
task "clobber_#{name}_pages" do
|
62
|
+
gen_files.each do |f|
|
63
|
+
rm_f f
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#--
|
2
|
+
# Dokkit filter for Deplate
|
3
|
+
# (c)2006 Andrea Fazzi (and contributors)
|
4
|
+
#
|
5
|
+
# See 'dokkit.rb' or LICENSE for licence information.
|
6
|
+
|
7
|
+
require 'deplate/converter'
|
8
|
+
require 'deplate/core'
|
9
|
+
require 'rote/filters/base'
|
10
|
+
require 'dokkit/deplate/fmt/latex-notemplate'
|
11
|
+
require 'dokkit/deplate/fmt/html-notemplate'
|
12
|
+
|
13
|
+
module Dokkit
|
14
|
+
module Filters
|
15
|
+
#####
|
16
|
+
## Page filter that converts emacs-wiki formatting to tex using
|
17
|
+
## deplate.
|
18
|
+
##
|
19
|
+
class Deplate < Rote::Filters::TextFilter
|
20
|
+
|
21
|
+
# Create a new filter instance. If a block is defined returns a Deplate::Converter instance.
|
22
|
+
# You can supply options directly to the instance. See deplate docs for a full list
|
23
|
+
# of options.
|
24
|
+
def initialize(formatter)
|
25
|
+
super()
|
26
|
+
::Deplate::Core.declare_formatter(::Deplate::Formatter::LatexNoTemplate,'latex-notemplate')
|
27
|
+
::Deplate::Core.declare_formatter(::Deplate::Formatter::HTMLNoTemplate,'html-notemplate')
|
28
|
+
@deplate = ::Deplate::Converter.new(formatter) { |instance| yield(instance) if block_given? }
|
29
|
+
end
|
30
|
+
|
31
|
+
def handler(text,page)
|
32
|
+
@deplate.convert_string(text)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#--
|
2
|
+
# Require all filters
|
3
|
+
# (c)2005, 2006 Ross Bamford (and contributors)
|
4
|
+
#
|
5
|
+
# See 'rote.rb' or LICENSE for licence information.
|
6
|
+
# $Id: filters.rb 156 2006-01-05 01:13:43 +0000 (Thu, 05 Jan 2006) roscopeco $
|
7
|
+
#++
|
8
|
+
|
9
|
+
# Everyone requires this, we need to get it loaded first.
|
10
|
+
require 'rote/filters/base'
|
11
|
+
|
12
|
+
# This now requires conservatively, ignoring any filters that
|
13
|
+
# throw a LoadError. This allows a simple 'require rote/filters' to
|
14
|
+
# be used to load all filters _for which dependencies are
|
15
|
+
# available_.
|
16
|
+
Dir[File.join(File.dirname(__FILE__), 'filters/*.rb')].each do |fn|
|
17
|
+
begin
|
18
|
+
require fn unless fn =~ /[\\\/]base.rb$/
|
19
|
+
rescue LoadError
|
20
|
+
|
21
|
+
# ignore, different filters require different library
|
22
|
+
# support.
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|