s33r 0.3.1 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. data/examples/cli/acl_x.rb +41 -0
  2. data/examples/cli/logging_x.rb +20 -0
  3. data/{bin → examples/cli}/s3cli.rb +13 -20
  4. data/examples/fores33r/README +183 -0
  5. data/examples/fores33r/Rakefile +10 -0
  6. data/examples/fores33r/app/controllers/application.rb +4 -0
  7. data/examples/fores33r/app/controllers/browser_controller.rb +68 -0
  8. data/examples/fores33r/app/helpers/application_helper.rb +8 -0
  9. data/examples/fores33r/app/views/browser/index.rhtml +14 -0
  10. data/examples/fores33r/app/views/browser/show_bucket.rhtml +14 -0
  11. data/examples/fores33r/app/views/layouts/application.rhtml +29 -0
  12. data/examples/fores33r/config/boot.rb +44 -0
  13. data/examples/fores33r/config/database.yml +35 -0
  14. data/examples/fores33r/config/environment.rb +64 -0
  15. data/examples/fores33r/config/environments/development.rb +21 -0
  16. data/examples/fores33r/config/environments/production.rb +18 -0
  17. data/examples/fores33r/config/environments/test.rb +19 -0
  18. data/examples/fores33r/config/routes.rb +23 -0
  19. data/examples/fores33r/doc/README_FOR_APP +2 -0
  20. data/examples/fores33r/log/development.log +5507 -0
  21. data/examples/fores33r/log/production.log +0 -0
  22. data/examples/fores33r/log/server.log +0 -0
  23. data/examples/fores33r/log/test.log +0 -0
  24. data/examples/fores33r/public/404.html +8 -0
  25. data/examples/fores33r/public/500.html +8 -0
  26. data/examples/fores33r/public/dispatch.cgi +10 -0
  27. data/examples/fores33r/public/dispatch.fcgi +24 -0
  28. data/examples/fores33r/public/dispatch.rb +10 -0
  29. data/examples/fores33r/public/favicon.ico +0 -0
  30. data/examples/fores33r/public/images/rails.png +0 -0
  31. data/examples/fores33r/public/javascripts/application.js +2 -0
  32. data/examples/fores33r/public/javascripts/controls.js +815 -0
  33. data/examples/fores33r/public/javascripts/dragdrop.js +913 -0
  34. data/examples/fores33r/public/javascripts/effects.js +958 -0
  35. data/examples/fores33r/public/javascripts/prototype.js +2006 -0
  36. data/examples/fores33r/public/robots.txt +1 -0
  37. data/examples/fores33r/public/stylesheets/core.css +37 -0
  38. data/examples/fores33r/script/about +3 -0
  39. data/examples/fores33r/script/breakpointer +3 -0
  40. data/examples/fores33r/script/console +3 -0
  41. data/examples/fores33r/script/destroy +3 -0
  42. data/examples/fores33r/script/generate +3 -0
  43. data/examples/fores33r/script/performance/benchmarker +3 -0
  44. data/examples/fores33r/script/performance/profiler +3 -0
  45. data/examples/fores33r/script/plugin +3 -0
  46. data/examples/fores33r/script/process/reaper +3 -0
  47. data/examples/fores33r/script/process/spawner +3 -0
  48. data/examples/fores33r/script/runner +3 -0
  49. data/examples/fores33r/script/server +3 -0
  50. data/examples/fores33r/test/test_helper.rb +28 -0
  51. data/examples/fores33r/tmp/sessions/ruby_sess.39d37e054d21d545 +0 -0
  52. data/examples/fores33r/tmp/sessions/ruby_sess.acf71fc73aa74983 +0 -0
  53. data/examples/fores33r/tmp/sessions/ruby_sess.c1697b7d6670f3cd +0 -0
  54. data/examples/s3.yaml +11 -0
  55. data/html/classes/Net/HTTPGenericRequest.html +32 -32
  56. data/html/classes/Net/HTTPResponse.html +20 -19
  57. data/html/classes/S33r.html +422 -190
  58. data/html/classes/S33r/BucketListing.html +107 -70
  59. data/html/classes/S33r/Client.html +888 -414
  60. data/html/classes/S33r/LoggingResource.html +222 -0
  61. data/html/classes/S33r/NamedBucket.html +149 -150
  62. data/html/classes/S33r/OrderlyXmlMarkup.html +165 -0
  63. data/html/classes/S33r/S33rException.html +3 -0
  64. data/html/classes/S33r/S33rException/BucketNotLogTargetable.html +119 -0
  65. data/html/classes/S33r/S33rException/InvalidPermission.html +111 -0
  66. data/html/classes/S33r/S33rException/InvalidS3GroupType.html +111 -0
  67. data/html/classes/S33r/S3ACL.html +125 -0
  68. data/html/classes/S33r/S3ACL/ACLDoc.html +521 -0
  69. data/html/classes/S33r/{S3User.html → S3ACL/AmazonCustomer.html} +27 -30
  70. data/html/classes/S33r/S3ACL/CanonicalUser.html +212 -0
  71. data/html/classes/S33r/S3ACL/Grant.html +403 -0
  72. data/html/classes/S33r/S3ACL/Grantee.html +239 -0
  73. data/html/classes/S33r/S3ACL/Group.html +178 -0
  74. data/html/classes/S33r/S3Object.html +53 -50
  75. data/html/classes/S33r/Sync.html +6 -6
  76. data/html/classes/XML.html +4 -2
  77. data/html/created.rid +1 -1
  78. data/html/files/README_txt.html +82 -28
  79. data/html/files/lib/s33r/bucket_listing_rb.html +1 -8
  80. data/html/files/lib/s33r/builder_rb.html +108 -0
  81. data/html/files/lib/s33r/client_rb.html +2 -1
  82. data/html/files/lib/s33r/core_rb.html +2 -1
  83. data/html/files/lib/s33r/libxml_extensions_rb.html +1 -1
  84. data/html/files/lib/s33r/logging_rb.html +109 -0
  85. data/html/files/lib/s33r/named_bucket_rb.html +1 -1
  86. data/html/files/lib/s33r/s33r_exception_rb.html +1 -1
  87. data/html/files/lib/s33r/s33r_http_rb.html +1 -1
  88. data/html/files/lib/s33r/s3_acl_rb.html +109 -0
  89. data/html/fr_class_index.html +12 -1
  90. data/html/fr_file_index.html +3 -0
  91. data/html/fr_method_index.html +101 -57
  92. data/lib/s33r/bucket_listing.rb +21 -22
  93. data/lib/s33r/builder.rb +20 -0
  94. data/lib/s33r/client.rb +240 -42
  95. data/lib/s33r/core.rb +106 -36
  96. data/lib/s33r/libxml_extensions.rb +2 -2
  97. data/lib/s33r/logging.rb +43 -0
  98. data/lib/s33r/named_bucket.rb +16 -17
  99. data/lib/s33r/s33r_exception.rb +11 -0
  100. data/lib/s33r/s33r_http.rb +2 -1
  101. data/lib/s33r/s3_acl.rb +337 -0
  102. data/test/cases/spec_acl.rb +146 -0
  103. data/test/cases/spec_all_buckets.rb +28 -0
  104. data/test/cases/spec_bucket_listing.rb +2 -2
  105. data/test/cases/spec_client.rb +45 -18
  106. data/test/cases/spec_core.rb +0 -9
  107. data/test/cases/spec_namedbucket.rb +3 -3
  108. data/test/files/acl.xml +47 -0
  109. data/test/files/acl_grant1.xml +7 -0
  110. data/test/files/acl_grant2.xml +6 -0
  111. data/test/files/acl_grant3.xml +6 -0
  112. data/test/files/acl_grant4.xml +6 -0
  113. data/test/files/all_buckets.xml +21 -0
  114. data/test/files/bucket_listing.xml +138 -1
  115. data/test/files/client_config.yml +0 -1
  116. data/test/files/logging_acl.xml +34 -0
  117. data/test/files/namedbucket_config.yml +1 -5
  118. data/test/files/namedbucket_config2.yml +1 -5
  119. data/test/test_setup.rb +1 -0
  120. metadata +132 -7
