s33r 0.3.1 → 0.4

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.
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>