wee 0.3.1 → 0.4.0

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 (92) hide show
  1. data/README +0 -1
  2. data/Rakefile +5 -0
  3. data/TODO +6 -0
  4. data/doc/rdoc/classes/Enumerable.html +6 -6
  5. data/doc/rdoc/classes/Wee/AnswerDecoration.html +10 -10
  6. data/doc/rdoc/classes/Wee/Application.html +110 -52
  7. data/doc/rdoc/classes/Wee/Brush/ActionCallbackMixin.html +8 -15
  8. data/doc/rdoc/classes/Wee/Brush/ActionURLCallbackMixin.html +8 -19
  9. data/doc/rdoc/classes/Wee/Brush/AnchorTag.html +22 -22
  10. data/doc/rdoc/classes/Wee/Brush/FileUploadTag.html +156 -0
  11. data/doc/rdoc/classes/Wee/Brush/FormTag.html +50 -25
  12. data/doc/rdoc/classes/Wee/Brush/GenericEncodedTextBrush.html +12 -12
  13. data/doc/rdoc/classes/Wee/Brush/GenericTagBrush.html +36 -36
  14. data/doc/rdoc/classes/Wee/Brush/GenericTextBrush.html +12 -12
  15. data/doc/rdoc/classes/Wee/Brush/ImageButtonTag.html +16 -16
  16. data/doc/rdoc/classes/Wee/Brush/InputCallbackMixin.html +8 -15
  17. data/doc/rdoc/classes/Wee/Brush/InputTag.html +12 -12
  18. data/doc/rdoc/classes/Wee/Brush/Page.html +14 -14
  19. data/doc/rdoc/classes/Wee/Brush/SelectListTag.html +28 -28
  20. data/doc/rdoc/classes/Wee/Brush/SelectOptionTag.html +14 -14
  21. data/doc/rdoc/classes/Wee/Brush/SubmitButtonTag.html +7 -7
  22. data/doc/rdoc/classes/Wee/Brush/TableDataTag.html +14 -14
  23. data/doc/rdoc/classes/Wee/Brush/TableHeaderTag.html +7 -7
  24. data/doc/rdoc/classes/Wee/Brush/TableRowTag.html +36 -36
  25. data/doc/rdoc/classes/Wee/Brush/TableTag.html +6 -6
  26. data/doc/rdoc/classes/Wee/Brush/TextAreaTag.html +28 -28
  27. data/doc/rdoc/classes/Wee/Brush/TextInputTag.html +7 -7
  28. data/doc/rdoc/classes/Wee/Brush.html +19 -19
  29. data/doc/rdoc/classes/Wee/CallbackRegistry.html +33 -33
  30. data/doc/rdoc/classes/Wee/CallbackStream.html +18 -18
  31. data/doc/rdoc/classes/Wee/Canvas.html +24 -24
  32. data/doc/rdoc/classes/Wee/Component.html +163 -138
  33. data/doc/rdoc/classes/Wee/Decoration.html +72 -41
  34. data/doc/rdoc/classes/Wee/Delegate.html +31 -31
  35. data/doc/rdoc/classes/Wee/ErrorResponse.html +12 -12
  36. data/doc/rdoc/classes/Wee/GenericResponse.html +6 -6
  37. data/doc/rdoc/classes/Wee/Helper.html +148 -0
  38. data/doc/rdoc/classes/Wee/HtmlCanvas.html +267 -166
  39. data/doc/rdoc/classes/Wee/HtmlWriter.html +40 -40
  40. data/doc/rdoc/classes/Wee/LiteralMethodCallback.html +12 -12
  41. data/doc/rdoc/classes/Wee/PageDecoration.html +199 -0
  42. data/doc/rdoc/classes/Wee/Presenter.html +69 -69
  43. data/doc/rdoc/classes/Wee/RedirectResponse.html +6 -6
  44. data/doc/rdoc/classes/Wee/RefreshResponse.html +6 -6
  45. data/doc/rdoc/classes/Wee/Request.html +18 -18
  46. data/doc/rdoc/classes/Wee/RequestHandler.html +32 -31
  47. data/doc/rdoc/classes/Wee/Response.html +24 -24
  48. data/doc/rdoc/classes/Wee/Session.html +83 -64
  49. data/doc/rdoc/classes/Wee/SimpleIdGenerator.html +18 -18
  50. data/doc/rdoc/classes/Wee/Snapshot.html +19 -19
  51. data/doc/rdoc/classes/Wee/Utils/LRUCache.html +6 -6
  52. data/doc/rdoc/classes/Wee/ValueHolder.html +18 -18
  53. data/doc/rdoc/classes/Wee/WEBrickAdaptor.html +66 -62
  54. data/doc/rdoc/classes/Wee.html +63 -2
  55. data/doc/rdoc/created.rid +1 -1
  56. data/doc/rdoc/files/README.html +6 -9
  57. data/doc/rdoc/files/lib/wee/adaptors/webrick_rb.html +1 -1
  58. data/doc/rdoc/files/lib/wee/application_rb.html +1 -1
  59. data/doc/rdoc/files/lib/wee/components/page_decoration_rb.html +101 -0
  60. data/doc/rdoc/files/lib/wee/components_rb.html +108 -0
  61. data/doc/rdoc/files/lib/wee/core/callback_rb.html +1 -1
  62. data/doc/rdoc/files/lib/wee/core/component_rb.html +1 -1
  63. data/doc/rdoc/files/lib/wee/core/decoration_rb.html +1 -1
  64. data/doc/rdoc/files/lib/wee/core_rb.html +3 -3
  65. data/doc/rdoc/files/lib/wee/renderer/html/brushes_rb.html +1 -1
  66. data/doc/rdoc/files/lib/wee/renderer/html/canvas_rb.html +1 -1
  67. data/doc/rdoc/files/lib/wee/requesthandler_rb.html +1 -1
  68. data/doc/rdoc/files/lib/wee/session_rb.html +2 -1
  69. data/doc/rdoc/files/lib/wee/utils/autoreload_rb.html +101 -0
  70. data/doc/rdoc/files/lib/wee/utils/helper_rb.html +108 -0
  71. data/doc/rdoc/files/lib/wee_rb.html +2 -1
  72. data/doc/rdoc/fr_class_index.html +3 -1
  73. data/doc/rdoc/fr_file_index.html +4 -0
  74. data/doc/rdoc/fr_method_index.html +203 -191
  75. data/examples/example.rb +2 -16
  76. data/examples/test.rb +15 -18
  77. data/lib/wee/adaptors/webrick.rb +3 -1
  78. data/lib/wee/application.rb +55 -19
  79. data/lib/wee/components/page_decoration.rb +14 -0
  80. data/lib/wee/components.rb +1 -0
  81. data/lib/wee/core/callback.rb +1 -1
  82. data/lib/wee/core/component.rb +27 -3
  83. data/lib/wee/core/decoration.rb +9 -0
  84. data/lib/wee/renderer/html/brushes.rb +21 -23
  85. data/lib/wee/renderer/html/canvas.rb +25 -4
  86. data/lib/wee/requesthandler.rb +1 -0
  87. data/lib/wee/session.rb +21 -1
  88. data/lib/wee/utils/autoreload.rb +27 -0
  89. data/lib/wee/utils/helper.rb +15 -0
  90. data/lib/wee.rb +2 -1
  91. metadata +203 -191
  92. data/test/components/page_decoration.rb +0 -7