@@ -87,7 +87,7 @@ s33r to compare files on the filesystem to S3 objects.
87
87
  <h3 class="section-bar">Methods</h3>
88
88
 
89
89
  <div class="name-list">
90
- <a href="#M000054">md5sum</a>&nbsp;&nbsp;
90
+ <a href="#M000059">md5sum</a>&nbsp;&nbsp;
91
91
  </div>
92
92
  </div>
93
93
 
@@ -109,11 +109,11 @@ s33r to compare files on the filesystem to S3 objects.
109
109
  <div id="methods">
110
110
  <h3 class="section-bar">Public Instance methods</h3>
111
111
 
112
- <div id="method-M000054" class="method-detail">
113
- <a name="M000054"></a>
112
+ <div id="method-M000059" class="method-detail">
113
+ <a name="M000059"></a>
114
114
 
115
115
  <div class="method-heading">
116
- <a href="#M000054" class="method-signature">
116
+ <a href="#M000059" class="method-signature">
117
117
  <span class="method-name">md5sum</span><span class="method-args">(filename)</span>
118
118
  </a>
119
119
  </div>
@@ -124,8 +124,8 @@ Get the MD5 checksum for a local file (comparable to the ETag on S3
124
124
  objects).
125
125
  </p>
126
126
  <p><a class="source-toggle" href="#"
