siffer 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. data/Rakefile +2 -2
  2. data/doc/rdoc/classes/Siffer.html +253 -368
  3. data/doc/rdoc/classes/Siffer/Agent.html +169 -288
  4. data/doc/rdoc/classes/Siffer/Container.html +158 -279
  5. data/doc/rdoc/classes/Siffer/Messages.html +79 -139
  6. data/doc/rdoc/classes/Siffer/Messages/Ack.html +109 -210
  7. data/doc/rdoc/classes/Siffer/Messages/Acl.html +78 -155
  8. data/doc/rdoc/classes/Siffer/Messages/Error.html +151 -242
  9. data/doc/rdoc/classes/Siffer/Messages/Message.html +227 -351
  10. data/doc/rdoc/classes/Siffer/Messages/Message/Header.html +102 -176
  11. data/doc/rdoc/classes/Siffer/Messages/Register.html +147 -250
  12. data/doc/rdoc/classes/Siffer/Messages/RequestBody.html +177 -292
  13. data/doc/rdoc/classes/Siffer/Messages/Status.html +149 -262
  14. data/doc/rdoc/classes/Siffer/Messaging.html +204 -323
  15. data/doc/rdoc/classes/Siffer/Protocol.html +246 -380
  16. data/doc/rdoc/classes/Siffer/Protocol/NonPostRequest.html +53 -110
  17. data/doc/rdoc/classes/Siffer/Protocol/UnknownPath.html +53 -110
  18. data/doc/rdoc/classes/Siffer/Registration.html +243 -383
  19. data/doc/rdoc/classes/Siffer/Request.html +97 -203
  20. data/doc/rdoc/classes/Siffer/RequestLogger.html +102 -204
  21. data/doc/rdoc/classes/Siffer/Response.html +85 -176
  22. data/doc/rdoc/classes/Siffer/Server.html +150 -236
  23. data/doc/rdoc/created.rid +1 -1
  24. data/doc/rdoc/files/LICENSE.html +75 -128
  25. data/doc/rdoc/files/README_rdoc.html +130 -183
  26. data/doc/rdoc/files/lib/siffer/agent_rb.html +49 -0
  27. data/doc/rdoc/files/lib/siffer/container_rb.html +57 -0
  28. data/doc/rdoc/files/lib/siffer/messages/ack_rb.html +49 -0
  29. data/doc/rdoc/files/lib/siffer/messages/acl_rb.html +49 -0
  30. data/doc/rdoc/files/lib/siffer/messages/error_rb.html +49 -0
  31. data/doc/rdoc/files/lib/siffer/messages/message_rb.html +49 -0
  32. data/doc/rdoc/files/lib/siffer/messages/register_rb.html +49 -0
  33. data/doc/rdoc/files/lib/siffer/messages/request_body_rb.html +49 -0
  34. data/doc/rdoc/files/lib/siffer/messages/status_rb.html +49 -0
  35. data/doc/rdoc/files/lib/siffer/messages_rb.html +63 -0
  36. data/doc/rdoc/files/lib/siffer/messaging_rb.html +49 -0
  37. data/doc/rdoc/files/lib/siffer/protocol_rb.html +49 -0
  38. data/doc/rdoc/files/lib/siffer/registration_rb.html +49 -0
  39. data/doc/rdoc/files/lib/siffer/request_logger_rb.html +49 -0
  40. data/doc/rdoc/files/lib/siffer/request_rb.html +49 -0
  41. data/doc/rdoc/files/lib/siffer/response_rb.html +49 -0
  42. data/doc/rdoc/files/lib/siffer/server_rb.html +49 -0
  43. data/doc/rdoc/files/lib/siffer_rb.html +62 -113
  44. data/doc/rdoc/fr_class_index.html +25 -47
  45. data/doc/rdoc/fr_file_index.html +39 -46
  46. data/doc/rdoc/fr_method_index.html +4539 -96
  47. data/doc/rdoc/index.html +14 -23
  48. data/doc/rdoc/rdoc-style.css +314 -203
  49. data/lib/siffer.rb +6 -6
  50. data/lib/{agent.rb → siffer/agent.rb} +5 -3
  51. data/lib/{container.rb → siffer/container.rb} +3 -5
  52. data/lib/siffer/messages.rb +7 -0
  53. data/lib/{messages → siffer/messages}/ack.rb +0 -0
  54. data/lib/{messages → siffer/messages}/acl.rb +0 -0
  55. data/lib/{messages → siffer/messages}/error.rb +0 -0
  56. data/lib/{messages → siffer/messages}/message.rb +0 -0
  57. data/lib/{messages → siffer/messages}/register.rb +0 -0
  58. data/lib/{messages → siffer/messages}/request_body.rb +0 -0
  59. data/lib/{messages → siffer/messages}/status.rb +0 -0
  60. data/lib/{messaging.rb → siffer/messaging.rb} +8 -5
  61. data/lib/{protocol.rb → siffer/protocol.rb} +37 -32
  62. data/lib/{registration.rb → siffer/registration.rb} +2 -2
  63. data/lib/siffer/request.rb +28 -0
  64. data/lib/{request_logger.rb → siffer/request_logger.rb} +8 -7
  65. data/lib/{response.rb → siffer/response.rb} +1 -1
  66. data/lib/{server.rb → siffer/server.rb} +5 -3
  67. data/spec/agent_spec.rb +6 -11
  68. data/spec/container_spec.rb +2 -2
  69. data/spec/default_agent +1 -1
  70. data/spec/messaging_spec.rb +3 -6
  71. data/spec/protocol_spec.rb +27 -26
  72. data/spec/registration_spec.rb +2 -2
  73. data/spec/request_logger_spec.rb +22 -9
  74. data/spec/request_spec.rb +15 -0
  75. data/spec/response_spec.rb +2 -2
  76. data/spec/server_spec.rb +0 -5
  77. data/spec/spec_helper.rb +9 -0
  78. metadata +40 -38
  79. data/doc/rdoc/files/lib/agent_rb.html +0 -101
  80. data/doc/rdoc/files/lib/container_rb.html +0 -108
  81. data/doc/rdoc/files/lib/messages/ack_rb.html +0 -101
  82. data/doc/rdoc/files/lib/messages/acl_rb.html +0 -101
  83. data/doc/rdoc/files/lib/messages/error_rb.html +0 -101
  84. data/doc/rdoc/files/lib/messages/message_rb.html +0 -101
  85. data/doc/rdoc/files/lib/messages/register_rb.html +0 -101
  86. data/doc/rdoc/files/lib/messages/request_body_rb.html +0 -101
  87. data/doc/rdoc/files/lib/messages/status_rb.html +0 -101
  88. data/doc/rdoc/files/lib/messages_rb.html +0 -114
  89. data/doc/rdoc/files/lib/messaging_rb.html +0 -101
  90. data/doc/rdoc/files/lib/protocol_rb.html +0 -101
  91. data/doc/rdoc/files/lib/registration_rb.html +0 -101
  92. data/doc/rdoc/files/lib/request_logger_rb.html +0 -101
  93. data/doc/rdoc/files/lib/request_rb.html +0 -101
  94. data/doc/rdoc/files/lib/response_rb.html +0 -101
  95. data/doc/rdoc/files/lib/server_rb.html +0 -101
  96. data/lib/messages.rb +0 -7
  97. data/lib/request.rb +0 -25
