thin 0.5.0 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of thin might be problematic. Click here for more details.
- data/COPYING +1 -1
- data/README +3 -7
- data/Rakefile +6 -163
- data/bin/thin +87 -48
- data/example/thin.god +72 -0
- data/ext/thin_parser/thin.c +7 -7
- data/lib/rack/adapter/rails.rb +38 -22
- data/lib/thin.rb +2 -1
- data/lib/thin/cluster.rb +106 -0
- data/lib/thin/connection.rb +3 -4
- data/lib/thin/daemonizing.rb +4 -24
- data/lib/thin/request.rb +6 -5
- data/lib/thin/response.rb +1 -3
- data/lib/thin/server.rb +9 -6
- data/lib/thin/version.rb +6 -4
- data/lib/thin_parser.bundle +0 -0
- data/spec/cluster_spec.rb +58 -0
- data/spec/daemonizing_spec.rb +1 -2
- data/spec/rack_rails_spec.rb +73 -0
- data/spec/rails_app/app/controllers/application.rb +10 -0
- data/spec/rails_app/app/controllers/simple_controller.rb +19 -0
- data/spec/rails_app/app/helpers/application_helper.rb +3 -0
- data/spec/rails_app/app/views/simple/index.html.erb +15 -0
- data/spec/rails_app/config/boot.rb +109 -0
- data/spec/rails_app/config/environment.rb +64 -0
- data/spec/rails_app/config/environments/development.rb +18 -0
- data/spec/rails_app/config/environments/production.rb +19 -0
- data/spec/rails_app/config/environments/test.rb +22 -0
- data/spec/rails_app/config/initializers/inflections.rb +10 -0
- data/spec/rails_app/config/initializers/mime_types.rb +5 -0
- data/spec/rails_app/config/routes.rb +35 -0
- data/spec/rails_app/public/404.html +30 -0
- data/spec/rails_app/public/422.html +30 -0
- data/spec/rails_app/public/500.html +30 -0
- data/spec/rails_app/public/dispatch.cgi +10 -0
- data/spec/rails_app/public/dispatch.fcgi +24 -0
- data/spec/rails_app/public/dispatch.rb +10 -0
- data/spec/rails_app/public/favicon.ico +0 -0
- data/spec/rails_app/public/images/rails.png +0 -0
- data/spec/rails_app/public/index.html +277 -0
- data/spec/rails_app/public/javascripts/application.js +2 -0
- data/spec/rails_app/public/javascripts/controls.js +963 -0
- data/spec/rails_app/public/javascripts/dragdrop.js +972 -0
- data/spec/rails_app/public/javascripts/effects.js +1120 -0
- data/spec/rails_app/public/javascripts/prototype.js +4225 -0
- data/spec/rails_app/public/robots.txt +5 -0
- data/spec/rails_app/script/about +3 -0
- data/spec/rails_app/script/console +3 -0
- data/spec/rails_app/script/destroy +3 -0
- data/spec/rails_app/script/generate +3 -0
- data/spec/rails_app/script/performance/benchmarker +3 -0
- data/spec/rails_app/script/performance/profiler +3 -0
- data/spec/rails_app/script/performance/request +3 -0
- data/spec/rails_app/script/plugin +3 -0
- data/spec/rails_app/script/process/inspector +3 -0
- data/spec/rails_app/script/process/reaper +3 -0
- data/spec/rails_app/script/process/spawner +3 -0
- data/spec/rails_app/script/runner +3 -0
- data/spec/rails_app/script/server +3 -0
- data/spec/response_spec.rb +16 -0
- data/spec/spec_helper.rb +1 -0
- metadata +71 -11
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/README.html +0 -197
- data/doc/rdoc/index.html +0 -10
- data/doc/rdoc/logo.gif +0 -0
- data/doc/rdoc/rdoc-style.css +0 -91
data/spec/response_spec.rb
CHANGED
@@ -21,6 +21,22 @@ describe Response do
|
|
21
21
|
@response.head.should == "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nSet-Cookie: mium=7\r\nSet-Cookie: hi=there\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"
|
22
22
|
end
|
23
23
|
|
24
|
+
it 'should parse simple header values' do
|
25
|
+
@response.headers = {
|
26
|
+
'Host' => 'localhost'
|
27
|
+
}
|
28
|
+
|
29
|
+
@response.head.should == "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nHost: localhost\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should parse multiline header values in several headers' do
|
33
|
+
@response.headers = {
|
34
|
+
'Set-Cookie' => "mium=7\nhi=there"
|
35
|
+
}
|
36
|
+
|
37
|
+
@response.head.should == "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nSet-Cookie: mium=7\r\nSet-Cookie: hi=there\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"
|
38
|
+
end
|
39
|
+
|
24
40
|
it 'should output body' do
|
25
41
|
@response.body << '<html></html>'
|
26
42
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc-Andre Cournoyer
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-01-
|
12
|
+
date: 2008-01-12 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.8.1
|
23
23
|
version:
|
24
24
|
- !ruby/object:Gem::Dependency
|
25
25
|
name: rack
|
@@ -30,6 +30,15 @@ dependencies:
|
|
30
30
|
- !ruby/object:Gem::Version
|
31
31
|
version: 0.2.0
|
32
32
|
version:
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: daemons
|
35
|
+
version_requirement:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.9
|
41
|
+
version:
|
33
42
|
description: A thin and fast web server
|
34
43
|
email: macournoyer@gmail.com
|
35
44
|
executables:
|
@@ -44,16 +53,65 @@ files:
|
|
44
53
|
- Rakefile
|
45
54
|
- bin/thin
|
46
55
|
- doc/benchmarks.txt
|
47
|
-
-
|
48
|
-
- doc/rdoc/classes
|
49
|
-
- doc/rdoc/created.rid
|
50
|
-
- doc/rdoc/files
|
51
|
-
- doc/rdoc/files/README.html
|
52
|
-
- doc/rdoc/index.html
|
53
|
-
- doc/rdoc/logo.gif
|
54
|
-
- doc/rdoc/rdoc-style.css
|
56
|
+
- spec/cluster_spec.rb
|
55
57
|
- spec/daemonizing_spec.rb
|
56
58
|
- spec/headers_spec.rb
|
59
|
+
- spec/rack_rails_spec.rb
|
60
|
+
- spec/rails_app
|
61
|
+
- spec/rails_app/app
|
62
|
+
- spec/rails_app/app/controllers
|
63
|
+
- spec/rails_app/app/controllers/application.rb
|
64
|
+
- spec/rails_app/app/controllers/simple_controller.rb
|
65
|
+
- spec/rails_app/app/helpers
|
66
|
+
- spec/rails_app/app/helpers/application_helper.rb
|
67
|
+
- spec/rails_app/app/views
|
68
|
+
- spec/rails_app/app/views/simple
|
69
|
+
- spec/rails_app/app/views/simple/index.html.erb
|
70
|
+
- spec/rails_app/config
|
71
|
+
- spec/rails_app/config/boot.rb
|
72
|
+
- spec/rails_app/config/environment.rb
|
73
|
+
- spec/rails_app/config/environments
|
74
|
+
- spec/rails_app/config/environments/development.rb
|
75
|
+
- spec/rails_app/config/environments/production.rb
|
76
|
+
- spec/rails_app/config/environments/test.rb
|
77
|
+
- spec/rails_app/config/initializers
|
78
|
+
- spec/rails_app/config/initializers/inflections.rb
|
79
|
+
- spec/rails_app/config/initializers/mime_types.rb
|
80
|
+
- spec/rails_app/config/routes.rb
|
81
|
+
- spec/rails_app/public
|
82
|
+
- spec/rails_app/public/404.html
|
83
|
+
- spec/rails_app/public/422.html
|
84
|
+
- spec/rails_app/public/500.html
|
85
|
+
- spec/rails_app/public/dispatch.cgi
|
86
|
+
- spec/rails_app/public/dispatch.fcgi
|
87
|
+
- spec/rails_app/public/dispatch.rb
|
88
|
+
- spec/rails_app/public/favicon.ico
|
89
|
+
- spec/rails_app/public/images
|
90
|
+
- spec/rails_app/public/images/rails.png
|
91
|
+
- spec/rails_app/public/index.html
|
92
|
+
- spec/rails_app/public/javascripts
|
93
|
+
- spec/rails_app/public/javascripts/application.js
|
94
|
+
- spec/rails_app/public/javascripts/controls.js
|
95
|
+
- spec/rails_app/public/javascripts/dragdrop.js
|
96
|
+
- spec/rails_app/public/javascripts/effects.js
|
97
|
+
- spec/rails_app/public/javascripts/prototype.js
|
98
|
+
- spec/rails_app/public/robots.txt
|
99
|
+
- spec/rails_app/script
|
100
|
+
- spec/rails_app/script/about
|
101
|
+
- spec/rails_app/script/console
|
102
|
+
- spec/rails_app/script/destroy
|
103
|
+
- spec/rails_app/script/generate
|
104
|
+
- spec/rails_app/script/performance
|
105
|
+
- spec/rails_app/script/performance/benchmarker
|
106
|
+
- spec/rails_app/script/performance/profiler
|
107
|
+
- spec/rails_app/script/performance/request
|
108
|
+
- spec/rails_app/script/plugin
|
109
|
+
- spec/rails_app/script/process
|
110
|
+
- spec/rails_app/script/process/inspector
|
111
|
+
- spec/rails_app/script/process/reaper
|
112
|
+
- spec/rails_app/script/process/spawner
|
113
|
+
- spec/rails_app/script/runner
|
114
|
+
- spec/rails_app/script/server
|
57
115
|
- spec/request_spec.rb
|
58
116
|
- spec/response_spec.rb
|
59
117
|
- spec/server_spec.rb
|
@@ -64,6 +122,7 @@ files:
|
|
64
122
|
- lib/rack/handler
|
65
123
|
- lib/rack/handler/thin.rb
|
66
124
|
- lib/thin
|
125
|
+
- lib/thin/cluster.rb
|
67
126
|
- lib/thin/connection.rb
|
68
127
|
- lib/thin/daemonizing.rb
|
69
128
|
- lib/thin/headers.rb
|
@@ -76,6 +135,7 @@ files:
|
|
76
135
|
- lib/thin.rb
|
77
136
|
- lib/thin_parser.bundle
|
78
137
|
- example/config.ru
|
138
|
+
- example/thin.god
|
79
139
|
- ext/thin_parser/ext_help.h
|
80
140
|
- ext/thin_parser/parser.h
|
81
141
|
- ext/thin_parser/parser.c
|
data/doc/rdoc/created.rid
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Tue, 01 Jan 2008 23:05:47 -0500
|
data/doc/rdoc/files/README.html
DELETED
@@ -1,197 +0,0 @@
|
|
1
|
-
|
2
|
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
3
|
-
<html>
|
4
|
-
<head>
|
5
|
-
<title>
|
6
|
-
thin » File: README
|
7
|
-
</title>
|
8
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
9
|
-
<link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
|
10
|
-
<script language="JavaScript" type="text/javascript">
|
11
|
-
// <![CDATA[
|
12
|
-
|
13
|
-
function toggleSource( id )
|
14
|
-
{
|
15
|
-
var elem
|
16
|
-
var link
|
17
|
-
|
18
|
-
if( document.getElementById )
|
19
|
-
{
|
20
|
-
elem = document.getElementById( id )
|
21
|
-
link = document.getElementById( "l_" + id )
|
22
|
-
}
|
23
|
-
else if ( document.all )
|
24
|
-
{
|
25
|
-
elem = eval( "document.all." + id )
|
26
|
-
link = eval( "document.all.l_" + id )
|
27
|
-
}
|
28
|
-
else
|
29
|
-
return false;
|
30
|
-
|
31
|
-
if( elem.style.display == "block" )
|
32
|
-
{
|
33
|
-
elem.style.display = "none"
|
34
|
-
link.innerHTML = "show source"
|
35
|
-
}
|
36
|
-
else
|
37
|
-
{
|
38
|
-
elem.style.display = "block"
|
39
|
-
link.innerHTML = "hide source"
|
40
|
-
}
|
41
|
-
}
|
42
|
-
|
43
|
-
function openCode( url )
|
44
|
-
{
|
45
|
-
window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
|
46
|
-
}
|
47
|
-
// ]]>
|
48
|
-
</script>
|
49
|
-
</head>
|
50
|
-
<body>
|
51
|
-
<ul id="menu">
|
52
|
-
<li><a href="/thin/">home</a></li>
|
53
|
-
<li><a href="/thin/doc/">doc</a></li>
|
54
|
-
<li><a href="/thin/trac.fcgi/timeline">timeline</a></li>
|
55
|
-
<li><a href="/thin/trac.fcgi/browser">code</a></li>
|
56
|
-
<li><a href="/thin/trac.fcgi/report">tickets</a></li>
|
57
|
-
<li><a href="/thin/trac.fcgi/newticket">new ticket</a></li>
|
58
|
-
</ul>
|
59
|
-
<div id="sidebar">
|
60
|
-
<h2>Files</h2>
|
61
|
-
<ul class="list">
|
62
|
-
<li><a href="../files/README.html" value="File: README">README</a></li>
|
63
|
-
</ul>
|
64
|
-
|
65
|
-
<h2>Classes</h2>
|
66
|
-
<ul class="list">
|
67
|
-
</ul>
|
68
|
-
</div>
|
69
|
-
<div id="container">
|
70
|
-
<div id="header">
|
71
|
-
<a href="/thin/" title="Home">
|
72
|
-
<img id="logo" src="../logo.gif" />
|
73
|
-
</a>
|
74
|
-
<h2 id="tag_line">A fast and very simple Ruby web server</h2>
|
75
|
-
</div>
|
76
|
-
|
77
|
-
<div id="content">
|
78
|
-
<h2>File: README</h2>
|
79
|
-
|
80
|
-
<div id="README" class="page_shade">
|
81
|
-
<div class="page">
|
82
|
-
<div class="header">
|
83
|
-
<div class="path">README / Tue Jan 01 22:53:48 -0500 2008</div>
|
84
|
-
</div>
|
85
|
-
|
86
|
-
<h2>Thin</h2>
|
87
|
-
<p>
|
88
|
-
Tiny, fast & funny HTTP server
|
89
|
-
</p>
|
90
|
-
<p>
|
91
|
-
Thin is a Ruby web server that glues together 3 of the best Ruby libraries
|
92
|
-
in web history:
|
93
|
-
</p>
|
94
|
-
<pre>
|
95
|
-
* the Mongrel parser: the root of Mongrel speed and security
|
96
|
-
* Event Machine: a network I/O library with extremely high scalability, performance and stability
|
97
|
-
* Rack: a minimal interface between webservers and Ruby frameworks
|
98
|
-
</pre>
|
99
|
-
<p>
|
100
|
-
Which makes it, with all humility, the most secure, stable, fast and
|
101
|
-
extensible Ruby web server bundled in an easy to use gem for your own
|
102
|
-
pleasure.
|
103
|
-
</p>
|
104
|
-
<h3>Installation</h3>
|
105
|
-
<p>
|
106
|
-
For the latest stable version:
|
107
|
-
</p>
|
108
|
-
<pre>
|
109
|
-
sudo gem install thin
|
110
|
-
</pre>
|
111
|
-
<p>
|
112
|
-
or using my mirror (might be more recent):
|
113
|
-
</p>
|
114
|
-
<pre>
|
115
|
-
sudo gem install thin --source http://code.macournoyer.com
|
116
|
-
</pre>
|
117
|
-
<p>
|
118
|
-
Or from source:
|
119
|
-
</p>
|
120
|
-
<pre>
|
121
|
-
git clone http://code.macournoyer.com/git/thin.git
|
122
|
-
cd thin
|
123
|
-
rake install
|
124
|
-
</pre>
|
125
|
-
<p>
|
126
|
-
Or from the Subversion mirror (might be out of date):
|
127
|
-
</p>
|
128
|
-
<pre>
|
129
|
-
svn co http://code.macournoyer.com/svn/thin/trunk thin
|
130
|
-
</pre>
|
131
|
-
<h3>Usage</h3>
|
132
|
-
<p>
|
133
|
-
A <tt>thin</tt> script is offered to easily start your Rails application:
|
134
|
-
</p>
|
135
|
-
<pre>
|
136
|
-
cd to/your/rails/app
|
137
|
-
thin start
|
138
|
-
</pre>
|
139
|
-
<p>
|
140
|
-
But Thin is also usable through Rack <tt>rackup</tt> command. You need to
|
141
|
-
setup a config.ru file and require thin in it:
|
142
|
-
</p>
|
143
|
-
<pre>
|
144
|
-
cat <<EOS
|
145
|
-
require 'thin'
|
146
|
-
|
147
|
-
app = proc do |env|
|
148
|
-
[200, {'Content-Type'=>'text/html'}, ['hi']]
|
149
|
-
end
|
150
|
-
|
151
|
-
run app
|
152
|
-
EOS
|
153
|
-
rackup -s thin
|
154
|
-
</pre>
|
155
|
-
<p>
|
156
|
-
See example/config.ru for details and rackup -h
|
157
|
-
</p>
|
158
|
-
<h3>License</h3>
|
159
|
-
<p>
|
160
|
-
Ruby License, <a
|
161
|
-
href="http://www.ruby-lang.org/en/LICENSE.txt">www.ruby-lang.org/en/LICENSE.txt</a>.
|
162
|
-
</p>
|
163
|
-
<h3>Credits</h3>
|
164
|
-
<p>
|
165
|
-
The parser was stolen from Mongrel <a
|
166
|
-
href="http://mongrel.rubyforge.org">mongrel.rubyforge.org</a> by Zed Shaw.
|
167
|
-
Mongrel Web Server (Mongrel) is copyrighted free software by Zed A. Shaw
|
168
|
-
<zedshaw at zedshaw dot com> You can redistribute it and/or modify it
|
169
|
-
under either the terms of the GPL.
|
170
|
-
</p>
|
171
|
-
<p>
|
172
|
-
Thin is copyright Marc-Andre Cournoyer <macournoyer@gmail.com>
|
173
|
-
</p>
|
174
|
-
<p>
|
175
|
-
Please report any bug at <a
|
176
|
-
href="http://code.macournoyer.com/thin/trac.fcgi/newticket">code.macournoyer.com/thin/trac.fcgi/newticket</a>
|
177
|
-
and security issues directly to me at macournoyer@gmail.com.
|
178
|
-
</p>
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
</div>
|
187
|
-
</div>
|
188
|
-
|
189
|
-
|
190
|
-
</div>
|
191
|
-
</div>
|
192
|
-
<div id="footer">
|
193
|
-
<hr />
|
194
|
-
© <a href="http://macournoyer.com">Marc-André Cournoyer</a>
|
195
|
-
</div>
|
196
|
-
</body>
|
197
|
-
</html>
|
data/doc/rdoc/index.html
DELETED
data/doc/rdoc/logo.gif
DELETED
Binary file
|
data/doc/rdoc/rdoc-style.css
DELETED
@@ -1,91 +0,0 @@
|
|
1
|
-
body { margin:0; padding:0; font: 12px Times, "Times New Roman"; text-align: center }
|
2
|
-
img { border:0 }
|
3
|
-
|
4
|
-
a { color: #666; text-decoration: none; border-bottom: solid 1px #ccc; }
|
5
|
-
a:hover { color: #333; border-bottom: solid 1px #aaa; }
|
6
|
-
|
7
|
-
acronym { border-bottom: dotted 1px #ccc; cursor: help; }
|
8
|
-
|
9
|
-
pre { font: 9px Courier, "Courier New"; background: #111; color: #fff; padding: 3px; border: solid 1px #ccc; }
|
10
|
-
hr { background: url(/thin/images/split.gif) no-repeat; height: 30px; width: 100px; border: 0; margin: 40px auto; }
|
11
|
-
|
12
|
-
input, select, textarea { font: 9px Tahoma, Arial; }
|
13
|
-
label { font-size: 11px; }
|
14
|
-
|
15
|
-
h1, h2, h3, h4 { margin: 12px 0 8px 0; padding: 0; }
|
16
|
-
h3 { font-size: 14px; }
|
17
|
-
h4 { font-size: 13px; }
|
18
|
-
|
19
|
-
ul#menu { padding: 4px; margin:0; background: #111; list-style: none; border-bottom: solid 1px #ccc; }
|
20
|
-
ul#menu li { margin:0; display: inline; }
|
21
|
-
ul#menu li a { color: #fff; text-decoration: none; padding: 6px; border: 0; }
|
22
|
-
ul#menu li a:hover { text-decoration: underline; }
|
23
|
-
|
24
|
-
#container { width: 300px; margin: 0 auto; }
|
25
|
-
|
26
|
-
#header { padding: 30px 0 10px 0; }
|
27
|
-
#header #logo { padding-bottom: 10px; }
|
28
|
-
#header #tag_line { margin: 4px 0; font-size: 12px; letter-spacing: -1px; color: #333; }
|
29
|
-
|
30
|
-
#content { line-height: 16px; text-align: left; }
|
31
|
-
#content h1 { margin: 40px 0 10px 0; padding: 0; text-align: center; }
|
32
|
-
#content h2 { margin: 40px 0 10px 0; padding: 0; text-align: center; }
|
33
|
-
#content h3 { margin: 40px 0 10px 0; padding: 0; text-align: center; }
|
34
|
-
|
35
|
-
#content ul { list-style-image: url(/thin/images/bullet.gif); margin: 0; padding: 0 20px; }
|
36
|
-
#content li { padding: 1px 0; }
|
37
|
-
|
38
|
-
#footer { margin: 60px 0 20px 0; font-size: 10px; color: #666; }
|
39
|
-
|
40
|
-
#sidebar { position: absolute; right: 0; width: 400px; text-align: right; padding: 10px; }
|
41
|
-
|
42
|
-
ul.list { list-style: none; }
|
43
|
-
ul.list li { margin: 0; padding: 1px 0; }
|
44
|
-
|
45
|
-
#content div.graph h3 { margin: 6px 0; }
|
46
|
-
#content div.graph { text-align: center; }
|
47
|
-
|
48
|
-
.clear { clear: both; }
|
49
|
-
|
50
|
-
/*RDoc*/
|
51
|
-
.dyn-source { display: none; }
|
52
|
-
.path { text-align: center; font: 9px Tahoma, Arial; }
|
53
|
-
.method-type { font: 9px Tahoma, Arial; color: #fff; background: #111; border: solid 1px #ccc; padding: 1px; }
|
54
|
-
|
55
|
-
/*Trac*/
|
56
|
-
#container.wide { width: 600px; }
|
57
|
-
#prefs { position: absolute; right: 0; width: 200px; }
|
58
|
-
|
59
|
-
#content.timeline h2 { font: 9px Tahoma, Arial; border-bottom: solid 1px #ccc; color: #ccc; text-align: left; }
|
60
|
-
#content.timeline dt { padding: 3px; }
|
61
|
-
#content.timeline dt a { border: 0; }
|
62
|
-
#content.timeline dt a em { border-bottom: solid 1px #ccc; }
|
63
|
-
#content.timeline dt .time { font: 9px Tahoma, Arial; color: #fff; background: #111; border: solid 1px #ccc; padding: 1px; }
|
64
|
-
|
65
|
-
table { border-collapse: collapse; }
|
66
|
-
|
67
|
-
table.listing { margin: 30px 0; width: 100%; }
|
68
|
-
table.listing th { font: 9px Tahoma, Arial; border-bottom: solid 1px #ccc; text-align: left; }
|
69
|
-
table.listing th a { border: 0; }
|
70
|
-
table.listing td { padding: 4px; }
|
71
|
-
|
72
|
-
table .odd td { background: #eee; }
|
73
|
-
|
74
|
-
#jumprev { float: right; }
|
75
|
-
|
76
|
-
#help { float: right; margin: 20px 0; }
|
77
|
-
#altlinks { clear: both; }
|
78
|
-
|
79
|
-
#ctxtnav ul { padding: 4px; margin:0; list-style: none; }
|
80
|
-
#ctxtnav ul li { margin:0; display: inline; }
|
81
|
-
|
82
|
-
table.code { background: #111; color: #fff; padding: 3px; border: solid 1px #ccc; width: 100%; }
|
83
|
-
table.code tbody td { font: 10px Courier, "Courier New"; padding: 3px; }
|
84
|
-
table.code th.info { display: none; }
|
85
|
-
table.code th { font: 8px Tahoma, Arial; text-align: right; padding: 1px 6px; }
|
86
|
-
table.code th a { border: 0; }
|
87
|
-
table.code td { padding: 2px; }
|
88
|
-
|
89
|
-
.field, .buttons { margin: 14px 0; }
|
90
|
-
|
91
|
-
fieldset table, textarea { width: 100%; }
|