@@ -88,11 +88,11 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000208">alive?</a>&nbsp;&nbsp;
92
- <a href="#M000209">handle_request</a>&nbsp;&nbsp;
93
- <a href="#M000211">new</a>&nbsp;&nbsp;
94
- <a href="#M000210">statistics</a>&nbsp;&nbsp;
95
- <a href="#M000207">teminate</a>&nbsp;&nbsp;
91
+ <a href="#M000220">alive?</a>&nbsp;&nbsp;
92
+ <a href="#M000221">handle_request</a>&nbsp;&nbsp;
93
+ <a href="#M000223">new</a>&nbsp;&nbsp;
94
+ <a href="#M000222">statistics</a>&nbsp;&nbsp;
95
+ <a href="#M000219">teminate</a>&nbsp;&nbsp;
96
96
  </div>
97
97
  </div>
98
98
 
@@ -175,23 +175,24 @@ The maximum number of requests this handler should serve. A value of
175
175
  <div id="methods">
176
176
  <h3 class="section-bar">Public Class methods</h3>
177
177
 
178
- <div id="method-M000211" class="method-detail">
179
- <a name="M000211"></a>
178
+ <div id="method-M000223" class="method-detail">
179
+ <a name="M000223"></a>
180
180
 
181
181
  <div class="method-heading">
182
- <a href="#M000211" class="method-signature">
182
+ <a href="#M000223" class="method-signature">
183
183
  <span class="method-name">new</span><span class="method-args">()</span>
184
184
  </a>
185
185
  </div>
186
186
 
187
187
  <div class="method-description">
188
188
  <p><a class="source-toggle" href="#"