@@ -19,14 +19,14 @@ describe Siffer::Registration do
19
19
  msg.content do |xml|
20
20
  xml.SIF_Ping
21
21
  end
22
- res = Rack::MockRequest.new(@server).post("/",:input => msg)
22
+ res = response_to(msg)
23
23
  res.body.should match(/SIF_Category>4/)
24
24
  res.body.should match(/SIF_Code>9/)
25
25
  end
26
26
 
27
27
  it "should return ACL for successful registration" do
28
28
  msg = Siffer::Messages::Register.new("Default Agent", "Default Agent")
29
- res = Rack::MockRequest.new(@server).post("/",:input => msg)
29
+ res = response_to(msg)
30
30
  res.body.should match(/SIF_Ack/)
31
31
  res.body.should match(/SIF_Status/)
32
32
  end
@@ -1,15 +1,28 @@
1
1
  require File.join(File.dirname(__FILE__),"spec_helper")
2
2
 
3
3
  describe Siffer::RequestLogger do
4
- msg = "<SIF_Message><SIF_SystemControl><SIF_Ping /></SIF_SystemControl></SIF_Message>"
5
-
6
- it "should log requests" do
7
- log = []
8
- app = Rack::Builder.new do
9
- use Siffer::RequestLogger, log
4
+ msg = "<SIF_Message><SIF_SystemControl><SIF_Ping /><SIF_Header><SIF_SourceId>Test Source</SIF_SourceId></SIF_Header></SIF_SystemControl></SIF_Message>"
5
+
6
+ before(:each) do
7
+ @@log = []
8
+ @app = Rack::Builder.new do
9
+ use Siffer::RequestLogger, @@log
10
10
  run Siffer::Server.new("admin" => "none")