127
- onclick="toggleCode('M000054-source');return false;">[Source]</a></p>
128
- <div class="method-source-code" id="M000054-source">
127
+ onclick="toggleCode('M000059-source');return false;">[Source]</a></p>
128
+ <div class="method-source-code" id="M000059-source">
129
129
  <pre>
130
130
  <span class="ruby-comment cmt"># File lib/s33r/sync.rb, line 7</span>
131
131
  7: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">md5sum</span>(<span class="ruby-identifier">filename</span>)
@@ -158,8 +158,10 @@ href="XML/Document.html">XML::Document</a> instance.
158
158
 
159
159
  <div class="method-description">
160
160
  <p>
161
- Find first matching element and return its content (intended for use as a
162
- mixed-in method for <a href="XML/Document.html">Document</a> instances).
161
+ Find first element matching <tt>xpath</tt> and return its content (intended
162
+ for use as a mixed-in method for <a
163
+ href="XML/Document.html">Document</a>/<a href="XML/Node.html">Node</a>
164
+ instances).
163
165
  </p>
164
166
  <p>
165
167
  <tt>xpath</tt>: XPath query to run against self.
data/html/created.rid CHANGED
@@ -1 +1 @@
1
- Wed Sep 27 09:47:06 BST 2006
1
+ Mon Oct 23 16:01:19 BST 2006
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Tue Sep 26 11:29:17 BST 2006</td>
59
+ <td>Mon Oct 23 16:00:58 BST 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -71,25 +71,54 @@
71
71
  <div id="description">
72
72
  <h1>Introduction</h1>
73
73
  <p>
74
- This is a first pass at a Ruby library for talking to Amazon&#8217;s S3
75
- service.
74
+ This is my go at a Ruby library for talking to Amazon&#8217;s S3 service
75
+ via REST. It is based on the sample Ruby code for S3 provided by Amazon,
76
+ but has gone a long way beyond it now. Most of the remaining Amazon code is
77
+ now in core.rb; the rest is mine.
76
78
  </p>
77
79
  <p>
78
- It is less complete than my previous effort (<a
79
- href="http://townx.org/blog/elliot/s3_rails">townx.org/blog/elliot/s3_rails</a>),
80
- but more solid, more elegant, and with a test suite (which uses RSpec - see
81
- <a
82
- href="http://rubyforge.org/projects/rspec">rubyforge.org/projects/rspec</a>).
83
- </p>
84
- <p>
85
- To use it from inside your Ruby script:
80
+ To use it from inside your Ruby script (as a gem):
86
81
  </p>
87
82
  <pre>
88
- require 's33r'
83
+ require 'rubygems'
84
+ require_gem 's33r'
89
85
  </pre>
90
86
  <p>