189
- onclick="toggleCode('M000211-source');return false;">[Source]</a></p>
190
- <div class="method-source-code" id="M000211-source">
189
+ onclick="toggleCode('M000223-source');return false;">[Source]</a></p>
190
+ <div class="method-source-code" id="M000223-source">
191
191
  <pre>
192
192
  <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 71</span>
193
193
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
194
194
  <span class="ruby-ivar">@last_access</span> = <span class="ruby-ivar">@creation_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
195
+ <span class="ruby-ivar">@expire_after</span> = <span class="ruby-value">30</span><span class="ruby-operator">*</span><span class="ruby-value">60</span> <span class="ruby-comment cmt"># The default is 30 minutes of inactivity</span>
195
196
  <span class="ruby-ivar">@request_count</span> = <span class="ruby-value">0</span>
196
197
  <span class="ruby-ivar">@running</span> = <span class="ruby-keyword kw">true</span>
197
198
  <span class="ruby-keyword kw">end</span>
@@ -202,11 +203,11 @@ The maximum number of requests this handler should serve. A value of
202
203
 
203
204
  <h3 class="section-bar">Public Instance methods</h3>
204
205
 
205
- <div id="method-M000208" class="method-detail">
206
- <a name="M000208"></a>
206
+ <div id="method-M000220" class="method-detail">
207
+ <a name="M000220"></a>
207
208
 
208
209
  <div class="method-heading">
209
- <a href="#M000208" class="method-signature">
210
+ <a href="#M000220" class="method-signature">
210
211
  <span class="method-name">alive?</span><span class="method-args">()</span>
211
212
  </a>
212
213
  </div>
@@ -216,8 +217,8 @@ The maximum number of requests this handler should serve. A value of
216
217
  Query whether this handler is still alive.
217
218
  </p>
218
219
  <p><a class="source-toggle" href="#"
219
- onclick="toggleCode('M000208-source');return false;">[Source]</a></p>
220
- <div class="method-source-code" id="M000208-source">
220
+ onclick="toggleCode('M000220-source');return false;">[Source]</a></p>
221
+ <div class="method-source-code" id="M000220-source">
221
222
  <pre>
222
223
  <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 40</span>
223
224
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">alive?</span>
@@ -237,23 +238,23 @@ Query whether this handler is still alive.
237
238
  </div>
238
239
  </div>
239
240
 
240
- <div id="method-M000209" class="method-detail">
241
- <a name="M000209"></a>
241
+ <div id="method-M000221" class="method-detail">
242
+ <a name="M000221"></a>
242
243
 
243
244
  <div class="method-heading">
244
- <a href="#M000209" class="method-signature">
245
+ <a href="#M000221" class="method-signature">
245
246
  <span class="method-name">handle_request</span><span class="method-args">(context)</span>
246
247
  </a>
247
248
  </div>
248
249
 
249
250
  <div class="method-description">
250
251
  <p>
251
- Extend <a href="RequestHandler.html#M000209">handle_request</a> in your own
252
+ Extend <a href="RequestHandler.html#M000221">handle_request</a> in your own
252
253
  subclass.
253
254
  </p>
254
255
  <p><a class="source-toggle" href="#"
255
- onclick="toggleCode('M000209-source');return false;">[Source]</a></p>
256
- <div class="method-source-code" id="M000209-source">
256
+ onclick="toggleCode('M000221-source');return false;">[Source]</a></p>
257
+ <div class="method-source-code" id="M000221-source">
257
258
  <pre>
258
259
  <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 55</span>
259
260
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_request</span>(<span class="ruby-identifier">context</span>)
@@ -265,19 +266,19 @@ subclass.
265
266
  </div>
266
267
  </div>
267
268
 
268
- <div id="method-M000210" class="method-detail">
269
- <a name="M000210"></a>
269
+ <div id="method-M000222" class="method-detail">
270
+ <a name="M000222"></a>
270
271
 
271
272
  <div class="method-heading">
272
- <a href="#M000210" class="method-signature">
273
+ <a href="#M000222" class="method-signature">
273
274
  <span class="method-name">statistics</span><span class="method-args">()</span>
274
275
  </a>
275
276
  </div>
276
277
 
277
278
  <div class="method-description">
278
279
  <p><a class="source-toggle" href="#"
279
- onclick="toggleCode('M000210-source');return false;">[Source]</a></p>
280
- <div class="method-source-code" id="M000210-source">
280
+ onclick="toggleCode('M000222-source');return false;">[Source]</a></p>
281
+ <div class="method-source-code" id="M000222-source">
281
282
  <pre>