11
- end
12
- res = Rack::MockRequest.new(app).post("/", :input => msg)
13
- log.size.should == 1
11
+ end
12
+ end
13
+
14
+ it "should log requests" do
15
+ res = Rack::MockRequest.new(@app).post("/", :input => msg)
16
+ @@log.size.should == 1
17
+ end
18
+
19
+ it "should identify SIF_Source in log message" do
20
+ res = Rack::MockRequest.new(@app).post("/", :input => msg)
21
+ @@log[0].should match(/Ping request made by Test Source/)
22
+ end
23
+
24
+ it "should ignore request bodies that are not SIF based" do
25
+ res = Rack::MockRequest.new(@app).get("/")
26
+ @@log[0].should match(/Unknown request made by Unknown Source/)
14
27
  end
15
28
  end
@@ -1,5 +1,10 @@
1
1
  require File.join(File.dirname(__FILE__), "spec_helper")
2
2
 
3
+ # setup messages to use for mock requests
4
+ ping = "<SIF_Message><SIF_SystemControl><SIF_Ping /></SIF_SystemControl></SIF_Message>"
5
+ status = "<SIF_Message><SIF_SystemControl><SIF_Status /></SIF_SystemControl></SIF_Message>"
6
+ register = "<SIF_Message><SIF_Register /></SIF_Message>"
7
+
3
8
  describe Siffer::Request do
4
9
  it "should provide access to the body as a SIF_Message (Siffer::Message)" do
5
10
  msg = Siffer::Messages::Register.new("register-source","source-name")
@@ -7,4 +12,14 @@ describe Siffer::Request do
7
12
  request.message.type.should == "Register"
8
13
  request.message.source_id.should == "register-source"
9
14
  end
15
+
16
+ it "should identify message by predicate through body" do
17
+ Siffer::Protocol::ACCEPTABLE_PATHS.each do |name,path|
18
+ unless name == :root
19
+ req = Siffer::Request.new("rack.input" => eval(name.to_s))
20
+ req.should eval("be_#{name.to_s}")
21
+ end
22
+ end
23
+ end
24
+
10
25
  end
@@ -4,9 +4,9 @@ require 'webrick'
4
4
  Thread.abort_on_exception = true
5
5
 
6
6
  describe Siffer::Response do
7
- it "should default content-type to application/xml" do
7
+ it "should default content-type to application/xml with UTF-8" do
8
8
  response = Siffer::Response.new()
9
- response.content_type.should == Siffer::Messaging::MIME_TYPES["appxml"]
9
+ response.content_type.should == Siffer::Messaging::MIME_TYPES["appxmlencoded"]
10
10
  end
11
11
 
12
12
  it "should receive response from url,data" do
@@ -27,9 +27,4 @@ describe Siffer::Server do
27
27
  }.should raise_error("Administration URL required")
28
28
  end
29
29
 
