istat 0.0.1 → 0.0.2
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/debug.log +3186 -0
- data/lib/istat/client.rb +12 -7
- data/lib/istat/frames/measurement.rb +109 -57
- data/lib/istat/frames/register.rb +18 -4
- data/lib/istat/version.rb +1 -1
- data/spec/client_spec.rb +9 -0
- data/spec/frames/measurement_request_spec.rb +26 -5
- data/spec/frames/register_spec.rb +4 -3
- metadata +3 -17
- data/doc/_index.html +0 -82
- data/doc/class_list.html +0 -36
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -53
- data/doc/css/style.css +0 -318
- data/doc/file.README.html +0 -99
- data/doc/file_list.html +0 -38
- data/doc/frames.html +0 -13
- data/doc/index.html +0 -99
- data/doc/js/app.js +0 -203
- data/doc/js/full_list.js +0 -149
- data/doc/js/jquery.js +0 -16
- data/doc/method_list.html +0 -35
- data/doc/top-level-namespace.html +0 -78
data/lib/istat/client.rb
CHANGED
@@ -34,7 +34,7 @@ module Istat
|
|
34
34
|
# @param passwd [String] the passwd or code to access the server
|
35
35
|
# @param logger [optional Logger] a logger that will log all actions on the client
|
36
36
|
# @example
|
37
|
-
# @client = Istat::
|
37
|
+
# @client = Istat::Client.new("example.com", 5109, "00000")
|
38
38
|
#
|
39
39
|
def initialize(host, port, passwd, logger = nil)
|
40
40
|
@host, @port, @passwd, @logger = host, port, passwd, logger
|
@@ -44,7 +44,7 @@ module Istat
|
|
44
44
|
# starts a session on the remote machine and yields it to the passed block.
|
45
45
|
# @yield [Istat::Client] the remote session
|
46
46
|
# @example
|
47
|
-
# @client = Istat::
|
47
|
+
# @client = Istat::Client.new("example.com", 5109, "00000")
|
48
48
|
# @client.start do |session|
|
49
49
|
# # work with the session
|
50
50
|
# end
|
@@ -120,7 +120,7 @@ module Istat
|
|
120
120
|
# @param [Integer|Time] since size of the requested history (-1 last)
|
121
121
|
# @return [Istat::Frames::MeasurementResponse] the fetched result
|
122
122
|
# @example
|
123
|
-
# @client = Istat::
|
123
|
+
# @client = Istat::Client.new("example.com", 5109, "00000")
|
124
124
|
# @client.start do |session|
|
125
125
|
# response = session.fetch
|
126
126
|
# response.load # => [0.54, 0.59, 0.65]
|
@@ -133,6 +133,13 @@ module Istat
|
|
133
133
|
Istat::Frames::MeasurementResponse.new(receive)
|
134
134
|
end
|
135
135
|
|
136
|
+
# fetch all data available on the remote server
|
137
|
+
# @return [Istat::Frames::MeasurementResponse] the fetched result
|
138
|
+
# @see #fetch
|
139
|
+
def fetch_all
|
140
|
+
fetch(-2)
|
141
|
+
end
|
142
|
+
|
136
143
|
protected
|
137
144
|
|
138
145
|
# send a frame to the remote system (istatd)
|
@@ -148,10 +155,8 @@ module Istat
|
|
148
155
|
# @return [String] the xml stream that was send from istatd
|
149
156
|
def receive
|
150
157
|
data = ""
|
151
|
-
|
152
|
-
|
153
|
-
end while !data.include?("</isr>")
|
154
|
-
@logger.debug "Recieved: #{data}" if @logger
|
158
|
+
data << @socket.recv(1024) while !data.include?("</isr>")
|
159
|
+
@logger.debug "Received: #{data}" if @logger
|
155
160
|
data
|
156
161
|
end
|
157
162
|
end
|
@@ -33,9 +33,8 @@ module Istat
|
|
33
33
|
# create a new request based on the requested id. The default is to
|
34
34
|
# request only the last values (since -1)
|
35
35
|
# @param [Integer] rid the request identifier (increases)
|
36
|
-
# @param [Integer] since the since field (-1 for last
|
36
|
+
# @param [Integer] since the since field (-1 for last or -2 all)
|
37
37
|
def initialize(rid, since = -1)
|
38
|
-
since = Time.now.to_i - since.to_i if since.is_a? Time
|
39
38
|
super create([RID, rid],
|
40
39
|
[CPU, since],
|
41
40
|
[NETWORK, since],
|
@@ -49,6 +48,30 @@ module Istat
|
|
49
48
|
end
|
50
49
|
|
51
50
|
class MeasurementResponse < Response
|
51
|
+
# parse the isr header request id
|
52
|
+
# @return [Integer] the request id
|
53
|
+
def rid
|
54
|
+
@root.attributes["rid"].to_i
|
55
|
+
end
|
56
|
+
|
57
|
+
# parse the isr header disk id
|
58
|
+
# @return [Integer] the disk sid
|
59
|
+
def sid_disk
|
60
|
+
@root.attributes["ds"].to_i
|
61
|
+
end
|
62
|
+
|
63
|
+
# parse the isr header temp sid
|
64
|
+
# @return [Integer] the temp sid
|
65
|
+
def sid_temp
|
66
|
+
@root.attributes["ts"].to_i
|
67
|
+
end
|
68
|
+
|
69
|
+
# parse the isr header fans sid
|
70
|
+
# @return [Integer] the fans sid
|
71
|
+
def sid_fans
|
72
|
+
@root.attributes["fs"].to_i
|
73
|
+
end
|
74
|
+
|
52
75
|
# returns true if there is a cpu section in the frame
|
53
76
|
def cpu?
|
54
77
|
has_node? :CPU
|
@@ -64,13 +87,15 @@ module Istat
|
|
64
87
|
# { :id => 28388973, :user => 0, :system => 0, :nice => 0 }
|
65
88
|
# ]
|
66
89
|
def cpu
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
90
|
+
if cpu?
|
91
|
+
map(:CPU) do |element, attributes|
|
92
|
+
{
|
93
|
+
:id => attributes["id"].to_i,
|
94
|
+
:user => attributes["u"].to_i,
|
95
|
+
:system => attributes["s"].to_i,
|
96
|
+
:nice => attributes["n"].to_i
|
97
|
+
}
|
98
|
+
end
|
74
99
|
end
|
75
100
|
end
|
76
101
|
|
@@ -79,29 +104,34 @@ module Istat
|
|
79
104
|
has_node? :NET
|
80
105
|
end
|
81
106
|
|
82
|
-
# collects all network information over the interfaces (can contain history)
|
107
|
+
# collects all network information over the interfaces (can contain history).
|
108
|
+
# Send and received values are byte numbers.
|
109
|
+
# @todo supports only one interface at the moment
|
83
110
|
# @return [Hash<Array<Hash>>] the network data for the interfaces
|
84
111
|
# @example Result
|
85
112
|
# {
|
86
113
|
# 1 => [
|
87
|
-
# { :id => 28388970, :
|
88
|
-
# { :id => 28388971, :
|
89
|
-
# { :id => 28388972, :
|
90
|
-
# { :id => 28388973, :
|
114
|
+
# { :id => 28388970, :received => 4177773, :send => 232278672, :time => <#Time ...> },
|
115
|
+
# { :id => 28388971, :received => 4177773, :send => 232278672, :time => <#Time ...> },
|
116
|
+
# { :id => 28388972, :received => 4177773, :send => 232278672, :time => <#Time ...> },
|
117
|
+
# { :id => 28388973, :received => 4177773, :send => 232278672, :time => <#Time ...> }
|
91
118
|
# ]
|
92
119
|
# }
|
93
120
|
#
|
94
121
|
def network
|
95
|
-
|
96
|
-
|
97
|
-
interfaces
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
122
|
+
if network?
|
123
|
+
interface_name = node(:NET).attributes["if"].to_i
|
124
|
+
interfaces = { interface_name => [] }
|
125
|
+
map(:NET) do |element, attributes|
|
126
|
+
interfaces[interface_name] << {
|
127
|
+
:id => attributes["id"].to_i,
|
128
|
+
:received => attributes["d"].to_i,
|
129
|
+
:send => attributes["u"].to_i,
|
130
|
+
:time => Time.at(attributes["t"].to_f)
|
131
|
+
}
|
132
|
+
end
|
133
|
+
interfaces
|
103
134
|
end
|
104
|
-
interfaces
|
105
135
|
end
|
106
136
|
|
107
137
|
# returns true if there is a memory section in the frame
|
@@ -125,18 +155,20 @@ module Istat
|
|
125
155
|
# }
|
126
156
|
#
|
127
157
|
def memory
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
158
|
+
if memory?
|
159
|
+
attributes = node(:MEM).attributes
|
160
|
+
{
|
161
|
+
:wired => attributes["w"].to_i,
|
162
|
+
:active => attributes["a"].to_i,
|
163
|
+
:inactive => attributes["i"].to_i,
|
164
|
+
:free => attributes["f"].to_i,
|
165
|
+
:total => attributes["t"].to_i,
|
166
|
+
:swap_used => attributes["su"].to_i,
|
167
|
+
:swap_total => attributes["st"].to_i,
|
168
|
+
:page_ins => attributes["pi"].to_i,
|
169
|
+
:page_outs => attributes["po"].to_i
|
170
|
+
}
|
171
|
+
end
|
140
172
|
end
|
141
173
|
|
142
174
|
# returns true if there is a load section in the frame
|
@@ -150,8 +182,10 @@ module Istat
|
|
150
182
|
# [0.54, 0.60, 0.67]
|
151
183
|
#
|
152
184
|
def load
|
153
|
-
|
154
|
-
|
185
|
+
if load?
|
186
|
+
attributes = node(:LOAD).attributes
|
187
|
+
[attributes["one"].to_f, attributes["fv"].to_f, attributes["ff"].to_f]
|
188
|
+
end
|
155
189
|
end
|
156
190
|
|
157
191
|
# returns true if there is a temps section in the frame
|
@@ -165,11 +199,13 @@ module Istat
|
|
165
199
|
# [30, 52, 29, 50, 30, 64, 61]
|
166
200
|
#
|
167
201
|
def temps
|
168
|
-
temps
|
169
|
-
|
170
|
-
|
202
|
+
if temps?
|
203
|
+
temps = []
|
204
|
+
map(:TEMPS) do |element, attributes|
|
205
|
+
temps[attributes["i"].to_i] = attributes["t"].to_i
|
206
|
+
end
|
207
|
+
temps
|
171
208
|
end
|
172
|
-
temps
|
173
209
|
end
|
174
210
|
|
175
211
|
# returns true if there is a fan section in the frame
|
@@ -183,11 +219,13 @@ module Istat
|
|
183
219
|
# [1999]
|
184
220
|
#
|
185
221
|
def fans
|
186
|
-
fans
|
187
|
-
|
188
|
-
|
222
|
+
if fans?
|
223
|
+
fans = []
|
224
|
+
map(:FANS) do |element, attributes|
|
225
|
+
fans[attributes["i"].to_i] = attributes["s"].to_i
|
226
|
+
end
|
227
|
+
fans
|
189
228
|
end
|
190
|
-
fans
|
191
229
|
end
|
192
230
|
|
193
231
|
# returns true if there is a uptime section in the frame
|
@@ -201,7 +239,9 @@ module Istat
|
|
201
239
|
# "Sat Apr 30 09:46:45 +0200 2011"
|
202
240
|
#
|
203
241
|
def uptime
|
204
|
-
|
242
|
+
if uptime?
|
243
|
+
Time.now - node(:UPT).attributes["u"].to_i
|
244
|
+
end
|
205
245
|
end
|
206
246
|
|
207
247
|
# returns true if there is a disks section in the frame
|
@@ -220,29 +260,41 @@ module Istat
|
|
220
260
|
# ]
|
221
261
|
#
|
222
262
|
def disks
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
263
|
+
if disks?
|
264
|
+
map(:DISKS) do |element, attributes|
|
265
|
+
{
|
266
|
+
:label => attributes["n"],
|
267
|
+
:uuid => attributes["uuid"],
|
268
|
+
:free => attributes["f"].to_i,
|
269
|
+
:percent_used => attributes["p"].to_f
|
270
|
+
}
|
271
|
+
end
|
230
272
|
end
|
231
273
|
end
|
232
274
|
|
233
275
|
protected
|
276
|
+
|
277
|
+
# searches for the node with the passed name
|
278
|
+
# @api private
|
279
|
+
# @return [REXML::Element] the node or nil
|
280
|
+
def node(name)
|
281
|
+
@root.elements["#{name}"]
|
282
|
+
end
|
234
283
|
|
235
|
-
#
|
284
|
+
# checks if a node is available in the frame
|
285
|
+
# @return [Boolean] true is if exists in the current frame
|
236
286
|
# @api private
|
237
287
|
def has_node?(name)
|
238
|
-
|
288
|
+
!node(name).nil?
|
239
289
|
end
|
240
290
|
|
241
291
|
# yields over the elements of a path
|
292
|
+
# @return [Array] an array of all results for the mapped elements
|
293
|
+
# @yield [REXML::Element, REXML::Attributes] the block values to map
|
242
294
|
# @api private
|
243
|
-
def
|
295
|
+
def map(name, &block)
|
244
296
|
entries = []
|
245
|
-
|
297
|
+
node(name).map do |element|
|
246
298
|
unless element.is_a? REXML::Text
|
247
299
|
entries << block.call(element, element.attributes)
|
248
300
|
end
|
@@ -29,6 +29,9 @@ module Istat
|
|
29
29
|
end
|
30
30
|
|
31
31
|
class RegisterResponse < Response
|
32
|
+
MACOSX = 1
|
33
|
+
OTHER_UNIX = 2
|
34
|
+
|
32
35
|
# check if the user has to authorize using password
|
33
36
|
# @return [Boolean] true if the user should authorize
|
34
37
|
def authorize?
|
@@ -37,13 +40,13 @@ module Istat
|
|
37
40
|
|
38
41
|
# calculate the uptime value
|
39
42
|
# @return [Integer] a timestamp (Time.now - val)
|
40
|
-
def
|
43
|
+
def last_uptime
|
41
44
|
@root.attributes["n"].to_i
|
42
45
|
end
|
43
46
|
|
44
|
-
# calculate the
|
47
|
+
# calculate the current uptime value
|
45
48
|
# @return [Integer] a timestamp (Time.now - val)
|
46
|
-
def
|
49
|
+
def uptime
|
47
50
|
@root.attributes["c"].to_i
|
48
51
|
end
|
49
52
|
|
@@ -52,10 +55,21 @@ module Istat
|
|
52
55
|
@root.attributes["ss"].to_i
|
53
56
|
end
|
54
57
|
|
58
|
+
# parse the platform of the remote system
|
55
59
|
# @return static value 2
|
56
|
-
def
|
60
|
+
def platform
|
57
61
|
@root.attributes["pl"].to_i
|
58
62
|
end
|
63
|
+
|
64
|
+
# @return [Boolean] true if the remote system is a unix (linux, freebsd, solaris)
|
65
|
+
def other_unix?
|
66
|
+
platform == OTHER_UNIX
|
67
|
+
end
|
68
|
+
|
69
|
+
# @return [Boolean] true if the remote system is a mac os x
|
70
|
+
def macosx?
|
71
|
+
platform == MACOSX
|
72
|
+
end
|
59
73
|
end
|
60
74
|
end
|
61
75
|
end
|
data/lib/istat/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -47,4 +47,13 @@ describe Istat::Client do
|
|
47
47
|
response.disks?.should be_true
|
48
48
|
end
|
49
49
|
end
|
50
|
+
|
51
|
+
it "if ask data for two different time spans i should get different result set sizes" do
|
52
|
+
@client.start do |session|
|
53
|
+
response = session.fetch_all
|
54
|
+
result = response.cpu.size
|
55
|
+
response = session.fetch
|
56
|
+
response.cpu.size.should < result
|
57
|
+
end
|
58
|
+
end
|
50
59
|
end
|
@@ -46,7 +46,14 @@ describe "Measurement" do
|
|
46
46
|
</isr>
|
47
47
|
})
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
|
+
it "should be possible to parse the isr header" do
|
51
|
+
@frame.rid.should == 1
|
52
|
+
@frame.sid_disk.should == 0
|
53
|
+
@frame.sid_temp.should == 0
|
54
|
+
@frame.sid_fans.should == 0
|
55
|
+
end
|
56
|
+
|
50
57
|
it "should be possible to parse the cpus" do
|
51
58
|
@frame.cpu?.should be_true
|
52
59
|
@frame.cpu.should == [
|
@@ -61,10 +68,10 @@ describe "Measurement" do
|
|
61
68
|
@frame.network?.should be_true
|
62
69
|
@frame.network.should == {
|
63
70
|
1 => [
|
64
|
-
{ :id => 28388970, :
|
65
|
-
{ :id => 28388971, :
|
66
|
-
{ :id => 28388972, :
|
67
|
-
{ :id => 28388973, :
|
71
|
+
{ :id => 28388970, :received => 4177773, :send => 232278672, :time => Time.at(1304082088) },
|
72
|
+
{ :id => 28388971, :received => 4177773, :send => 232278672, :time => Time.at(1304082089) },
|
73
|
+
{ :id => 28388972, :received => 4177773, :send => 232278672, :time => Time.at(1304082090) },
|
74
|
+
{ :id => 28388973, :received => 4177773, :send => 232278672, :time => Time.at(1304082091) }
|
68
75
|
]
|
69
76
|
}
|
70
77
|
end
|
@@ -113,5 +120,19 @@ describe "Measurement" do
|
|
113
120
|
:percent_used => 39.931
|
114
121
|
]
|
115
122
|
end
|
123
|
+
|
124
|
+
it "should be possible to request all data without getting an error" do
|
125
|
+
@frame = Istat::Frames::MeasurementResponse.new(%Q{
|
126
|
+
<?xml version="1.0" encoding="UTF-8"?><isr></isr>
|
127
|
+
})
|
128
|
+
@frame.cpu.should == nil
|
129
|
+
@frame.network.should == nil
|
130
|
+
@frame.memory.should == nil
|
131
|
+
@frame.load.should == nil
|
132
|
+
@frame.uptime.should == nil
|
133
|
+
@frame.temps.should == nil
|
134
|
+
@frame.fans.should == nil
|
135
|
+
@frame.disks.should == nil
|
136
|
+
end
|
116
137
|
end
|
117
138
|
end
|
@@ -13,10 +13,11 @@ describe "Registration" do
|
|
13
13
|
xml = %Q{<?xml version="1.0" encoding="UTF-8"?><isr pl="2" ath="1" ss="6" c="28406490" n="28406489"></isr>}
|
14
14
|
frame = Istat::Frames::RegisterResponse.new(xml)
|
15
15
|
frame.ss.should == 6
|
16
|
-
frame.
|
17
|
-
frame.
|
16
|
+
frame.last_uptime == 28406489
|
17
|
+
frame.uptime.should == 28406490
|
18
18
|
frame.authorize?.should be_true
|
19
|
-
frame.
|
19
|
+
frame.platform.should == 2
|
20
|
+
frame.other_unix?.should be_true
|
20
21
|
end
|
21
22
|
end
|
22
23
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: istat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Vincent Landgaf
|
@@ -45,20 +45,6 @@ extra_rdoc_files: []
|
|
45
45
|
|
46
46
|
files:
|
47
47
|
- debug.log
|
48
|
-
- doc/_index.html
|
49
|
-
- doc/class_list.html
|
50
|
-
- doc/css/common.css
|
51
|
-
- doc/css/full_list.css
|
52
|
-
- doc/css/style.css
|
53
|
-
- doc/file.README.html
|
54
|
-
- doc/file_list.html
|
55
|
-
- doc/frames.html
|
56
|
-
- doc/index.html
|
57
|
-
- doc/js/app.js
|
58
|
-
- doc/js/full_list.js
|
59
|
-
- doc/js/jquery.js
|
60
|
-
- doc/method_list.html
|
61
|
-
- doc/top-level-namespace.html
|
62
48
|
- istat.gemspec
|
63
49
|
- lib/istat/client.rb
|
64
50
|
- lib/istat/frames/authentication.rb
|
data/doc/_index.html
DELETED
@@ -1,82 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
-
<head>
|
5
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
-
<title>Documentation by YARD 0.6.8</title>
|
7
|
-
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
-
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
9
|
-
|
10
|
-
<script type="text/javascript" charset="utf-8">
|
11
|
-
relpath = '';
|
12
|
-
if (relpath != '') relpath += '/';
|
13
|
-
</script>
|
14
|
-
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
15
|
-
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
16
|
-
|
17
|
-
</head>
|
18
|
-
<body>
|
19
|
-
<script type="text/javascript" charset="utf-8">
|
20
|
-
if (window.top.frames.main) document.body.className = 'frames';
|
21
|
-
</script>
|
22
|
-
|
23
|
-
<div id="header">
|
24
|
-
<div id="menu">
|
25
|
-
|
26
|
-
|
27
|
-
<span class="title"></span>
|
28
|
-
|
29
|
-
|
30
|
-
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
31
|
-
</div>
|
32
|
-
|
33
|
-
<div id="search">
|
34
|
-
<a id="class_list_link" href="#">Class List</a>
|
35
|
-
<a id="method_list_link" href="#">Method List</a>
|
36
|
-
<a id ="file_list_link" href="#">File List</a>
|
37
|
-
</div>
|
38
|
-
|
39
|
-
<div class="clear"></div>
|
40
|
-
</div>
|
41
|
-
|
42
|
-
<iframe id="search_frame"></iframe>
|
43
|
-
|
44
|
-
<div id="content"><h1 class="noborder title">Documentation by YARD 0.6.8</h1>
|
45
|
-
<div id="listing">
|
46
|
-
<h1 class="alphaindex">Alphabetic Index</h1>
|
47
|
-
|
48
|
-
<h2>File Listing</h2>
|
49
|
-
<ul id="files">
|
50
|
-
|
51
|
-
|
52
|
-
<li class="r1"><a href="index.html" title="README">README</a></li>
|
53
|
-
|
54
|
-
|
55
|
-
</ul>
|
56
|
-
|
57
|
-
<div class="clear"></div>
|
58
|
-
<h2>Namespace Listing A-Z</h2>
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
<table>
|
64
|
-
<tr>
|
65
|
-
<td valign='top' width="33%">
|
66
|
-
|
67
|
-
</td>
|
68
|
-
</tr>
|
69
|
-
</table>
|
70
|
-
|
71
|
-
</div>
|
72
|
-
|
73
|
-
</div>
|
74
|
-
|
75
|
-
<div id="footer">
|
76
|
-
Generated on Fri Apr 29 23:16:06 2011 by
|
77
|
-
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
78
|
-
0.6.8 (ruby-1.8.7).
|
79
|
-
</div>
|
80
|
-
|
81
|
-
</body>
|
82
|
-
</html>
|
data/doc/class_list.html
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
-
<html>
|
4
|
-
<head>
|
5
|
-
<meta name="Content-Type" content="text/html; charset=utf-8" />
|
6
|
-
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
|
7
|
-
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
-
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
9
|
-
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
|
10
|
-
<base id="base_target" target="_parent" />
|
11
|
-
</head>
|
12
|
-
<body>
|
13
|
-
<script type="text/javascript" charset="utf-8">
|
14
|
-
if (window.top.frames.main) {
|
15
|
-
document.getElementById('base_target').target = 'main';
|
16
|
-
document.body.className = 'frames';
|
17
|
-
}
|
18
|
-
</script>
|
19
|
-
<div id="content">
|
20
|
-
<h1 id="full_list_header">Class List</h1>
|
21
|
-
<div id="nav">
|
22
|
-
<a target="_self" href="class_list.html">Classes</a> |
|
23
|
-
<a target="_self" href="method_list.html">Methods</a> |
|
24
|
-
<a target="_self" href="file_list.html">Files</a>
|
25
|
-
</div>
|
26
|
-
<div id="search">Search: <input type="text" /></div>
|
27
|
-
|
28
|
-
<ul id="full_list" class="class">
|
29
|
-
<li><span class='object_link'><a href="top-level-namespace.html" title=" (root)">Top Level Namespace</a></span></li>
|
30
|
-
|
31
|
-
|
32
|
-
</ul>
|
33
|
-
</div>
|
34
|
-
</body>
|
35
|
-
</html>
|
36
|
-
|
data/doc/css/common.css
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
/* Override this file with custom rules */
|
data/doc/css/full_list.css
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
body {
|
2
|
-
margin: 0;
|
3
|
-
font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
|
4
|
-
font-size: 13px;
|
5
|
-
height: 101%;
|
6
|
-
overflow-x: hidden;
|
7
|
-
}
|
8
|
-
|
9
|
-
h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; }
|
10
|
-
.clear { clear: both; }
|
11
|
-
#search { position: absolute; right: 5px; top: 9px; padding-left: 24px; }
|
12
|
-
#content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; }
|
13
|
-
#full_list { padding: 0; list-style: none; margin-left: 0; }
|
14
|
-
#full_list ul { padding: 0; }
|
15
|
-
#full_list li { padding: 5px; padding-left: 12px; margin: 0; font-size: 1.1em; list-style: none; }
|
16
|
-
#noresults { padding: 7px 12px; }
|
17
|
-
#content.insearch #noresults { margin-left: 7px; }
|
18
|
-
ul.collapsed ul, ul.collapsed li { display: none; }
|
19
|
-
li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; }
|
20
|
-
li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; }
|
21
|
-
li { color: #888; cursor: pointer; }
|
22
|
-
li.deprecated { text-decoration: line-through; font-style: italic; }
|
23
|
-
li.r1 { background: #f0f0f0; }
|
24
|
-
li.r2 { background: #fafafa; }
|
25
|
-
li:hover { background: #ddd; }
|
26
|
-
li small:before { content: "("; }
|
27
|
-
li small:after { content: ")"; }
|
28
|
-
li small.search_info { display: none; }
|
29
|
-
a:link, a:visited { text-decoration: none; color: #05a; }
|
30
|
-
li.clicked { background: #05a; color: #ccc; }
|
31
|
-
li.clicked a:link, li.clicked a:visited { color: #eee; }
|
32
|
-
li.clicked a.toggle { opacity: 0.5; background-position: bottom right; }
|
33
|
-
li.collapsed.clicked a.toggle { background-position: top right; }
|
34
|
-
#search input { border: 1px solid #bbb; -moz-border-radius: 3px; -webkit-border-radius: 3px; }
|
35
|
-
#nav { margin-left: 10px; font-size: 0.9em; display: none; color: #aaa; }
|
36
|
-
#nav a:link, #nav a:visited { color: #358; }
|
37
|
-
#nav a:hover { background: transparent; color: #5af; }
|
38
|
-
|
39
|
-
.frames #content h1 { margin-top: 0; }
|
40
|
-
.frames li { white-space: nowrap; cursor: normal; }
|
41
|
-
.frames li small { display: block; font-size: 0.8em; }
|
42
|
-
.frames li small:before { content: ""; }
|
43
|
-
.frames li small:after { content: ""; }
|
44
|
-
.frames li small.search_info { display: none; }
|
45
|
-
.frames #search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; }
|
46
|
-
.frames #content.insearch #search { background-position: center right; }
|
47
|
-
.frames #search input { width: 110px; }
|
48
|
-
.frames #nav { display: block; }
|
49
|
-
|
50
|
-
#full_list.insearch li { display: none; }
|
51
|
-
#full_list.insearch li.found { display: list-item; padding-left: 10px; }
|
52
|
-
#full_list.insearch li a.toggle { display: none; }
|
53
|
-
#full_list.insearch li small.search_info { display: block; }
|