282
283
  <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 60</span>
283
284
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">statistics</span>
@@ -295,11 +296,11 @@ subclass.
295
296
  </div>
296
297
  </div>
297
298
 
298
- <div id="method-M000207" class="method-detail">
299
- <a name="M000207"></a>
299
+ <div id="method-M000219" class="method-detail">
300
+ <a name="M000219"></a>
300
301
 
301
302
  <div class="method-heading">
302
- <a href="#M000207" class="method-signature">
303
+ <a href="#M000219" class="method-signature">
303
304
  <span class="method-name">teminate</span><span class="method-args">()</span>
304
305
  </a>
305
306
  </div>
@@ -309,8 +310,8 @@ subclass.
309
310
  Terminates the handler.
310
311
  </p>
311
312
  <p><a class="source-toggle" href="#"
312
- onclick="toggleCode('M000207-source');return false;">[Source]</a></p>
313
- <div class="method-source-code" id="M000207-source">
313
+ onclick="toggleCode('M000219-source');return false;">[Source]</a></p>
314
+ <div class="method-source-code" id="M000219-source">
314
315
  <pre>
315
316
  <span class="ruby-comment cmt"># File lib/wee/requesthandler.rb, line 34</span>
316
317
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">teminate</span>
@@ -88,10 +88,10 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000146">&lt;&lt;</a>&nbsp;&nbsp;
92
- <a href="#M000144">content_type</a>&nbsp;&nbsp;
93
- <a href="#M000145">content_type=</a>&nbsp;&nbsp;
94
- <a href="#M000143">new</a>&nbsp;&nbsp;
91
+ <a href="#M000155">&lt;&lt;</a>&nbsp;&nbsp;
92
+ <a href="#M000153">content_type</a>&nbsp;&nbsp;
93
+ <a href="#M000154">content_type=</a>&nbsp;&nbsp;
94
+ <a href="#M000152">new</a>&nbsp;&nbsp;
95
95
  </div>
96
96
  </div>
97
97
 
@@ -149,19 +149,19 @@
149
149
  <div id="methods">
150
150
  <h3 class="section-bar">Public Class methods</h3>
151
151
 
152
- <div id="method-M000143" class="method-detail">
153
- <a name="M000143"></a>
152
+ <div id="method-M000152" class="method-detail">
153
+ <a name="M000152"></a>
154
154
 
155
155
  <div class="method-heading">
156
- <a href="#M000143" class="method-signature">
156
+ <a href="#M000152" class="method-signature">
157
157
  <span class="method-name">new</span><span class="method-args">(mime_type = 'text/html', content='')</span>
158
158
  </a>
159
159
  </div>
160
160
 
161
161
  <div class="method-description">
162
162
  <p><a class="source-toggle" href="#"
163
- onclick="toggleCode('M000143-source');return false;">[Source]</a></p>
164
- <div class="method-source-code" id="M000143-source">
163
+ onclick="toggleCode('M000152-source');return false;">[Source]</a></p>
164
+ <div class="method-source-code" id="M000152-source">
165
165
  <pre>
166
166
  <span class="ruby-comment cmt"># File lib/wee/response.rb, line 9</span>
167
167
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">mime_type</span> = <span class="ruby-value str">'text/html'</span>, <span class="ruby-identifier">content</span>=<span class="ruby-value str">''</span>)
@@ -176,19 +176,19 @@
176
176
 
177
177
  <h3 class="section-bar">Public Instance methods</h3>
178
178
 
179
- <div id="method-M000146" class="method-detail">
180
- <a name="M000146"></a>
179
+ <div id="method-M000155" class="method-detail">
180
+ <a name="M000155"></a>
181
181
 
182
182
  <div class="method-heading">
183
- <a href="#M000146" class="method-signature">
183
+ <a href="#M000155" class="method-signature">
184
184
  <span class="method-name">&lt;&lt;</span><span class="method-args">(str)</span>
185
185
  </a>
186
186
  </div>
187
187
 
188
188
  <div class="method-description">
189
189
  <p><a class="source-toggle" href="#"
190
- onclick="toggleCode('M000146-source');return false;">[Source]</a></p>
191
- <div class="method-source-code" id="M000146-source">
190
+ onclick="toggleCode('M000155-source');return false;">[Source]</a></p>
191
+ <div class="method-source-code" id="M000155-source">
192
192
  <pre>
193
193
  <span class="ruby-comment cmt"># File lib/wee/response.rb, line 23</span>
194
194
  <span class="ruby-keyword kw">def</span> <span class="ruby-operator">&lt;&lt;</span>(<span class="ruby-identifier">str</span>)