30
- it "should respond to uri" do
31
- server = Siffer::Server.new("admin" => 'none')
32
- server.uri.should == "http://localhost:8300"
33
- end
34
-
35
30
  end
@@ -19,8 +19,17 @@ end
19
19
  # the Response object for each Request.
20
20
  def for_every_path(options = {}, &block)
21
21
  component = options.delete(:on)
22
+ options["CONTENT_TYPE"] ||= Siffer::Messaging::MIME_TYPES["appxml"]
22
23
  Siffer::Protocol::ACCEPTABLE_PATHS.each do |name,path|
23
24
  res = Rack::MockRequest.new(component).post(path,options)
24
25
  yield res
25
26
  end
27
+ end
28
+
29
+ # Provides the minium to get a response from a Siffer::Server
30
+ def response_to(msg, &block)
31
+ Rack::MockRequest.new(Siffer::Server.new("admin" => "none")
32
+ ).post("/",{
33
+ :input => msg,
34
+ "CONTENT_TYPE" => Siffer::Messaging::MIME_TYPES["appxml"]})
26
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: siffer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clint Hill
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-19 00:00:00 -07:00
12
+ date: 2009-01-25 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -85,24 +85,25 @@ files:
85
85
  - spec/response_spec.rb
86
86
  - spec/server_spec.rb
87
87
  - spec/spec_helper.rb
88
- - lib/agent.rb
89
- - lib/container.rb
90
- - lib/messages
91
- - lib/messages/ack.rb
92
- - lib/messages/acl.rb
93
- - lib/messages/error.rb
94
- - lib/messages/message.rb
95
- - lib/messages/register.rb
96
- - lib/messages/request_body.rb
97
- - lib/messages/status.rb
98
- - lib/messages.rb
99
- - lib/messaging.rb
100
- - lib/protocol.rb
101
- - lib/registration.rb
102
- - lib/request.rb
103
- - lib/request_logger.rb
104
- - lib/response.rb
105
- - lib/server.rb
88
+ - lib/siffer
89
+ - lib/siffer/agent.rb
90
+ - lib/siffer/container.rb
91
+ - lib/siffer/messages
92
+ - lib/siffer/messages/ack.rb
93
+ - lib/siffer/messages/acl.rb
94
+ - lib/siffer/messages/error.rb
95
+ - lib/siffer/messages/message.rb
96
+ - lib/siffer/messages/register.rb
97
+ - lib/siffer/messages/request_body.rb
98
+ - lib/siffer/messages/status.rb
99
+ - lib/siffer/messages.rb
100
+ - lib/siffer/messaging.rb
101
+ - lib/siffer/protocol.rb
102
+ - lib/siffer/registration.rb
103
+ - lib/siffer/request.rb
104
+ - lib/siffer/request_logger.rb
105
+ - lib/siffer/response.rb
106
+ - lib/siffer/server.rb
106
107
  - lib/siffer.rb
107
108
  - doc/rdoc
108
109
  - doc/rdoc/classes
@@ -134,24 +135,25 @@ files:
134
135
  - doc/rdoc/created.rid
135
136
  - doc/rdoc/files
136
137
  - doc/rdoc/files/lib
