zuk-picnic 0.8.0.20090318 → 0.8.0.20090427
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/Manifest.txt +26 -27
- data/lib/picnic/cli.rb +2 -0
- data/lib/picnic/conf.rb +21 -5
- data/lib/picnic.rb +1 -1
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/CHANGELOG +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/COPYING +0 -0
- data/vendor/camping-2.0.20090421/README +82 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/Rakefile +9 -3
- data/vendor/camping-2.0.20090421/bin/camping +97 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/doc/camping.1.gz +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/examples/README +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/examples/blog.rb +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/examples/campsh.rb +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/examples/tepee.rb +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/extras/Camping.gif +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/extras/permalink.gif +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/lib/camping/ar/session.rb +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/lib/camping/ar.rb +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/lib/camping/mab.rb +0 -0
- data/vendor/camping-2.0.20090421/lib/camping/reloader.rb +184 -0
- data/vendor/camping-2.0.20090421/lib/camping/server.rb +159 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/lib/camping/session.rb +1 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/lib/camping-unabridged.rb +53 -61
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/lib/camping.rb +23 -25
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/setup.rb +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/test/apps/env_debug.rb +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/test/apps/forms.rb +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/test/apps/misc.rb +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/test/apps/sessions.rb +0 -0
- data/vendor/{camping-2.0.20090212 → camping-2.0.20090421}/test/test_camping.rb +0 -0
- metadata +28 -29
- data/vendor/camping-2.0.20090212/README +0 -119
- data/vendor/camping-2.0.20090212/bin/camping +0 -99
- data/vendor/camping-2.0.20090212/extras/flipbook_rdoc.rb +0 -491
- data/vendor/camping-2.0.20090212/lib/camping/reloader.rb +0 -163
- data/vendor/camping-2.0.20090212/lib/camping/server.rb +0 -158
@@ -1,119 +0,0 @@
|
|
1
|
-
== Camping, a Microframework
|
2
|
-
|
3
|
-
Camping is a web framework which consistently stays at less than 4kb of code.
|
4
|
-
You can probably view the complete source code on a single page. But, you know,
|
5
|
-
it's so small that, if you think about it, what can it really do?
|
6
|
-
|
7
|
-
The idea here is to store a complete fledgling web application in a single file
|
8
|
-
like many small CGIs. But to organize it as a Model-View-Controller application
|
9
|
-
like Rails does. You can then easily move it to Rails once you've got it going.
|
10
|
-
|
11
|
-
== A Camping Skeleton
|
12
|
-
|
13
|
-
A skeletal Camping blog could look like this:
|
14
|
-
|
15
|
-
require 'camping'
|
16
|
-
|
17
|
-
Camping.goes :Blog
|
18
|
-
|
19
|
-
module Blog::Models
|
20
|
-
class Post < Base; belongs_to :user; end
|
21
|
-
class Comment < Base; belongs_to :user; end
|
22
|
-
class User < Base; end
|
23
|
-
end
|
24
|
-
|
25
|
-
module Blog::Controllers
|
26
|
-
class Index < R '/'
|
27
|
-
def get
|
28
|
-
@posts = Post.find :all
|
29
|
-
render :index
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
module Blog::Views
|
35
|
-
def layout
|
36
|
-
html do
|
37
|
-
body do
|
38
|
-
self << yield
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def index
|
44
|
-
for post in @posts
|
45
|
-
h1 post.title
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
Some things you might have noticed:
|
51
|
-
|
52
|
-
* Camping::Models uses ActiveRecord to do its work. We love ActiveRecord!
|
53
|
-
* Camping::Controllers can be assigned URLs in the class definition. Neat?
|
54
|
-
* Camping::Views describes HTML using pure Ruby. Markup as Ruby, which we
|
55
|
-
call Markaby.
|
56
|
-
* You use Camping::goes to make a copy of the Camping framework under your
|
57
|
-
own module name (in this case: <tt>Blog</tt>.)
|
58
|
-
|
59
|
-
<b>NOTE:</b> Camping auto-prefixes table names. If your class is named
|
60
|
-
<tt>Blog::Models::Post</tt>, your table will be called <b>blog_posts</b>.
|
61
|
-
Since many Camping apps can be attached to a database at once, this helps
|
62
|
-
prevent name clash.
|
63
|
-
|
64
|
-
(If you want to see the full blog example, check out <tt>examples/blog/blog.rb</tt>
|
65
|
-
for the complete code.)
|
66
|
-
|
67
|
-
If you want to write larger applications with Camping, you are encouraged to
|
68
|
-
split the application into distinct parts which can be mounted at URLs on your
|
69
|
-
web server. You might have a blog at /blog and a wiki at /wiki. Each
|
70
|
-
self-contained. But you can certainly share layouts and models by storing them
|
71
|
-
in plain Ruby scripts.
|
72
|
-
|
73
|
-
Interested yet? Okay, okay, one step at a time.
|
74
|
-
|
75
|
-
== Installation
|
76
|
-
|
77
|
-
* <tt>gem install camping</tt>
|
78
|
-
|
79
|
-
Or for the bleeding edge:
|
80
|
-
|
81
|
-
* <tt>gem install camping --source http://code.whytheluckystiff.net</tt>
|
82
|
-
|
83
|
-
You are encourage to install Camping and SQLite3, since it is a small database
|
84
|
-
which fits perfectly with our compact bylaws, works well with the examples.
|
85
|
-
|
86
|
-
* See http://code.whytheluckystiff.net/camping/wiki/BeAlertWhenOnSqlite3 for instructions.
|
87
|
-
|
88
|
-
== Running Camping Apps
|
89
|
-
|
90
|
-
The blog example above and most Camping applications look a lot like CGI scripts.
|
91
|
-
If you run them from the commandline, you'll probably just see a pile of HTML.
|
92
|
-
|
93
|
-
Camping comes with an tool for launching apps from the commandline:
|
94
|
-
|
95
|
-
* Run: <tt>camping blog.rb</tt>
|
96
|
-
* Visit http://localhost:3301/ to use the app.
|
97
|
-
|
98
|
-
== How the Camping Tool Works
|
99
|
-
|
100
|
-
If your application isn't working with the <tt>camping</tt> tool, keep in mind
|
101
|
-
that the tool expects the following conventions to be used:
|
102
|
-
|
103
|
-
1. You must have SQLite3 and SQLite3-ruby installed. (Once again, please see
|
104
|
-
http://code.whytheluckystiff.net/camping/wiki/BeAlertWhenOnSqlite3 for instructions.)
|
105
|
-
2. If your script is called <tt>test.rb</tt>, Camping expects your application to
|
106
|
-
be stored in a module called <tt>Test</tt>. Case is not imporant, though. The
|
107
|
-
module can be called <tt>TeSt</tt> or any other permutation.
|
108
|
-
3. Your script's postamble (anything enclosed in <tt>if __FILE__ == $0</tt>) will be
|
109
|
-
ignored by the tool, since the tool will create an SQLite3 database at
|
110
|
-
<tt>~/.camping.db</tt>. Or, on Windows, <tt>$USER/Application Data/Camping.db</tt>.
|
111
|
-
4. If your application's module has a <tt>create</tt> method, it will be executed before
|
112
|
-
the web server starts up.
|
113
|
-
|
114
|
-
== The Rules of Thumb
|
115
|
-
|
116
|
-
Once you've started writing your own Camping app, I'd highly recommend that you become familiar
|
117
|
-
with the Camping Rules of Thumb which are listed on the wiki:
|
118
|
-
http://code.whytheluckystiff.net/camping/wiki/CampingRulesOfThumb
|
119
|
-
|
@@ -1,99 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
trap("INT") { exit }
|
4
|
-
require 'optparse'
|
5
|
-
require 'ostruct'
|
6
|
-
require 'stringio'
|
7
|
-
require 'yaml'
|
8
|
-
|
9
|
-
$:.unshift File.dirname(__FILE__) + "/../lib"
|
10
|
-
require 'camping'
|
11
|
-
require 'camping/server'
|
12
|
-
|
13
|
-
conf = OpenStruct.new(:host => '0.0.0.0', :port => 3301)
|
14
|
-
|
15
|
-
# Setup paths
|
16
|
-
if home = ENV['HOME'] # POSIX
|
17
|
-
db_path = File.join(home, '.camping.db')
|
18
|
-
rc_path = File.join(home, '.campingrc')
|
19
|
-
elsif home = ENV['APPDATA'] # MSWIN
|
20
|
-
db_path = File.join(home, 'Camping.db')
|
21
|
-
rc_path = File.join(home, 'Campingrc')
|
22
|
-
end
|
23
|
-
|
24
|
-
# Parse options
|
25
|
-
opts = OptionParser.new do |opts|
|
26
|
-
opts.banner = "Usage: camping app1.rb, app2.rb..."
|
27
|
-
opts.define_head "#{File.basename($0)}, the microframework ON-button for ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
28
|
-
opts.separator ""
|
29
|
-
opts.separator "Specific options:"
|
30
|
-
|
31
|
-
opts.on("-h", "--host HOSTNAME", "Host for web server to bind to (default is all IPs)") { |conf.host| }
|
32
|
-
opts.on("-p", "--port NUM", "Port for web server (defaults to #{conf.port})") { |conf.port| }
|
33
|
-
opts.on("-d", "--database FILE", "SQLite3 database path (defaults to #{db_path ? db_path : '<none>'})") { |db_path| conf.database = {:adapter => 'sqlite3', :database => db_path} }
|
34
|
-
opts.on("-l", "--log FILE", "Start a database log ('-' for STDOUT)") { |conf.log| }
|
35
|
-
opts.on("-C", "--console", "Run in console mode with IRB") { conf.server = "console" }
|
36
|
-
server_list = ["mongrel", "webrick", "console"]
|
37
|
-
opts.on("-s", "--server NAME", server_list, "Server to force (#{server_list.join(', ')})") { |conf.server| }
|
38
|
-
|
39
|
-
opts.separator ""
|
40
|
-
opts.separator "Common options:"
|
41
|
-
|
42
|
-
# No argument, shows at tail. This will print an options summary.
|
43
|
-
# Try it and see!
|
44
|
-
opts.on_tail("-?", "--help", "Show this message") do
|
45
|
-
puts opts
|
46
|
-
exit
|
47
|
-
end
|
48
|
-
|
49
|
-
# Another typical switch to print the version.
|
50
|
-
opts.on_tail("-v", "--version", "Show version") do
|
51
|
-
class << Gem; attr_accessor :loaded_specs; end
|
52
|
-
puts Gem.loaded_specs['camping'].version
|
53
|
-
exit
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
begin
|
58
|
-
opts.parse! ARGV
|
59
|
-
rescue OptionParser::ParseError => ex
|
60
|
-
STDERR.puts "!! #{ex.message}"
|
61
|
-
puts "** use `#{File.basename($0)} --help` for more details..."
|
62
|
-
exit 1
|
63
|
-
end
|
64
|
-
|
65
|
-
if ARGV.length < 1
|
66
|
-
puts opts
|
67
|
-
exit 1
|
68
|
-
end
|
69
|
-
|
70
|
-
# Load configuration if any
|
71
|
-
if rc_path and File.exists?( rc_path )
|
72
|
-
YAML.load_file(rc_path).each do |k,v|
|
73
|
-
conf.send("#{k}=", v) unless conf.send(k)
|
74
|
-
end
|
75
|
-
puts "** conf file #{rc_path} loaded"
|
76
|
-
end
|
77
|
-
|
78
|
-
# Default db
|
79
|
-
if conf.database.nil? and db_path
|
80
|
-
conf.database = {:adapter => 'sqlite3', :database => db_path} if db_path
|
81
|
-
end
|
82
|
-
|
83
|
-
|
84
|
-
# get a copy of the paths to pass to the server
|
85
|
-
paths = ARGV.dup
|
86
|
-
|
87
|
-
# Check that mongrel exists
|
88
|
-
if conf.server.nil? || conf.server == "mongrel"
|
89
|
-
begin
|
90
|
-
require 'mongrel'
|
91
|
-
conf.server = "mongrel"
|
92
|
-
rescue LoadError
|
93
|
-
puts "!! could not load mongrel. Falling back to webrick."
|
94
|
-
conf.server = "webrick"
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
server = Camping::Server::Base.new(conf, paths)
|
99
|
-
server.start
|
@@ -1,491 +0,0 @@
|
|
1
|
-
CAMPING_EXTRAS_DIR = File.expand_path(File.dirname(__FILE__))
|
2
|
-
|
3
|
-
module Generators
|
4
|
-
class HTMLGenerator
|
5
|
-
def generate_html
|
6
|
-
@files_and_classes = {
|
7
|
-
'allfiles' => gen_into_index(@files),
|
8
|
-
'allclasses' => gen_into_index(@classes),
|
9
|
-
"initial_page" => main_url,
|
10
|
-
'realtitle' => CGI.escapeHTML(@options.title),
|
11
|
-
'charset' => @options.charset
|
12
|
-
}
|
13
|
-
|
14
|
-
# the individual descriptions for files and classes
|
15
|
-
gen_into(@files)
|
16
|
-
gen_into(@classes)
|
17
|
-
gen_main_index
|
18
|
-
|
19
|
-
# this method is defined in the template file
|
20
|
-
write_extra_pages if defined? write_extra_pages
|
21
|
-
end
|
22
|
-
|
23
|
-
def gen_into(list)
|
24
|
-
hsh = @files_and_classes.dup
|
25
|
-
list.each do |item|
|
26
|
-
if item.document_self
|
27
|
-
op_file = item.path
|
28
|
-
hsh['root'] = item.path.split("/").map { ".." }[1..-1].join("/")
|
29
|
-
item.instance_variable_set("@values", hsh)
|
30
|
-
File.makedirs(File.dirname(op_file))
|
31
|
-
File.open(op_file, "w") { |file| item.write_on(file) }
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def gen_into_index(list)
|
37
|
-
res = []
|
38
|
-
list.each do |item|
|
39
|
-
hsh = item.value_hash
|
40
|
-
hsh['href'] = item.path
|
41
|
-
hsh['name'] = item.index_name
|
42
|
-
res << hsh
|
43
|
-
end
|
44
|
-
res
|
45
|
-
end
|
46
|
-
|
47
|
-
def gen_main_index
|
48
|
-
template = TemplatePage.new(RDoc::Page::INDEX)
|
49
|
-
File.open("index.html", "w") do |f|
|
50
|
-
values = @files_and_classes.dup
|
51
|
-
if @options.inline_source
|
52
|
-
values['inline_source'] = true
|
53
|
-
end
|
54
|
-
template.write_html_on(f, values)
|
55
|
-
end
|
56
|
-
['Camping.gif', 'permalink.gif'].each do |img|
|
57
|
-
ipath = File.join(CAMPING_EXTRAS_DIR, img)
|
58
|
-
File.copy(ipath, img)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
module RDoc
|
66
|
-
module Page
|
67
|
-
######################################################################
|
68
|
-
#
|
69
|
-
# The following is used for the -1 option
|
70
|
-
#
|
71
|
-
|
72
|
-
FONTS = "verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif"
|
73
|
-
|
74
|
-
STYLE = %{
|
75
|
-
body, th, td {
|
76
|
-
font: normal 14px verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif;
|
77
|
-
line-height: 160%;
|
78
|
-
padding: 0; margin: 0;
|
79
|
-
margin-bottom: 30px;
|
80
|
-
/* background-color: #402; */
|
81
|
-
background-color: #694;
|
82
|
-
}
|
83
|
-
h1, h2, h3, h4 {
|
84
|
-
font-family: Utopia, Georgia, serif;
|
85
|
-
font-weight: bold;
|
86
|
-
letter-spacing: -0.018em;
|
87
|
-
}
|
88
|
-
h1 { font-size: 24px; margin: .15em 1em 0 0 }
|
89
|
-
h2 { font-size: 24px }
|
90
|
-
h3 { font-size: 19px }
|
91
|
-
h4 { font-size: 17px; font-weight: normal; }
|
92
|
-
h4.ruled { border-bottom: solid 1px #CC9; }
|
93
|
-
h2.ruled { padding-top: 35px; border-top: solid 1px #AA5; }
|
94
|
-
|
95
|
-
/* Link styles */
|
96
|
-
:link, :visited {
|
97
|
-
color: #00b;
|
98
|
-
}
|
99
|
-
:link:hover, :visited:hover {
|
100
|
-
background-color: #eee;
|
101
|
-
color: #B22;
|
102
|
-
}
|
103
|
-
#fullpage {
|
104
|
-
width: 720px;
|
105
|
-
margin: 0 auto;
|
106
|
-
}
|
107
|
-
.page_shade, .page {
|
108
|
-
padding: 0px 5px 5px 0px;
|
109
|
-
background-color: #fcfcf9;
|
110
|
-
border: solid 1px #983;
|
111
|
-
}
|
112
|
-
.page {
|
113
|
-
margin-left: -5px;
|
114
|
-
margin-top: -5px;
|
115
|
-
padding: 20px 35px;
|
116
|
-
}
|
117
|
-
.page .header {
|
118
|
-
float: right;
|
119
|
-
color: #777;
|
120
|
-
font-size: 10px;
|
121
|
-
}
|
122
|
-
.page h1, .page h2, .page h3 {
|
123
|
-
clear: both;
|
124
|
-
text-align: center;
|
125
|
-
}
|
126
|
-
#pager {
|
127
|
-
padding: 10px 4px;
|
128
|
-
color: white;
|
129
|
-
font-size: 11px;
|
130
|
-
}
|
131
|
-
#pager :link, #pager :visited {
|
132
|
-
color: #bfb;
|
133
|
-
padding: 0px 5px;
|
134
|
-
}
|
135
|
-
#pager :link:hover, #pager :visited:hover {
|
136
|
-
background-color: #262;
|
137
|
-
color: white;
|
138
|
-
}
|
139
|
-
#logo { float: left; }
|
140
|
-
#menu { background-color: #dfa; padding: 4px 12px; margin: 0; }
|
141
|
-
#menu h3 { padding: 0; margin: 0; }
|
142
|
-
#menu #links { float: right; }
|
143
|
-
pre { font-weight: bold; color: #730; }
|
144
|
-
tt { color: #703; font-size: 12pt; }
|
145
|
-
.dyn-source { background-color: #775915; padding: 4px 8px; margin: 0; display: none; }
|
146
|
-
.dyn-source pre { color: #DDDDDD; font-size: 8pt; }
|
147
|
-
.source-link { text-align: right; font-size: 8pt; }
|
148
|
-
.ruby-comment { color: green; font-style: italic }
|
149
|
-
.ruby-constant { color: #CCDDFF; font-weight: bold; }
|
150
|
-
.ruby-identifier { color: #CCCCCC; }
|
151
|
-
.ruby-ivar { color: #BBCCFF; }
|
152
|
-
.ruby-keyword { color: #EEEEFF; font-weight: bold }
|
153
|
-
.ruby-node { color: #FFFFFF; }
|
154
|
-
.ruby-operator { color: #CCCCCC; }
|
155
|
-
.ruby-regexp { color: #DDFFDD; }
|
156
|
-
.ruby-value { color: #FFAAAA; font-style: italic }
|
157
|
-
.kw { color: #DDDDFF; font-weight: bold }
|
158
|
-
.cmt { color: #CCFFCC; font-style: italic }
|
159
|
-
.str { color: #EECCCC; font-style: italic }
|
160
|
-
.re { color: #EECCCC; }
|
161
|
-
}
|
162
|
-
|
163
|
-
CONTENTS_XML = %{
|
164
|
-
IF:description
|
165
|
-
%description%
|
166
|
-
ENDIF:description
|
167
|
-
|
168
|
-
IF:requires
|
169
|
-
<h4>Requires:</h4>
|
170
|
-
<ul>
|
171
|
-
START:requires
|
172
|
-
IF:aref
|
173
|
-
<li><a href="%aref%">%name%</a></li>
|
174
|
-
ENDIF:aref
|
175
|
-
IFNOT:aref
|
176
|
-
<li>%name%</li>
|
177
|
-
ENDIF:aref
|
178
|
-
END:requires
|
179
|
-
</ul>
|
180
|
-
ENDIF:requires
|
181
|
-
|
182
|
-
IF:attributes
|
183
|
-
<h4>Attributes</h4>
|
184
|
-
<table>
|
185
|
-
START:attributes
|
186
|
-
<tr><td>%name%</td><td>%rw%</td><td>%a_desc%</td></tr>
|
187
|
-
END:attributes
|
188
|
-
</table>
|
189
|
-
ENDIF:attributes
|
190
|
-
|
191
|
-
IF:includes
|
192
|
-
<h4>Includes</h4>
|
193
|
-
<ul>
|
194
|
-
START:includes
|
195
|
-
IF:aref
|
196
|
-
<li><a href="%aref%">%name%</a></li>
|
197
|
-
ENDIF:aref
|
198
|
-
IFNOT:aref
|
199
|
-
<li>%name%</li>
|
200
|
-
ENDIF:aref
|
201
|
-
END:includes
|
202
|
-
</ul>
|
203
|
-
ENDIF:includes
|
204
|
-
|
205
|
-
START:sections
|
206
|
-
IF:method_list
|
207
|
-
<h2 class="ruled">Methods</h2>
|
208
|
-
START:method_list
|
209
|
-
IF:methods
|
210
|
-
START:methods
|
211
|
-
<h4 class="ruled">%type% %category% method:
|
212
|
-
IF:callseq
|
213
|
-
<strong><a name="%aref%">%callseq%</a></strong> <a href="#%aref%"><img src="%root%/permalink.gif" border="0" title="Permalink to %callseq%" /></a>
|
214
|
-
ENDIF:callseq
|
215
|
-
IFNOT:callseq
|
216
|
-
<strong><a name="%aref%">%name%%params%</a></strong> <a href="#%aref%"><img src="%root%/permalink.gif" border="0" title="Permalink to %type% %category% method: %name%" /></a></h4>
|
217
|
-
ENDIF:callseq
|
218
|
-
|
219
|
-
IF:m_desc
|
220
|
-
%m_desc%
|
221
|
-
ENDIF:m_desc
|
222
|
-
|
223
|
-
IF:sourcecode
|
224
|
-
<div class="sourcecode">
|
225
|
-
<p class="source-link">[ <a href="javascript:toggleSource('%aref%_source')" id="l_%aref%_source">show source</a> ]</p>
|
226
|
-
<div id="%aref%_source" class="dyn-source">
|
227
|
-
<pre>
|
228
|
-
%sourcecode%
|
229
|
-
</pre>
|
230
|
-
</div>
|
231
|
-
</div>
|
232
|
-
ENDIF:sourcecode
|
233
|
-
END:methods
|
234
|
-
ENDIF:methods
|
235
|
-
END:method_list
|
236
|
-
ENDIF:method_list
|
237
|
-
END:sections
|
238
|
-
}
|
239
|
-
|
240
|
-
############################################################################
|
241
|
-
|
242
|
-
|
243
|
-
BODY = %{
|
244
|
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
245
|
-
<html>
|
246
|
-
<head>
|
247
|
-
<title>
|
248
|
-
IF:title
|
249
|
-
%realtitle% » %title%
|
250
|
-
ENDIF:title
|
251
|
-
IFNOT:title
|
252
|
-
%realtitle%
|
253
|
-
ENDIF:title
|
254
|
-
</title>
|
255
|
-
<meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
|
256
|
-
<link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
|
257
|
-
<script language="JavaScript" type="text/javascript">
|
258
|
-
// <![CDATA[
|
259
|
-
|
260
|
-
function toggleSource( id )
|
261
|
-
{
|
262
|
-
var elem
|
263
|
-
var link
|
264
|
-
|
265
|
-
if( document.getElementById )
|
266
|
-
{
|
267
|
-
elem = document.getElementById( id )
|
268
|
-
link = document.getElementById( "l_" + id )
|
269
|
-
}
|
270
|
-
else if ( document.all )
|
271
|
-
{
|
272
|
-
elem = eval( "document.all." + id )
|
273
|
-
link = eval( "document.all.l_" + id )
|
274
|
-
}
|
275
|
-
else
|
276
|
-
return false;
|
277
|
-
|
278
|
-
if( elem.style.display == "block" )
|
279
|
-
{
|
280
|
-
elem.style.display = "none"
|
281
|
-
link.innerHTML = "show source"
|
282
|
-
}
|
283
|
-
else
|
284
|
-
{
|
285
|
-
elem.style.display = "block"
|
286
|
-
link.innerHTML = "hide source"
|
287
|
-
}
|
288
|
-
}
|
289
|
-
|
290
|
-
function openCode( url )
|
291
|
-
{
|
292
|
-
window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
|
293
|
-
}
|
294
|
-
// ]]>
|
295
|
-
</script>
|
296
|
-
</head>
|
297
|
-
<body>
|
298
|
-
<div id="menu">
|
299
|
-
<div id="links">
|
300
|
-
<a href="http://redhanded.hobix.com/bits/campingAMicroframework.html">backstory</a> |
|
301
|
-
<a href="http://code.whytheluckystiff.net/camping/">wiki</a> |
|
302
|
-
<a href="http://code.whytheluckystiff.net/camping/newticket">bugs</a> |
|
303
|
-
<a href="http://code.whytheluckystiff.net/svn/camping/">svn</a>
|
304
|
-
</div>
|
305
|
-
<h3 class="title">%title%</h3>
|
306
|
-
</div>
|
307
|
-
<div id="fullpage">
|
308
|
-
<div id="logo"><img src="%root%/Camping.gif" /></div>
|
309
|
-
<div id="pager">
|
310
|
-
<strong>Files:</strong>
|
311
|
-
START:allfiles
|
312
|
-
<a href="%root%/%href%" value="%title%">%name%</a>
|
313
|
-
END:allfiles
|
314
|
-
IF:allclasses
|
315
|
-
|
|
316
|
-
<strong>classes:</strong>
|
317
|
-
START:allclasses
|
318
|
-
<a href="%root%/%href%" title="%title%">%name%</a>
|
319
|
-
END:allclasses
|
320
|
-
ENDIF:allclasses
|
321
|
-
</ul>
|
322
|
-
</div>
|
323
|
-
|
324
|
-
!INCLUDE!
|
325
|
-
|
326
|
-
</div>
|
327
|
-
</body>
|
328
|
-
</html>
|
329
|
-
}
|
330
|
-
|
331
|
-
###############################################################################
|
332
|
-
|
333
|
-
FILE_PAGE = <<_FILE_PAGE_
|
334
|
-
<div id="%full_path%" class="page_shade">
|
335
|
-
<div class="page">
|
336
|
-
<div class="header">
|
337
|
-
<div class="path">%full_path% / %dtm_modified%</div>
|
338
|
-
</div>
|
339
|
-
#{CONTENTS_XML}
|
340
|
-
</div>
|
341
|
-
</div>
|
342
|
-
_FILE_PAGE_
|
343
|
-
|
344
|
-
###################################################################
|
345
|
-
|
346
|
-
CLASS_PAGE = %{
|
347
|
-
<div id="%full_name%" class="page_shade">
|
348
|
-
<div class="page">
|
349
|
-
IF:parent
|
350
|
-
<h3>%classmod% %full_name% < HREF:par_url:parent:</h3>
|
351
|
-
ENDIF:parent
|
352
|
-
IFNOT:parent
|
353
|
-
<h3>%classmod% %full_name%</h3>
|
354
|
-
ENDIF:parent
|
355
|
-
|
356
|
-
IF:infiles
|
357
|
-
(in files
|
358
|
-
START:infiles
|
359
|
-
HREF:full_path_url:full_path:
|
360
|
-
END:infiles
|
361
|
-
)
|
362
|
-
ENDIF:infiles
|
363
|
-
} + CONTENTS_XML + %{
|
364
|
-
</div>
|
365
|
-
</div>
|
366
|
-
}
|
367
|
-
|
368
|
-
###################################################################
|
369
|
-
|
370
|
-
METHOD_LIST = %{
|
371
|
-
IF:includes
|
372
|
-
<div class="tablesubsubtitle">Included modules</div><br>
|
373
|
-
<div class="name-list">
|
374
|
-
START:includes
|
375
|
-
<span class="method-name">HREF:aref:name:</span>
|
376
|
-
END:includes
|
377
|
-
</div>
|
378
|
-
ENDIF:includes
|
379
|
-
|
380
|
-
IF:method_list
|
381
|
-
START:method_list
|
382
|
-
IF:methods
|
383
|
-
<table cellpadding=5 width="100%">
|
384
|
-
<tr><td class="tablesubtitle">%type% %category% methods</td></tr>
|
385
|
-
</table>
|
386
|
-
START:methods
|
387
|
-
<table width="100%" cellspacing = 0 cellpadding=5 border=0>
|
388
|
-
<tr><td class="methodtitle">
|
389
|
-
<a name="%aref%">
|
390
|
-
IF:callseq
|
391
|
-
<b>%callseq%</b>
|
392
|
-
ENDIF:callseq
|
393
|
-
IFNOT:callseq
|
394
|
-
<b>%name%</b>%params%
|
395
|
-
ENDIF:callseq
|
396
|
-
IF:codeurl
|
397
|
-
<a href="%codeurl%" target="source" class="srclink">src</a>
|
398
|
-
ENDIF:codeurl
|
399
|
-
</a></td></tr>
|
400
|
-
</table>
|
401
|
-
IF:m_desc
|
402
|
-
<div class="description">
|
403
|
-
%m_desc%
|
404
|
-
</div>
|
405
|
-
ENDIF:m_desc
|
406
|
-
IF:aka
|
407
|
-
<div class="aka">
|
408
|
-
This method is also aliased as
|
409
|
-
START:aka
|
410
|
-
<a href="%aref%">%name%</a>
|
411
|
-
END:aka
|
412
|
-
</div>
|
413
|
-
ENDIF:aka
|
414
|
-
IF:sourcecode
|
415
|
-
<div class="sourcecode">
|
416
|
-
<p class="source-link">[ <a href="javascript:toggleSource('%aref%_source')" id="l_%aref%_source">show source</a> ]</p>
|
417
|
-
<div id="%aref%_source" class="dyn-source">
|
418
|
-
<pre>
|
419
|
-
%sourcecode%
|
420
|
-
</pre>
|
421
|
-
</div>
|
422
|
-
</div>
|
423
|
-
ENDIF:sourcecode
|
424
|
-
END:methods
|
425
|
-
ENDIF:methods
|
426
|
-
END:method_list
|
427
|
-
ENDIF:method_list
|
428
|
-
}
|
429
|
-
|
430
|
-
|
431
|
-
########################## Index ################################
|
432
|
-
|
433
|
-
FR_INDEX_BODY = %{
|
434
|
-
!INCLUDE!
|
435
|
-
}
|
436
|
-
|
437
|
-
FILE_INDEX = %{
|
438
|
-
<html>
|
439
|
-
<head>
|
440
|
-
<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
|
441
|
-
<style>
|
442
|
-
<!--
|
443
|
-
body {
|
444
|
-
background-color: #ddddff;
|
445
|
-
font-family: #{FONTS};
|
446
|
-
font-size: 11px;
|
447
|
-
font-style: normal;
|
448
|
-
line-height: 14px;
|
449
|
-
color: #000040;
|
450
|
-
}
|
451
|
-
div.banner {
|
452
|
-
background: #0000aa;
|
453
|
-
color: white;
|
454
|
-
padding: 1;
|
455
|
-
margin: 0;
|
456
|
-
font-size: 90%;
|
457
|
-
font-weight: bold;
|
458
|
-
line-height: 1.1;
|
459
|
-
text-align: center;
|
460
|
-
width: 100%;
|
461
|
-
}
|
462
|
-
|
463
|
-
-->
|
464
|
-
</style>
|
465
|
-
<base target="docwin">
|
466
|
-
</head>
|
467
|
-
<body>
|
468
|
-
<div class="banner">%list_title%</div>
|
469
|
-
START:entries
|
470
|
-
<a href="%href%">%name%</a><br>
|
471
|
-
END:entries
|
472
|
-
</body></html>
|
473
|
-
}
|
474
|
-
|
475
|
-
CLASS_INDEX = FILE_INDEX
|
476
|
-
METHOD_INDEX = FILE_INDEX
|
477
|
-
|
478
|
-
INDEX = %{
|
479
|
-
<HTML>
|
480
|
-
<HEAD>
|
481
|
-
<META HTTP-EQUIV="refresh" content="0;URL=%initial_page%">
|
482
|
-
<TITLE>%realtitle%</TITLE>
|
483
|
-
</HEAD>
|
484
|
-
<BODY>
|
485
|
-
Click <a href="%initial_page%">here</a> to open the Camping docs.
|
486
|
-
</BODY>
|
487
|
-
</HTML>
|
488
|
-
}
|
489
|
-
|
490
|
-
end
|
491
|
-
end
|