@@ -199,19 +199,19 @@
199
199
  </div>
200
200
  </div>
201
201
 
202
- <div id="method-M000144" class="method-detail">
203
- <a name="M000144"></a>
202
+ <div id="method-M000153" class="method-detail">
203
+ <a name="M000153"></a>
204
204
 
205
205
  <div class="method-heading">
206
- <a href="#M000144" class="method-signature">
206
+ <a href="#M000153" class="method-signature">
207
207
  <span class="method-name">content_type</span><span class="method-args">()</span>
208
208
  </a>
209
209
  </div>
210
210
 
211
211
  <div class="method-description">
212
212
  <p><a class="source-toggle" href="#"
213
- onclick="toggleCode('M000144-source');return false;">[Source]</a></p>
214
- <div class="method-source-code" id="M000144-source">
213
+ onclick="toggleCode('M000153-source');return false;">[Source]</a></p>
214
+ <div class="method-source-code" id="M000153-source">
215
215
  <pre>
216
216
  <span class="ruby-comment cmt"># File lib/wee/response.rb, line 15</span>
217
217
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">content_type</span>
@@ -222,19 +222,19 @@
222
222
  </div>
223
223
  </div>
224
224
 
225
- <div id="method-M000145" class="method-detail">
226
- <a name="M000145"></a>
225
+ <div id="method-M000154" class="method-detail">
226
+ <a name="M000154"></a>
227
227
 
228
228
  <div class="method-heading">
229
- <a href="#M000145" class="method-signature">
229
+ <a href="#M000154" class="method-signature">
230
230
  <span class="method-name">content_type=</span><span class="method-args">(mime_type)</span>
231
231
  </a>
232
232
  </div>
233
233
 
234
234
  <div class="method-description">
235
235
  <p><a class="source-toggle" href="#"
236
- onclick="toggleCode('M000145-source');return false;">[Source]</a></p>
237
- <div class="method-source-code" id="M000145-source">
236
+ onclick="toggleCode('M000154-source');return false;">[Source]</a></p>
237
+ <div class="method-source-code" id="M000154-source">
238
238
  <pre>
239
239
  <span class="ruby-comment cmt"># File lib/wee/response.rb, line 19</span>
240
240
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">content_type=</span>(<span class="ruby-identifier">mime_type</span>)
@@ -88,15 +88,15 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000129">create_page</a>&nbsp;&nbsp;
92
- <a href="#M000124">current</a>&nbsp;&nbsp;
93
- <a href="#M000131">handle_new_page_view</a>&nbsp;&nbsp;
94
- <a href="#M000127">handle_request</a>&nbsp;&nbsp;
95
- <a href="#M000125">new</a>&nbsp;&nbsp;
96
- <a href="#M000130">process_request</a>&nbsp;&nbsp;
97
- <a href="#M000132">respond</a>&nbsp;&nbsp;
98
- <a href="#M000126">snapshot</a>&nbsp;&nbsp;
99
- <a href="#M000128">start_request_response_loop</a>&nbsp;&nbsp;
91
+ <a href="#M000136">create_page</a>&nbsp;&nbsp;
92
+ <a href="#M000131">current</a>&nbsp;&nbsp;
93
+ <a href="#M000138">handle_new_page_view</a>&nbsp;&nbsp;
94
+ <a href="#M000134">handle_request</a>&nbsp;&nbsp;
95
+ <a href="#M000132">new</a>&nbsp;&nbsp;
96
+ <a href="#M000137">process_request</a>&nbsp;&nbsp;
97
+ <a href="#M000139">respond</a>&nbsp;&nbsp;
98
+ <a href="#M000133">snapshot</a>&nbsp;&nbsp;
99
+ <a href="#M000135">start_request_response_loop</a>&nbsp;&nbsp;
100
100
  </div>
101
101
  </div>
102
102
 
@@ -136,21 +136,21 @@
136
136
  <div id="methods">
137
137
  <h3 class="section-bar">Public Class methods</h3>
138
138
 
139
- <div id="method-M000124" class="method-detail">
140
- <a name="M000124"></a>
139
+ <div id="method-M000131" class="method-detail">
140
+ <a name="M000131"></a>
141
141
 
142
142
  <div class="method-heading">
143
- <a href="#M000124" class="method-signature">
143
+ <a href="#M000131" class="method-signature">
144
144
  <span class="method-name">current</span><span class="method-args">()</span>
145
145
  </a>
146
146
  </div>
147
147
 
148
148
  <div class="method-description">
149
149
  <p><a class="source-toggle" href="#"