87
+ Alternatively, just load lib/s33r.rb.
88
+ </p>
89
+ <p>
91
90
  By the way, I&#8217;ve tested this on Linux, but not on Windows or Mac.
92
91
  </p>
92
+ <h1>Features</h1>
93
+ <p>
94
+ Supports the following aspects of S3:
95
+ </p>
96
+ <ul>
97
+ <li>List all buckets
98
+
99
+ </li>
100
+ <li>Get bucket
101
+
102
+ </li>
103
+ <li>Create bucket
104
+
105
+ </li>
106
+ <li>Delete bucket
107
+
108
+ </li>
109
+ <li>Put resource into bucket (text or file)
110
+
111
+ </li>
112
+ <li>Delete resource from bucket
113
+
114
+ </li>
115
+ <li>Set ACL for a bucket or resource
116
+
117
+ </li>
118
+ <li>Turn on logging for a bucket or resource
119
+
120
+ </li>
121
+ </ul>
93
122
  <h1>Requirements</h1>
94
123
  <p>
95
124
  To get the most from s33r, you will need:
@@ -99,11 +128,14 @@ To get the most from s33r, you will need:
99
128
  versions)
100
129
 
101
130
  </li>
102
- <li>openssl (you can use s33r without this, but obviously you won&#8217;t be
103
- able to encrypt connections)
131
+ <li>libxml (REQUIRED: s33r relies on this for parsing responses from S3)
132
+
133
+ </li>
134
+ <li>builder (REQUIRED)
104
135
 
105
136
  </li>
106
- <li>libxml (s33r relies on this for parsing responses from S3)
137
+ <li>openssl (you can use s33r without this, but obviously you won&#8217;t be
138
+ able to encrypt connections)
107
139
 
108
140
  </li>
109
141
  <li>rspec (if you want to run the unit tests)
@@ -113,7 +145,7 @@ able to encrypt connections)
113
145
 
114
146
  </li>
115
147
  </ul>
116
- <h1>Usage</h1>
148
+ <h1>Basic usage</h1>
117
149
  <ul>
118
150
  <li>Set up an Amazon S3 account at <a
119
151
  href="http://amazon.com/s3">amazon.com/s3</a>.
@@ -140,9 +172,10 @@ aws_secret_access_key with your settings.
140
172
  <li>Try the following code:
141
173
 
142
174
  <pre>
143
- require 'lib/s33r'
175
+ require_gem 's33r'
144
176
  include S33r
145
177
  # initialise a client instance from a config file
178
+ # (see the sample in examples/s3.yaml)
146
179
  client = Client.init('/home/you/.s33r')
147
180
  # create a bucket called 'some-outlandish-name'
148
181
  client.create_bucket('some-outlandish-name')
@@ -154,20 +187,41 @@ aws_secret_access_key with your settings.
154
187
  </li>
155
188
  </ul>
156
189
  <p>
157
- Note that the simple Client class is not sophisticated and returns raw
158
- requests (list_buckets returns a HTTPResponse object with attached body,
159
- for example). I tend to use NamedBucket instead, which provides a
160
- simplified interface to a single bucket. This saves having to pass the
161
- bucket name to every method call, and parses bucket listings into an object
162
- representation.
190
+ Note that the simple Client class is not particularly sophisticated and
191
+ returns raw requests for some methods. I tend to use NamedBucket instead,
192
+ which provides a simplified interface to a single bucket. This saves having
193
+ to pass the bucket name to every method call, and parses bucket listings
194
+ into an object representation.
195
+ </p>
196
+ <h1>Examples</h1>
197
+ <p>
198
+ _Command line client_
163
199
  </p>
164
200
  <p>
165
201
  If you want to see a full example program which uses the library, have a