137
- - doc/rdoc/files/lib/agent_rb.html
138
- - doc/rdoc/files/lib/container_rb.html
139
- - doc/rdoc/files/lib/messages
140
- - doc/rdoc/files/lib/messages/ack_rb.html
141
- - doc/rdoc/files/lib/messages/acl_rb.html
142
- - doc/rdoc/files/lib/messages/error_rb.html
143
- - doc/rdoc/files/lib/messages/message_rb.html
144
- - doc/rdoc/files/lib/messages/register_rb.html
145
- - doc/rdoc/files/lib/messages/request_body_rb.html
146
- - doc/rdoc/files/lib/messages/status_rb.html
147
- - doc/rdoc/files/lib/messages_rb.html
148
- - doc/rdoc/files/lib/messaging_rb.html
149
- - doc/rdoc/files/lib/protocol_rb.html
150
- - doc/rdoc/files/lib/registration_rb.html
151
- - doc/rdoc/files/lib/request_logger_rb.html
152
- - doc/rdoc/files/lib/request_rb.html
153
- - doc/rdoc/files/lib/response_rb.html
154
- - doc/rdoc/files/lib/server_rb.html
138
+ - doc/rdoc/files/lib/siffer
139
+ - doc/rdoc/files/lib/siffer/agent_rb.html
140
+ - doc/rdoc/files/lib/siffer/container_rb.html
141
+ - doc/rdoc/files/lib/siffer/messages
142
+ - doc/rdoc/files/lib/siffer/messages/ack_rb.html
143
+ - doc/rdoc/files/lib/siffer/messages/acl_rb.html
144
+ - doc/rdoc/files/lib/siffer/messages/error_rb.html
145
+ - doc/rdoc/files/lib/siffer/messages/message_rb.html
146
+ - doc/rdoc/files/lib/siffer/messages/register_rb.html
147
+ - doc/rdoc/files/lib/siffer/messages/request_body_rb.html
148
+ - doc/rdoc/files/lib/siffer/messages/status_rb.html
149
+ - doc/rdoc/files/lib/siffer/messages_rb.html
150
+ - doc/rdoc/files/lib/siffer/messaging_rb.html
151
+ - doc/rdoc/files/lib/siffer/protocol_rb.html
152
+ - doc/rdoc/files/lib/siffer/registration_rb.html
153
+ - doc/rdoc/files/lib/siffer/request_logger_rb.html
154
+ - doc/rdoc/files/lib/siffer/request_rb.html
155
+ - doc/rdoc/files/lib/siffer/response_rb.html
156
+ - doc/rdoc/files/lib/siffer/server_rb.html
155
157
  - doc/rdoc/files/lib/siffer_rb.html
156
158
  - doc/rdoc/files/LICENSE.html
157
159
  - doc/rdoc/files/README_rdoc.html
@@ -1,101 +0,0 @@
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: agent.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>agent.rb</h1>
51
- <table class="header-table">
52
- <tr class="top-aligned-row">
53
- <td><strong>Path:</strong></td>
54
- <td>lib/agent.rb
55
- </td>
56
- </tr>
57
- <tr class="top-aligned-row">
58
- <td><strong>Last Update:</strong></td>
59
- <td>Sat Jan 17 23:26:22 -0700 2009</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
-
73
- </div>
74
-
75
-
76
- </div>
77
-
78
-
79
- <!-- if includes -->
80
-
81
- <div id="section">
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
- <!-- if method_list -->
91
-
92
-
93
- </div>
94
-
95
-
96
- <div id="validator-badges">
97
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
98
- </div>
99
-
100
- </body>
101
- </html>
@@ -1,108 +0,0 @@
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: container.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>container.rb</h1>
51
- <table class="header-table">
52
- <tr class="top-aligned-row">
53
- <td><strong>Path:</strong></td>
54
- <td>lib/container.rb
55
- </td>
56
- </tr>
57
- <tr class="top-aligned-row">
58
- <td><strong>Last Update:</strong></td>
59
- <td>Sun Dec 28 10:26:15 -0700 2008</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
- daemons/daemonize&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>
@@ -1,101 +0,0 @@
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: ack.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>ack.rb</h1>
51
- <table class="header-table">
52
- <tr class="top-aligned-row">
53
- <td><strong>Path:</strong></td>
54
- <td>lib/messages/ack.rb
55
- </td>
56
- </tr>
57
- <tr class="top-aligned-row">
58
- <td><strong>Last Update:</strong></td>
59
- <td>Sat Jan 17 13:55:33 -0700 2009</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
-
73
- </div>
74
-
75
-
76
- </div>
77
-
78
-
79
- <!-- if includes -->
80
-
81
- <div id="section">
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
- <!-- if method_list -->
91
-
92
-
93
- </div>
94
-
95
-
96
- <div id="validator-badges">
97
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
98
- </div>
99
-
100
- </body>
101
- </html>