150
- onclick="toggleCode('M000124-source');return false;">[Source]</a></p>
151
- <div class="method-source-code" id="M000124-source">
150
+ onclick="toggleCode('M000131-source');return false;">[Source]</a></p>
151
+ <div class="method-source-code" id="M000131-source">
152
152
  <pre>
153
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 7</span>
153
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 8</span>
154
154
  <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">current</span>
155
155
  <span class="ruby-identifier">sess</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>[<span class="ruby-identifier">:wee_session</span>]
156
156
  <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;not in session&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sess</span>.<span class="ruby-identifier">nil?</span>
@@ -161,21 +161,21 @@
161
161
  </div>
162
162
  </div>
163
163
 
164
- <div id="method-M000125" class="method-detail">
165
- <a name="M000125"></a>
164
+ <div id="method-M000132" class="method-detail">
165
+ <a name="M000132"></a>
166
166
 
167
167
  <div class="method-heading">
168
- <a href="#M000125" class="method-signature">
168
+ <a href="#M000132" class="method-signature">
169
169
  <span class="method-name">new</span><span class="method-args">(&amp;block)</span>
170
170
  </a>
171
171
  </div>
172
172
 
173
173
  <div class="method-description">
174
174
  <p><a class="source-toggle" href="#"
175
- onclick="toggleCode('M000125-source');return false;">[Source]</a></p>
176
- <div class="method-source-code" id="M000125-source">
175
+ onclick="toggleCode('M000132-source');return false;">[Source]</a></p>
176
+ <div class="method-source-code" id="M000132-source">
177
177
  <pre>
178
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 13</span>
178
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 14</span>
179
179
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
180
180
  <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>[<span class="ruby-identifier">:wee_session</span>] = <span class="ruby-keyword kw">self</span>
181
181
 
@@ -201,21 +201,21 @@
201
201
 
202
202
  <h3 class="section-bar">Public Instance methods</h3>
203
203
 
204
- <div id="method-M000129" class="method-detail">
205
- <a name="M000129"></a>
204
+ <div id="method-M000136" class="method-detail">
205
+ <a name="M000136"></a>
206
206
 
207
207
  <div class="method-heading">
208
- <a href="#M000129" class="method-signature">
208
+ <a href="#M000136" class="method-signature">
209
209
  <span class="method-name">create_page</span><span class="method-args">(snapshot)</span>
210
210
  </a>
211
211
  </div>
212
212
 
213
213
  <div class="method-description">
214
214
  <p><a class="source-toggle" href="#"
215
- onclick="toggleCode('M000129-source');return false;">[Source]</a></p>
216
- <div class="method-source-code" id="M000129-source">
215
+ onclick="toggleCode('M000136-source');return false;">[Source]</a></p>
216
+ <div class="method-source-code" id="M000136-source">
217
217
  <pre>
218
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 65</span>
218
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 85</span>
219
219
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create_page</span>(<span class="ruby-identifier">snapshot</span>)
220
220
  <span class="ruby-identifier">idgen</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">SimpleIdGenerator</span>.<span class="ruby-identifier">new</span>
221
221
  <span class="ruby-identifier">page</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Page</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">snapshot</span>, <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">CallbackRegistry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">idgen</span>))
@@ -225,11 +225,11 @@
225
225
  </div>
226
226
  </div>
227
227
 
228
- <div id="method-M000127" class="method-detail">
229
- <a name="M000127"></a>
228
+ <div id="method-M000134" class="method-detail">
229
+ <a name="M000134"></a>
230
230
 
231
231
  <div class="method-heading">
232
- <a href="#M000127" class="method-signature">
232
+ <a href="#M000134" class="method-signature">
233
233
  <span class="method-name">handle_request</span><span class="method-args">(context)</span>
234
234
  </a>
235
235
  </div>
@@ -239,10 +239,10 @@
239
239
  called by application to send the session a request
240
240
  </p>
241
241
  <p><a class="source-toggle" href="#"
242
- onclick="toggleCode('M000127-source');return false;">[Source]</a></p>
243
- <div class="method-source-code" id="M000127-source">
242
+ onclick="toggleCode('M000134-source');return false;">[Source]</a></p>
243
+ <div class="method-source-code" id="M000134-source">
244
244
  <pre>
245
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 38</span>
245
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 39</span>
246
246
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_request</span>(<span class="ruby-identifier">context</span>)
247
247
  <span class="ruby-keyword kw">super</span>
248
248
 
@@ -258,21 +258,21 @@ called by application to send the session a request
258
258
  </div>
259
259
  </div>