166
- look at bin/s3cli.rb. This is a simple command line client which you can
167
- use to post a file to S3 and email a link to the file to someone. Useful
168
- for sending big files to people without clogging their email inbox with
169
- enormous files. It is also intended as a demonstration of how to use the
170
- library. Full instructions are included at the top of the file.
202
+ look at examples/cli/s3cli.rb. This is a simple command line client which
203
+ you can use to post a file to S3 and email a link to the file to someone.
204
+ Useful for sending big files to people without clogging their email inbox
205
+ with enormous files. It is also intended as a demonstration of how to use
206
+ the library. Full instructions are included at the top of the file.
207
+ </p>
208
+ <p>
209
+ _Rails application_
210
+ </p>
211
+ <p>
212
+ examples/fores33r contains a Rails application which makes use of the <a
213
+ href="../classes/S33r.html">S33r</a> library. It will display a bucket list
214
+ and the contents of individual buckets. You can upload files to your
215
+ buckets using it.
216
+ </p>
217
+ <p>
218
+ Before use, you will need to configure it by editing the file
219
+ examples/s3.yaml (so it knows your Amazon S3 keys) and copying it into the
220
+ config folder.
221
+ </p>
222
+ <p>
223
+ This has been kept deliberately simple, and doesn&#8217;t provide any
224
+ access control or logging management.
171
225
  </p>
172
226
  <h1>Credits</h1>
173
227
  <p>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Tue Sep 26 11:38:55 BST 2006</td>
59
+ <td>Sun Oct 22 15:49:34 BST 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -68,13 +68,6 @@
68
68
 
69
69
  <div id="contextContent">
70
70
 
71
- <div id="description">
72
- <p>
73
- TODO: use prefix to limit keys to some subset of all available keys; TODO:
74
- use delimiter to group keys
75
- </p>
76
-
77
- </div>
78
71
 
79
72
  <div id="requires-list">
80
73
  <h3 class="section-bar">Required files</h3>
@@ -0,0 +1,108 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>File: builder.rb</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="fileHeader">
50
+ <h1>builder.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/s33r/builder.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Sun Oct 22 20:27:31 BST 2006</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+
72
+ <div id="requires-list">
73
+ <h3 class="section-bar">Required files</h3>
74
+
75
+ <div class="name-list">
76
+ builder&nbsp;&nbsp;
77
+ </div>
78
+ </div>
79
+
80
+ </div>
81
+
82
+
83
+ </div>
84
+
85
+
86
+ <!-- if includes -->
87
+
88
+ <div id="section">
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+ <!-- if method_list -->
98
+
99
+
100
+ </div>
101
+
102
+
103
+ <div id="validator-badges">
104
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
105
+ </div>
106
+
107
+ </body>
108
+ </html>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Sep 27 00:50:59 BST 2006</td>
59
+ <td>Mon Oct 23 15:40:22 BST 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -75,6 +75,7 @@
75
75
  <div class="name-list">
76
76
  net/https&nbsp;&nbsp;
77
77
  cgi&nbsp;&nbsp;
78
+ erb&nbsp;&nbsp;
78
79
  yaml&nbsp;&nbsp;
79
80
  </div>
80
81
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Mon Sep 18 11:13:16 BST 2006</td>
59
+ <td>Mon Oct 23 15:51:40 BST 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -79,6 +79,7 @@
79
79
  net/https&nbsp;&nbsp;
80
80
  openssl&nbsp;&nbsp;
81
81
  xml/libxml&nbsp;&nbsp;
82
+ parsedate&nbsp;&nbsp;
82
83
  </div>
83
84
  </div>
84
85
 
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Mon Sep 04 14:11:25 BST 2006</td>
59
+ <td>Sun Oct 22 00:09:49 BST 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -0,0 +1,109 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>File: logging.rb</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="fileHeader">
50
+ <h1>logging.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/s33r/logging.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Sun Oct 22 21:14:29 BST 2006</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+
72
+ <div id="requires-list">
73
+ <h3 class="section-bar">Required files</h3>
74
+
75
+ <div class="name-list">
76
+ rubygems&nbsp;&nbsp;
77
+ xml/libxml&nbsp;&nbsp;
78
+ </div>
79
+ </div>
80
+
81
+ </div>
82
+
83
+
84
+ </div>
85
+
86
+
87
+ <!-- if includes -->
88
+
89
+ <div id="section">
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+ <!-- if method_list -->
99
+
100
+
101
+ </div>
102
+
103
+
104
+ <div id="validator-badges">
105
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
106
+ </div>
107
+
108
+ </body>
109
+ </html>