260
260
 
261
- <div id="method-M000130" class="method-detail">
262
- <a name="M000130"></a>
261
+ <div id="method-M000137" class="method-detail">
262
+ <a name="M000137"></a>
263
263
 
264
264
  <div class="method-heading">
265
- <a href="#M000130" class="method-signature">
265
+ <a href="#M000137" class="method-signature">
266
266
  <span class="method-name">process_request</span><span class="method-args">()</span>
267
267
  </a>
268
268
  </div>
269
269
 
270
270
  <div class="method-description">
271
271
  <p><a class="source-toggle" href="#"
272
- onclick="toggleCode('M000130-source');return false;">[Source]</a></p>
273
- <div class="method-source-code" id="M000130-source">
272
+ onclick="toggleCode('M000137-source');return false;">[Source]</a></p>
273
+ <div class="method-source-code" id="M000137-source">
274
274
  <pre>
275
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 70</span>
275
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 90</span>
276
276
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process_request</span>
277
277
  <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">request</span>.<span class="ruby-identifier">page_id</span>.<span class="ruby-identifier">nil?</span>
278
278
 
@@ -340,21 +340,21 @@ called by application to send the session a request
340
340
  </div>
341
341
  </div>
342
342
 
343
- <div id="method-M000126" class="method-detail">
344
- <a name="M000126"></a>
343
+ <div id="method-M000133" class="method-detail">
344
+ <a name="M000133"></a>
345
345
 
346
346
  <div class="method-heading">
347
- <a href="#M000126" class="method-signature">
347
+ <a href="#M000133" class="method-signature">
348
348
  <span class="method-name">snapshot</span><span class="method-args">()</span>
349
349
  </a>
350
350
  </div>
351
351
 
352
352
  <div class="method-description">
353
353
  <p><a class="source-toggle" href="#"
354
- onclick="toggleCode('M000126-source');return false;">[Source]</a></p>
355
- <div class="method-source-code" id="M000126-source">
354
+ onclick="toggleCode('M000133-source');return false;">[Source]</a></p>
355
+ <div class="method-source-code" id="M000133-source">
356
356
  <pre>
357
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 32</span>
357
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 33</span>
358
358
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">snapshot</span>
359
359
  <span class="ruby-ivar">@root_component</span>.<span class="ruby-identifier">backtrack_state_chain</span>(<span class="ruby-identifier">snap</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Snapshot</span>.<span class="ruby-identifier">new</span>)
360
360
  <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">snap</span>.<span class="ruby-identifier">freeze</span>
@@ -364,27 +364,45 @@ called by application to send the session a request
364
364
  </div>
365
365
  </div>
366
366
 
367
- <div id="method-M000128" class="method-detail">
368
- <a name="M000128"></a>
367
+ <div id="method-M000135" class="method-detail">
368
+ <a name="M000135"></a>
369
369
 
370
370
  <div class="method-heading">
371
- <a href="#M000128" class="method-signature">
371
+ <a href="#M000135" class="method-signature">
372
372
  <span class="method-name">start_request_response_loop</span><span class="method-args">()</span>
373
373
  </a>
374
374
  </div>
375
375
 
376
376
  <div class="method-description">
377
377
  <p><a class="source-toggle" href="#"
378
- onclick="toggleCode('M000128-source');return false;">[Source]</a></p>
379
- <div class="method-source-code" id="M000128-source">
378
+ onclick="toggleCode('M000135-source');return false;">[Source]</a></p>
379
+ <div class="method-source-code" id="M000135-source">
380
380
  <pre>
381
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 49</span>
381
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 50</span>
382
382
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start_request_response_loop</span>
383
383
  <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">abort_on_exception</span> = <span class="ruby-keyword kw">true</span>
384
384
  <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> {
385
385
  <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">current</span>[<span class="ruby-identifier">:wee_session</span>] = <span class="ruby-keyword kw">self</span>
386
386
  <span class="ruby-identifier">loop</span> {
387
- <span class="ruby-ivar">@context</span> = <span class="ruby-ivar">@in_queue</span>.<span class="ruby-identifier">pop</span>
387
+ <span class="ruby-ivar">@context</span> = <span class="ruby-keyword kw">nil</span>
388
+
389
+ <span class="ruby-comment cmt"># get a request, check whether this session is alive after every 5</span>
390
+ <span class="ruby-comment cmt"># seconds.</span>
391
+ <span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">nil?</span>
392
+ <span class="ruby-keyword kw">begin</span>
393
+ <span class="ruby-constant">Timeout</span>.<span class="ruby-identifier">timeout</span>(<span class="ruby-value">5</span>) {
394
+ <span class="ruby-ivar">@context</span> = <span class="ruby-ivar">@in_queue</span>.<span class="ruby-identifier">pop</span>
395
+ }
396
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
397
+ <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">alive?</span>
398
+ <span class="ruby-keyword kw">end</span>
399
+ <span class="ruby-keyword kw">end</span>
400
+
401
+ <span class="ruby-comment cmt"># abort thread if no longer alive</span>
402
+ <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">alive?</span>
403
+
404
+ <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;invalid request&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@context</span>.<span class="ruby-identifier">nil?</span>
405
+
388
406
  <span class="ruby-keyword kw">begin</span>
389
407
  <span class="ruby-identifier">process_request</span>
390
408
  <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">exn</span>
@@ -392,6 +410,7 @@ called by application to send the session a request
392
410
  <span class="ruby-keyword kw">end</span>
393
411
  <span class="ruby-ivar">@out_queue</span>.<span class="ruby-identifier">push</span>(<span class="ruby-ivar">@context</span>)
394
412
  }
413
+ <span class="ruby-identifier">p</span> <span class="ruby-value str">&quot;session loop terminated&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$DEBUG</span>
395
414
  }
396
415
  <span class="ruby-keyword kw">end</span>
397
416
  </pre>
@@ -401,21 +420,21 @@ called by application to send the session a request
401
420
 
402
421
  <h3 class="section-bar">Private Instance methods</h3>
403
422
 
404
- <div id="method-M000131" class="method-detail">
405
- <a name="M000131"></a>
423
+ <div id="method-M000138" class="method-detail">
424
+ <a name="M000138"></a>
406
425
 
407
426
  <div class="method-heading">
408
- <a href="#M000131" class="method-signature">
427
+ <a href="#M000138" class="method-signature">
409
428
  <span class="method-name">handle_new_page_view</span><span class="method-args">(context, snapshot=nil)</span>
410
429
  </a>
411
430
  </div>
412
431
 
413
432
  <div class="method-description">
414
433
  <p><a class="source-toggle" href="#"
415
- onclick="toggleCode('M000131-source');return false;">[Source]</a></p>
416
- <div class="method-source-code" id="M000131-source">
434
+ onclick="toggleCode('M000138-source');return false;">[Source]</a></p>
435
+ <div class="method-source-code" id="M000138-source">
417
436
  <pre>
418
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 135</span>
437
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 155</span>
419
438
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handle_new_page_view</span>(<span class="ruby-identifier">context</span>, <span class="ruby-identifier">snapshot</span>=<span class="ruby-keyword kw">nil</span>)
420
439
  <span class="ruby-identifier">new_page_id</span> = <span class="ruby-ivar">@idgen</span>.<span class="ruby-identifier">next</span>.<span class="ruby-identifier">to_s</span>
421
440
  <span class="ruby-identifier">new_page</span> = <span class="ruby-identifier">create_page</span>(<span class="ruby-identifier">snapshot</span> <span class="ruby-operator">||</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">snapshot</span>())
@@ -428,21 +447,21 @@ called by application to send the session a request
428
447
  </div>
429
448
  </div>
430
449
 
431
- <div id="method-M000132" class="method-detail">
432
- <a name="M000132"></a>
450
+ <div id="method-M000139" class="method-detail">
451
+ <a name="M000139"></a>
433
452
 
434
453
  <div class="method-heading">
435
- <a href="#M000132" class="method-signature">
454
+ <a href="#M000139" class="method-signature">
436
455
  <span class="method-name">respond</span><span class="method-args">(context, callbacks)</span>
437
456
  </a>
438
457
  </div>
439
458
 
440
459
  <div class="method-description">
441
460
  <p><a class="source-toggle" href="#"
442
- onclick="toggleCode('M000132-source');return false;">[Source]</a></p>
443
- <div class="method-source-code" id="M000132-source">
461
+ onclick="toggleCode('M000139-source');return false;">[Source]</a></p>
462
+ <div class="method-source-code" id="M000139-source">
444
463
  <pre>
445
- <span class="ruby-comment cmt"># File lib/wee/session.rb, line 143</span>
464
+ <span class="ruby-comment cmt"># File lib/wee/session.rb, line 163</span>
446
465
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">respond</span>(<span class="ruby-identifier">context</span>, <span class="ruby-identifier">callbacks</span>)
447
466
  <span class="ruby-identifier">context</span>.<span class="ruby-identifier">response</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">GenericResponse</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'text/html'</span>, <span class="ruby-value str">''</span>)
448
467