wee 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. data/ChangeLog +75 -0
  2. data/README +17 -9
  3. data/Rakefile +2 -2
  4. data/TODO +20 -0
  5. data/benchmark/Makefile +14 -9
  6. data/benchmark/counter.rb +11 -30
  7. data/benchmark/report_req.rb +12 -0
  8. data/doc/rdoc/classes/Array.html +12 -12
  9. data/doc/rdoc/classes/Cache/StorageCache.html +38 -38
  10. data/doc/rdoc/classes/Cache/Strategy/CapacityBounded.html +30 -30
  11. data/doc/rdoc/classes/Cache/Strategy/LFU.html +24 -24
  12. data/doc/rdoc/classes/Cache/Strategy/LRU.html +24 -24
  13. data/doc/rdoc/classes/Cache/Strategy/Unbounded.html +24 -24
  14. data/doc/rdoc/classes/Enumerable.html +6 -6
  15. data/doc/rdoc/classes/Object.html +12 -12
  16. data/doc/rdoc/classes/OgApplication.html +126 -0
  17. data/doc/rdoc/classes/OgScaffolder.html +401 -0
  18. data/doc/rdoc/classes/OgSession.html +172 -0
  19. data/doc/rdoc/classes/String.html +12 -12
  20. data/doc/rdoc/classes/Struct.html +12 -12
  21. data/doc/rdoc/classes/Wee.html +5 -62
  22. data/doc/rdoc/classes/Wee/AnswerDecoration.html +9 -9
  23. data/doc/rdoc/classes/Wee/Application.html +107 -39
  24. data/doc/rdoc/classes/Wee/Brush.html +22 -18
  25. data/doc/rdoc/classes/Wee/Brush/ActionCallbackMixin.html +17 -11
  26. data/doc/rdoc/classes/Wee/Brush/ActionURLCallbackMixin.html +18 -10
  27. data/doc/rdoc/classes/Wee/Brush/AnchorTag.html +30 -64
  28. data/doc/rdoc/classes/Wee/Brush/FileUploadTag.html +8 -10
  29. data/doc/rdoc/classes/Wee/Brush/FormTag.html +27 -79
  30. data/doc/rdoc/classes/Wee/Brush/GenericEncodedTextBrush.html +12 -12
  31. data/doc/rdoc/classes/Wee/Brush/GenericSingleTagBrush.html +146 -0
  32. data/doc/rdoc/classes/Wee/Brush/GenericTagBrush.html +179 -65
  33. data/doc/rdoc/classes/Wee/Brush/GenericTextBrush.html +12 -12
  34. data/doc/rdoc/classes/Wee/Brush/ImageButtonTag.html +16 -18
  35. data/doc/rdoc/classes/Wee/Brush/ImageTag.html +203 -0
  36. data/doc/rdoc/classes/Wee/Brush/InputCallbackMixin.html +17 -11
  37. data/doc/rdoc/classes/Wee/Brush/InputTag.html +15 -15
  38. data/doc/rdoc/classes/Wee/Brush/JavascriptTag.html +147 -0
  39. data/doc/rdoc/classes/Wee/Brush/Page.html +17 -17
  40. data/doc/rdoc/classes/Wee/Brush/SelectListTag.html +25 -50
  41. data/doc/rdoc/classes/Wee/Brush/SelectOptionTag.html +7 -38
  42. data/doc/rdoc/classes/Wee/Brush/SubmitButtonTag.html +7 -7
  43. data/doc/rdoc/classes/Wee/Brush/TableDataTag.html +15 -16
  44. data/doc/rdoc/classes/Wee/Brush/TableHeaderTag.html +7 -7
  45. data/doc/rdoc/classes/Wee/Brush/TableRowTag.html +65 -50
  46. data/doc/rdoc/classes/Wee/Brush/TableTag.html +7 -7
  47. data/doc/rdoc/classes/Wee/Brush/TextAreaTag.html +14 -64
  48. data/doc/rdoc/classes/Wee/Brush/TextInputTag.html +7 -7
  49. data/doc/rdoc/classes/Wee/Brush/ToCallback.html +146 -0
  50. data/doc/rdoc/classes/Wee/CallbackRegistry.html +40 -40
  51. data/doc/rdoc/classes/Wee/CallbackStream.html +18 -18
  52. data/doc/rdoc/classes/Wee/Canvas.html +24 -24
  53. data/doc/rdoc/classes/Wee/Component.html +232 -149
  54. data/doc/rdoc/classes/Wee/Component/OnAnswer.html +153 -0
  55. data/doc/rdoc/classes/Wee/Decoration.html +42 -42
  56. data/doc/rdoc/classes/Wee/Delegate.html +27 -27
  57. data/doc/rdoc/classes/Wee/ErrorResponse.html +12 -12
  58. data/doc/rdoc/classes/Wee/FormDecoration.html +148 -0
  59. data/doc/rdoc/classes/Wee/GenericResponse.html +6 -6
  60. data/doc/rdoc/classes/Wee/HtmlCanvas.html +296 -215
  61. data/doc/rdoc/classes/Wee/HtmlWriter.html +83 -81
  62. data/doc/rdoc/classes/Wee/LiteralMethodCallback.html +21 -16
  63. data/doc/rdoc/classes/Wee/MessageBox.html +180 -0
  64. data/doc/rdoc/classes/Wee/PageDecoration.html +30 -30
  65. data/doc/rdoc/classes/Wee/Presenter.html +237 -69
  66. data/doc/rdoc/classes/Wee/RedirectResponse.html +6 -6
  67. data/doc/rdoc/classes/Wee/RefreshResponse.html +6 -6
  68. data/doc/rdoc/classes/Wee/Request.html +18 -18
  69. data/doc/rdoc/classes/Wee/RequestHandler.html +43 -39
  70. data/doc/rdoc/classes/Wee/Response.html +24 -24
  71. data/doc/rdoc/classes/Wee/Session.html +746 -72
  72. data/doc/rdoc/classes/Wee/SimpleIdGenerator.html +18 -18
  73. data/doc/rdoc/classes/Wee/Snapshot.html +19 -19
  74. data/doc/rdoc/classes/Wee/Utils.html +138 -2
  75. data/doc/rdoc/classes/Wee/Utils/LRUCache.html +7 -7
  76. data/doc/rdoc/classes/Wee/ValueHolder.html +18 -18
  77. data/doc/rdoc/classes/Wee/WEBrickAdaptor.html +43 -68
  78. data/doc/rdoc/classes/Wee/WrapperDecoration.html +150 -0
  79. data/doc/rdoc/created.rid +1 -1
  80. data/doc/rdoc/files/README.html +29 -15
  81. data/doc/rdoc/files/lib/wee/adaptors/webrick_rb.html +1 -1
  82. data/doc/rdoc/files/lib/wee/application_rb.html +1 -1
  83. data/doc/rdoc/files/lib/wee/components/form_decoration_rb.html +101 -0
  84. data/doc/rdoc/files/lib/wee/components/messagebox_rb.html +101 -0
  85. data/doc/rdoc/files/lib/wee/components/page_decoration_rb.html +1 -1
  86. data/doc/rdoc/files/lib/wee/components/wrapper_decoration_rb.html +101 -0
  87. data/doc/rdoc/files/lib/wee/components_rb.html +4 -1
  88. data/doc/rdoc/files/lib/wee/continuation/core/component_rb.html +101 -0
  89. data/doc/rdoc/files/lib/wee/continuation/session_rb.html +110 -0
  90. data/doc/rdoc/files/lib/wee/continuation_rb.html +116 -0
  91. data/doc/rdoc/files/lib/wee/core/callback_rb.html +1 -1
  92. data/doc/rdoc/files/lib/wee/core/component_rb.html +1 -1
  93. data/doc/rdoc/files/lib/wee/core/presenter_rb.html +1 -1
  94. data/doc/rdoc/files/lib/wee/core_rb.html +3 -3
  95. data/doc/rdoc/files/lib/wee/databases/og_rb.html +108 -0
  96. data/doc/rdoc/files/lib/wee/renderer/html/brushes_rb.html +1 -1
  97. data/doc/rdoc/files/lib/wee/renderer/html/canvas_rb.html +1 -1
  98. data/doc/rdoc/files/lib/wee/renderer/html/writer_rb.html +1 -1
  99. data/doc/rdoc/files/lib/wee/requesthandler_rb.html +1 -1
  100. data/doc/rdoc/files/lib/wee/session_rb.html +1 -2
  101. data/doc/rdoc/files/lib/wee/utils/autoreload_rb.html +1 -1
  102. data/doc/rdoc/files/lib/wee/utils/cache_rb.html +1 -1
  103. data/doc/rdoc/files/lib/wee/utils/helper_rb.html +1 -8
  104. data/doc/rdoc/files/lib/wee/utils_rb.html +110 -0
  105. data/doc/rdoc/files/lib/wee_rb.html +1 -1
  106. data/doc/rdoc/fr_class_index.html +11 -1
  107. data/doc/rdoc/fr_file_index.html +8 -0
  108. data/doc/rdoc/fr_method_index.html +269 -228
  109. data/examples/calculator.rb +69 -0
  110. data/examples/calendar.rb +5 -17
  111. data/examples/example.rb +2 -2
  112. data/examples/hw.rb +17 -0
  113. data/examples/live-update.rb +45 -0
  114. data/examples/og-test.rb +51 -0
  115. data/lib/wee.rb +1 -1
  116. data/lib/wee/adaptors/webrick.rb +2 -0
  117. data/lib/wee/application.rb +16 -0
  118. data/lib/wee/components.rb +3 -0
  119. data/lib/wee/components/form_decoration.rb +7 -0
  120. data/{test → lib/wee}/components/messagebox.rb +1 -1
  121. data/lib/wee/components/page_decoration.rb +5 -5
  122. data/lib/wee/components/wrapper_decoration.rb +7 -0
  123. data/lib/wee/continuation.rb +5 -0
  124. data/lib/wee/continuation/core/component.rb +55 -0
  125. data/lib/wee/continuation/session.rb +217 -0
  126. data/lib/wee/core/callback.rb +11 -6
  127. data/lib/wee/core/component.rb +45 -33
  128. data/lib/wee/core/presenter.rb +68 -0
  129. data/lib/wee/databases/og.rb +114 -0
  130. data/lib/wee/renderer/html/brushes.rb +179 -98
  131. data/lib/wee/renderer/html/canvas.rb +37 -13
  132. data/lib/wee/renderer/html/writer.rb +34 -32
  133. data/lib/wee/requesthandler.rb +6 -3
  134. data/lib/wee/session.rb +73 -54
  135. data/lib/wee/utils.rb +5 -0
  136. data/lib/wee/utils/autoreload.rb +1 -1
  137. data/lib/wee/utils/cache.rb +0 -2
  138. data/lib/wee/utils/helper.rb +40 -8
  139. data/test/components/calltest-cont.rb +16 -0
  140. data/test/components/calltest.rb +15 -10
  141. data/test/stress.rb +31 -28
  142. data/test/stress_and_measure.rb +53 -0
  143. data/test/stressed_application.rb +15 -0
  144. data/test/test_html_writer.rb +9 -4
  145. metadata +236 -195
  146. data/benchmark/bench.sh +0 -24
@@ -94,9 +94,9 @@ The intersection of registered callbacks and those that occured.
94
94
  <h3 class="section-bar">Methods</h3>
95
95
 
96
96
  <div class="name-list">
97
- <a href="#M000214">all_of_type</a>&nbsp;&nbsp;
98
- <a href="#M000212">new</a>&nbsp;&nbsp;
99
- <a href="#M000213">with_callbacks_for</a>&nbsp;&nbsp;
97
+ <a href="#M000255">all_of_type</a>&nbsp;&nbsp;
98
+ <a href="#M000253">new</a>&nbsp;&nbsp;
99
+ <a href="#M000254">with_callbacks_for</a>&nbsp;&nbsp;
100
100
  </div>
101
101
  </div>
102
102
 
@@ -118,11 +118,11 @@ The intersection of registered callbacks and those that occured.
118
118
  <div id="methods">
119
119
  <h3 class="section-bar">Public Class methods</h3>
120
120
 
121
- <div id="method-M000212" class="method-detail">
122
- <a name="M000212"></a>
121
+ <div id="method-M000253" class="method-detail">
122
+ <a name="M000253"></a>
123
123
 
124
124
  <div class="method-heading">
125
- <a href="#M000212" class="method-signature">
125
+ <a href="#M000253" class="method-signature">
126
126
  <span class="method-name">new</span><span class="method-args">(callbacks, ids_and_values)</span>
127
127
  </a>
128
128
  </div>
@@ -138,8 +138,8 @@ occurend in a request, e.g. { id =&gt; value }.
138
138
  </dd>
139
139
  </dl>
140
140
  <p><a class="source-toggle" href="#"
141
- onclick="toggleCode('M000212-source');return false;">[Source]</a></p>
142
- <div class="method-source-code" id="M000212-source">
141
+ onclick="toggleCode('M000253-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000253-source">
143
143
  <pre>
144
144
  <span class="ruby-comment cmt"># File lib/wee/core/callback.rb, line 72</span>
145
145
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">callbacks</span>, <span class="ruby-identifier">ids_and_values</span>)
@@ -154,11 +154,11 @@ occurend in a request, e.g. { id =&gt; value }.
154
154
 
155
155
  <h3 class="section-bar">Public Instance methods</h3>
156
156
 
157
- <div id="method-M000214" class="method-detail">
158
- <a name="M000214"></a>
157
+ <div id="method-M000255" class="method-detail">
158
+ <a name="M000255"></a>
159
159
 
160
160
  <div class="method-heading">
161
- <a href="#M000214" class="method-signature">
161
+ <a href="#M000255" class="method-signature">
162
162
  <span class="method-name">all_of_type</span><span class="method-args">(type)</span>
163
163
  </a>
164
164
  </div>
@@ -169,8 +169,8 @@ Returns a [callback, value] array of all callbacks of <tt>type</tt> for
169
169
  which an id was given.
170
170
  </p>
171
171
  <p><a class="source-toggle" href="#"
172
- onclick="toggleCode('M000214-source');return false;">[Source]</a></p>
173
- <div class="method-source-code" id="M000214-source">
172
+ onclick="toggleCode('M000255-source');return false;">[Source]</a></p>
173
+ <div class="method-source-code" id="M000255-source">
174
174
  <pre>
175
175
  <span class="ruby-comment cmt"># File lib/wee/core/callback.rb, line 89</span>
176
176
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">all_of_type</span>(<span class="ruby-identifier">type</span>)
@@ -185,19 +185,19 @@ which an id was given.
185
185
  </div>
186
186
  </div>
187
187
 
188
- <div id="method-M000213" class="method-detail">
189
- <a name="M000213"></a>
188
+ <div id="method-M000254" class="method-detail">
189
+ <a name="M000254"></a>
190
190
 
191
191
  <div class="method-heading">
192
- <a href="#M000213" class="method-signature">
192
+ <a href="#M000254" class="method-signature">
193
193
  <span class="method-name">with_callbacks_for</span><span class="method-args">(object, type) {|@callbacks.get_callback_for(id, type), @ids_and_values[id]| ...}</span>
194
194
  </a>
195
195
  </div>
196
196
 
197
197
  <div class="method-description">
198
198
  <p><a class="source-toggle" href="#"
199
- onclick="toggleCode('M000213-source');return false;">[Source]</a></p>
200
- <div class="method-source-code" id="M000213-source">
199
+ onclick="toggleCode('M000254-source');return false;">[Source]</a></p>
200
+ <div class="method-source-code" id="M000254-source">
201
201
  <pre>
202
202
  <span class="ruby-comment cmt"># File lib/wee/core/callback.rb, line 78</span>
203
203
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">with_callbacks_for</span>(<span class="ruby-identifier">object</span>, <span class="ruby-identifier">type</span>)
@@ -88,10 +88,10 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000162">close</a>&nbsp;&nbsp;
92
- <a href="#M000164">nest</a>&nbsp;&nbsp;
93
- <a href="#M000161">new</a>&nbsp;&nbsp;
94
- <a href="#M000163">set_brush</a>&nbsp;&nbsp;
91
+ <a href="#M000198">close</a>&nbsp;&nbsp;
92
+ <a href="#M000200">nest</a>&nbsp;&nbsp;
93
+ <a href="#M000197">new</a>&nbsp;&nbsp;
94
+ <a href="#M000199">set_brush</a>&nbsp;&nbsp;
95
95
  </div>
96
96
  </div>
97
97
 
@@ -113,19 +113,19 @@
113
113
  <div id="methods">
114
114
  <h3 class="section-bar">Public Class methods</h3>
115
115
 
116
- <div id="method-M000161" class="method-detail">
117
- <a name="M000161"></a>
116
+ <div id="method-M000197" class="method-detail">
117
+ <a name="M000197"></a>
118
118
 
119
119
  <div class="method-heading">
120
- <a href="#M000161" class="method-signature">
120
+ <a href="#M000197" class="method-signature">
121
121
  <span class="method-name">new</span><span class="method-args">()</span>
122
122
  </a>
123
123
  </div>
124
124
 
125
125
  <div class="method-description">
126
126
  <p><a class="source-toggle" href="#"
127
- onclick="toggleCode('M000161-source');return false;">[Source]</a></p>
128
- <div class="method-source-code" id="M000161-source">
127
+ onclick="toggleCode('M000197-source');return false;">[Source]</a></p>
128
+ <div class="method-source-code" id="M000197-source">
129
129
  <pre>
130
130
  <span class="ruby-comment cmt"># File lib/wee/renderer/html/canvas.rb, line 4</span>
131
131
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
@@ -139,19 +139,19 @@
139
139
 
140
140
  <h3 class="section-bar">Public Instance methods</h3>
141
141
 
142
- <div id="method-M000162" class="method-detail">
143
- <a name="M000162"></a>
142
+ <div id="method-M000198" class="method-detail">
143
+ <a name="M000198"></a>
144
144
 
145
145
  <div class="method-heading">
146
- <a href="#M000162" class="method-signature">
146
+ <a href="#M000198" class="method-signature">
147
147
  <span class="method-name">close</span><span class="method-args">()</span>
148
148
  </a>
149
149
  </div>
150
150
 
151
151
  <div class="method-description">
152
152
  <p><a class="source-toggle" href="#"
153
- onclick="toggleCode('M000162-source');return false;">[Source]</a></p>
154
- <div class="method-source-code" id="M000162-source">
153
+ onclick="toggleCode('M000198-source');return false;">[Source]</a></p>
154
+ <div class="method-source-code" id="M000198-source">
155
155
  <pre>
156
156
  <span class="ruby-comment cmt"># File lib/wee/renderer/html/canvas.rb, line 9</span>
157
157
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
@@ -163,19 +163,19 @@
163
163
  </div>
164
164
  </div>
165
165
 
166
- <div id="method-M000164" class="method-detail">
167
- <a name="M000164"></a>
166
+ <div id="method-M000200" class="method-detail">
167
+ <a name="M000200"></a>
168
168
 
169
169
  <div class="method-heading">
170
- <a href="#M000164" class="method-signature">
170
+ <a href="#M000200" class="method-signature">
171
171
  <span class="method-name">nest</span><span class="method-args">(&amp;block)</span>
172
172
  </a>
173
173
  </div>
174
174
 
175
175
  <div class="method-description">
176
176
  <p><a class="source-toggle" href="#"
177
- onclick="toggleCode('M000164-source');return false;">[Source]</a></p>
178
- <div class="method-source-code" id="M000164-source">
177
+ onclick="toggleCode('M000200-source');return false;">[Source]</a></p>
178
+ <div class="method-source-code" id="M000200-source">
179
179
  <pre>
180
180
  <span class="ruby-comment cmt"># File lib/wee/renderer/html/canvas.rb, line 25</span>
181
181
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nest</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
@@ -190,19 +190,19 @@
190
190
  </div>
191
191
  </div>
192
192
 
193
- <div id="method-M000163" class="method-detail">
194
- <a name="M000163"></a>
193
+ <div id="method-M000199" class="method-detail">
194
+ <a name="M000199"></a>
195
195
 
196
196
  <div class="method-heading">
197
- <a href="#M000163" class="method-signature">
197
+ <a href="#M000199" class="method-signature">
198
198
  <span class="method-name">set_brush</span><span class="method-args">(brush)</span>
199
199
  </a>
200
200
  </div>
201
201
 
202
202
  <div class="method-description">
203
203
  <p><a class="source-toggle" href="#"
204
- onclick="toggleCode('M000163-source');return false;">[Source]</a></p>
205
- <div class="method-source-code" id="M000163-source">
204
+ onclick="toggleCode('M000199-source');return false;">[Source]</a></p>
205
+ <div class="method-source-code" id="M000199-source">
206
206
  <pre>
207
207
  <span class="ruby-comment cmt"># File lib/wee/renderer/html/canvas.rb, line 14</span>
208
208
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_brush</span>(<span class="ruby-identifier">brush</span>)
@@ -58,6 +58,10 @@
58
58
  <a href="../../files/lib/wee/core/component_rb.html">
59
59
  lib/wee/core/component.rb
60
60
  </a>
61
+ <br />
62
+ <a href="../../files/lib/wee/continuation/core/component_rb.html">
63
+ lib/wee/continuation/core/component.rb
64
+ </a>
61
65
  <br />
62
66
  </td>
63
67
  </tr>
@@ -83,7 +87,7 @@
83
87
  <div id="description">
84
88
  <p>
85
89
  The base class of all components. You should at least overwrite method <a
86
- href="Component.html#M000173">render</a> in your own subclasses.
90
+ href="Component.html#M000209">render</a> in your own subclasses.
87
91
  </p>
88
92
 
89
93
  </div>
@@ -92,13 +96,14 @@ href="Component.html#M000173">render</a> in your own subclasses.
92
96
  <div id="contents-list">
93
97
  <h3 class="section-bar">Contents</h3>
94
98
  <ul>
95
- <li><a href="#SEC00067">Render</a></li>
96
- <li><a href="#SEC00068">Callback</a></li>
97
- <li><a href="#SEC00069">Init</a></li>
98
- <li><a href="#SEC00070">Children</a></li>
99
- <li><a href="#SEC00071">Decoration</a></li>
100
- <li><a href="#SEC00072">Backtrack</a></li>
101
- <li><a href="#SEC00073">Call/Answer</a></li>
99
+ <li><a href="#SEC00074">Render</a></li>
100
+ <li><a href="#SEC00075">Callback</a></li>
101
+ <li><a href="#SEC00076">Init</a></li>
102
+ <li><a href="#SEC00077">Children</a></li>
103
+ <li><a href="#SEC00078">Decoration</a></li>
104
+ <li><a href="#SEC00079">Backtrack</a></li>
105
+ <li><a href="#SEC00080">Call/Answer</a></li>
106
+ <li><a href="#SEC00120">Call/Answer</a></li>
102
107
  </ul>
103
108
  </div>
104
109
 
@@ -106,23 +111,24 @@ href="Component.html#M000173">render</a> in your own subclasses.
106
111
  <h3 class="section-bar">Methods</h3>
107
112
 
108
113
  <div class="name-list">
109
- <a href="#M000178">add_child</a>&nbsp;&nbsp;
110
- <a href="#M000182">add_decoration</a>&nbsp;&nbsp;
111
- <a href="#M000188">answer</a>&nbsp;&nbsp;
112
- <a href="#M000186">backtrack_state</a>&nbsp;&nbsp;
113
- <a href="#M000185">backtrack_state_chain</a>&nbsp;&nbsp;
114
- <a href="#M000187">call</a>&nbsp;&nbsp;
115
- <a href="#M000177">children</a>&nbsp;&nbsp;
116
- <a href="#M000179">decoration</a>&nbsp;&nbsp;
117
- <a href="#M000180">decoration=</a>&nbsp;&nbsp;
118
- <a href="#M000172">do_render_chain</a>&nbsp;&nbsp;
119
- <a href="#M000181">each_decoration</a>&nbsp;&nbsp;
120
- <a href="#M000176">initialize</a>&nbsp;&nbsp;
121
- <a href="#M000175">process_callbacks</a>&nbsp;&nbsp;
122
- <a href="#M000174">process_callbacks_chain</a>&nbsp;&nbsp;
123
- <a href="#M000183">remove_decoration</a>&nbsp;&nbsp;
124
- <a href="#M000184">remove_decoration_if</a>&nbsp;&nbsp;
125
- <a href="#M000173">render</a>&nbsp;&nbsp;
114
+ <a href="#M000214">add_child</a>&nbsp;&nbsp;
115
+ <a href="#M000218">add_decoration</a>&nbsp;&nbsp;
116
+ <a href="#M000224">answer</a>&nbsp;&nbsp;
117
+ <a href="#M000222">backtrack_state</a>&nbsp;&nbsp;
118
+ <a href="#M000221">backtrack_state_chain</a>&nbsp;&nbsp;
119
+ <a href="#M000223">call</a>&nbsp;&nbsp;
120
+ <a href="#M000225">call</a>&nbsp;&nbsp;
121
+ <a href="#M000213">children</a>&nbsp;&nbsp;
122
+ <a href="#M000215">decoration</a>&nbsp;&nbsp;
123
+ <a href="#M000216">decoration=</a>&nbsp;&nbsp;
124
+ <a href="#M000208">do_render_chain</a>&nbsp;&nbsp;
125
+ <a href="#M000217">each_decoration</a>&nbsp;&nbsp;
126
+ <a href="#M000212">initialize</a>&nbsp;&nbsp;
127
+ <a href="#M000211">process_callbacks</a>&nbsp;&nbsp;
128
+ <a href="#M000210">process_callbacks_chain</a>&nbsp;&nbsp;
129
+ <a href="#M000219">remove_decoration</a>&nbsp;&nbsp;
130
+ <a href="#M000220">remove_decoration_if</a>&nbsp;&nbsp;
131
+ <a href="#M000209">render</a>&nbsp;&nbsp;
126
132
  </div>
127
133
  </div>
128
134
 
@@ -142,7 +148,7 @@ href="Component.html#M000173">render</a> in your own subclasses.
142
148
 
143
149
  <!-- if method_list -->
144
150
  <div id="section">
145
- <h2 class="section-title"><a name="SEC00067">Render</a></h2>
151
+ <h2 class="section-title"><a name="SEC00074">Render</a></h2>
146
152
  <div class="section-comment">
147
153
 
148
154
  </div>
@@ -158,11 +164,11 @@ href="Component.html#M000173">render</a> in your own subclasses.
158
164
  <div id="methods">
159
165
  <h3 class="section-bar">Public Instance methods</h3>
160
166
 
161
- <div id="method-M000172" class="method-detail">
162
- <a name="M000172"></a>
167
+ <div id="method-M000208" class="method-detail">
168
+ <a name="M000208"></a>
163
169
 
164
170
  <div class="method-heading">
165
- <a href="#M000172" class="method-signature">
171
+ <a href="#M000208" class="method-signature">
166
172
  <span class="method-name">do_render_chain</span><span class="method-args">(rendering_context)</span>
167
173
  </a>
168
174
  </div>
@@ -170,7 +176,7 @@ href="Component.html#M000173">render</a> in your own subclasses.
170
176
  <div class="method-description">
171
177
  <p>
172
178
  Starts rendering the decoration chain by calling method <a
173
- href="Presenter.html#M000191">Presenter#do_render</a> for the first
179
+ href="Presenter.html#M000229">Presenter#do_render</a> for the first
174
180
  decoration of the component, or calling <em>do_render</em> for the
175
181
  component itself if no decorations were specified.
176
182
  </p>
@@ -180,8 +186,8 @@ component itself if no decorations were specified.
180
186
  </dd>
181
187
  </dl>
182
188
  <p><a class="source-toggle" href="#"
183
- onclick="toggleCode('M000172-source');return false;">[Source]</a></p>
184
- <div class="method-source-code" id="M000172-source">
189
+ onclick="toggleCode('M000208-source');return false;">[Source]</a></p>
190
+ <div class="method-source-code" id="M000208-source">
185
191
  <pre>
186
192
  <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 19</span>
187
193
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">do_render_chain</span>(<span class="ruby-identifier">rendering_context</span>)
@@ -192,11 +198,11 @@ component itself if no decorations were specified.
192
198
  </div>
193
199
  </div>
194
200
 
195
- <div id="method-M000173" class="method-detail">
196
- <a name="M000173"></a>
201
+ <div id="method-M000209" class="method-detail">
202
+ <a name="M000209"></a>
197
203
 
198
204
  <div class="method-heading">
199
- <a href="#M000173" class="method-signature">
205
+ <a href="#M000209" class="method-signature">
200
206
  <span class="method-name">render</span><span class="method-args">()</span>
201
207
  </a>
202
208
  </div>
@@ -213,8 +219,8 @@ view. By default this method does nothing!
213
219
  Use the current renderer as returned by renderer or it&#8217;s short-cut r.
214
220
  </p>
215
221
  <p><a class="source-toggle" href="#"
216
- onclick="toggleCode('M000173-source');return false;">[Source]</a></p>
217
- <div class="method-source-code" id="M000173-source">
222
+ onclick="toggleCode('M000209-source');return false;">[Source]</a></p>
223
+ <div class="method-source-code" id="M000209-source">
218
224
  <pre>
219
225
  <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 30</span>
220
226
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">render</span>
@@ -227,7 +233,7 @@ Use the current renderer as returned by renderer or it&#8217;s short-cut r.
227
233
 
228
234
  </div>
229
235
  <div id="section">
230
- <h2 class="section-title"><a name="SEC00068">Callback</a></h2>
236
+ <h2 class="section-title"><a name="SEC00075">Callback</a></h2>
231
237
  <div class="section-comment">
232
238
 
233
239
  </div>
@@ -243,11 +249,11 @@ Use the current renderer as returned by renderer or it&#8217;s short-cut r.
243
249
  <div id="methods">
244
250
  <h3 class="section-bar">Public Instance methods</h3>
245
251
 
246
- <div id="method-M000175" class="method-detail">
247
- <a name="M000175"></a>
252
+ <div id="method-M000211" class="method-detail">
253
+ <a name="M000211"></a>
248
254
 
249
255
  <div class="method-heading">
250
- <a href="#M000175" class="method-signature">
256
+ <a href="#M000211" class="method-signature">
251
257
  <span class="method-name">process_callbacks</span><span class="method-args">(callback_stream)</span>
252
258
  </a>
253
259
  </div>
@@ -267,8 +273,8 @@ processed/invoked before any of the action callbacks are processed/invoked.
267
273
  </dd>
268
274
  </dl>
269
275
  <p><a class="source-toggle" href="#"
270
- onclick="toggleCode('M000175-source');return false;">[Source]</a></p>
271
- <div class="method-source-code" id="M000175-source">
276
+ onclick="toggleCode('M000211-source');return false;">[Source]</a></p>
277
+ <div class="method-source-code" id="M000211-source">
272
278
  <pre>
273
279
  <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 59</span>
274
280
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process_callbacks</span>(<span class="ruby-identifier">callback_stream</span>)
@@ -284,11 +290,11 @@ processed/invoked before any of the action callbacks are processed/invoked.
284
290
  </div>
285
291
  </div>
286
292
 
287
- <div id="method-M000174" class="method-detail">
288
- <a name="M000174"></a>
293
+ <div id="method-M000210" class="method-detail">
294
+ <a name="M000210"></a>
289
295
 
290
296
  <div class="method-heading">
291
- <a href="#M000174" class="method-signature">
297
+ <a href="#M000210" class="method-signature">
292
298
  <span class="method-name">process_callbacks_chain</span><span class="method-args">(callback_stream)</span>
293
299
  </a>
294
300
  </div>
@@ -296,7 +302,7 @@ processed/invoked before any of the action callbacks are processed/invoked.
296
302
  <div class="method-description">
297
303
  <p>
298
304
  Starts processing the callbacks for the decoration chain by invoking method
299
- <a href="Component.html#M000175">process_callbacks</a> of the first
305
+ <a href="Component.html#M000211">process_callbacks</a> of the first
300
306
  decoration or the component itself if no decorations were specified.
301
307
  </p>
302
308
  <dl>
@@ -305,8 +311,8 @@ decoration or the component itself if no decorations were specified.
305
311
  </dd>
306
312
  </dl>
307
313
  <p><a class="source-toggle" href="#"
308
- onclick="toggleCode('M000174-source');return false;">[Source]</a></p>
309
- <div class="method-source-code" id="M000174-source">
314
+ onclick="toggleCode('M000210-source');return false;">[Source]</a></p>
315
+ <div class="method-source-code" id="M000210-source">
310
316
  <pre>
311
317
  <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 46</span>
312
318
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process_callbacks_chain</span>(<span class="ruby-identifier">callback_stream</span>)
@@ -320,7 +326,7 @@ decoration or the component itself if no decorations were specified.
320
326
 
321
327
  </div>
322
328
  <div id="section">
323
- <h2 class="section-title"><a name="SEC00069">Init</a></h2>
329
+ <h2 class="section-title"><a name="SEC00076">Init</a></h2>
324
330
  <div class="section-comment">
325
331
 
326
332
  </div>
@@ -336,11 +342,11 @@ decoration or the component itself if no decorations were specified.
336
342
  <div id="methods">
337
343
  <h3 class="section-bar">Protected Instance methods</h3>
338
344
 
339
- <div id="method-M000176" class="method-detail">
340
- <a name="M000176"></a>
345
+ <div id="method-M000212" class="method-detail">
346
+ <a name="M000212"></a>
341
347
 
342
348
  <div class="method-heading">
343
- <a href="#M000176" class="method-signature">
349
+ <a href="#M000212" class="method-signature">
344
350
  <span class="method-name">initialize</span><span class="method-args">()</span>
345
351
  </a>
346
352
  </div>
@@ -354,8 +360,8 @@ Call this method from your own components&#8217; <em>initialize</em> method
354
360
  using <tt>super</tt>, before setting up anything else!
355
361
  </p>
356
362
  <p><a class="source-toggle" href="#"
357
- onclick="toggleCode('M000176-source');return false;">[Source]</a></p>
358
- <div class="method-source-code" id="M000176-source">
363
+ onclick="toggleCode('M000212-source');return false;">[Source]</a></p>
364
+ <div class="method-source-code" id="M000212-source">
359
365
  <pre>
360
366
  <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 79</span>
361
367
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>() <span class="ruby-comment cmt"># :notnew:</span>
@@ -370,7 +376,7 @@ using <tt>super</tt>, before setting up anything else!
370
376
 
371
377
  </div>
372
378
  <div id="section">
373
- <h2 class="section-title"><a name="SEC00070">Children</a></h2>
379
+ <h2 class="section-title"><a name="SEC00077">Children</a></h2>
374
380
  <div class="section-comment">
375
381
 
376
382
  </div>
@@ -386,11 +392,11 @@ using <tt>super</tt>, before setting up anything else!
386
392
  <div id="methods">
387
393
  <h3 class="section-bar">Protected Instance methods</h3>
388
394
 
389
- <div id="method-M000178" class="method-detail">
390
- <a name="M000178"></a>
395
+ <div id="method-M000214" class="method-detail">
396
+ <a name="M000214"></a>
391
397
 
392
398
  <div class="method-heading">
393
- <a href="#M000178" class="method-signature">
399
+ <a href="#M000214" class="method-signature">
394
400
  <span class="method-name">add_child</span><span class="method-args">(child)</span>
395
401
  </a>
396
402
  </div>
@@ -419,23 +425,24 @@ course only if you want backtracking at all):
419
425
  end
420
426
  </pre>
421
427
  <p><a class="source-toggle" href="#"
422
- onclick="toggleCode('M000178-source');return false;">[Source]</a></p>
423
- <div class="method-source-code" id="M000178-source">
428
+ onclick="toggleCode('M000214-source');return false;">[Source]</a></p>
429
+ <div class="method-source-code" id="M000214-source">
424
430
  <pre>
425
431
  <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 115</span>
426
432
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_child</span>(<span class="ruby-identifier">child</span>)
427
433
  <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">children</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">child</span>
434
+ <span class="ruby-identifier">child</span>
428
435
  <span class="ruby-keyword kw">end</span>
429
436
  </pre>
430
437
  </div>
431
438
  </div>
432
439
  </div>
433
440
 
434
- <div id="method-M000177" class="method-detail">
435
- <a name="M000177"></a>
441
+ <div id="method-M000213" class="method-detail">
442
+ <a name="M000213"></a>
436
443
 
437
444
  <div class="method-heading">
438
- <a href="#M000177" class="method-signature">
445
+ <a href="#M000213" class="method-signature">
439
446
  <span class="method-name">children</span><span class="method-args">()</span>
440
447
  </a>
441
448
  </div>
@@ -445,8 +452,8 @@ course only if you want backtracking at all):
445
452
  Returns all direct child components collected in an array.
446
453
  </p>
447
454
  <p><a class="source-toggle" href="#"
448
- onclick="toggleCode('M000177-source');return false;">[Source]</a></p>
449
- <div class="method-source-code" id="M000177-source">
455
+ onclick="toggleCode('M000213-source');return false;">[Source]</a></p>
456
+ <div class="method-source-code" id="M000213-source">
450
457
  <pre>
451
458
  <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 92</span>
452
459
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">children</span>
@@ -460,7 +467,7 @@ Returns all direct child components collected in an array.
460
467
 
461
468
  </div>
462
469
  <div id="section">
463
- <h2 class="section-title"><a name="SEC00071">Decoration</a></h2>
470
+ <h2 class="section-title"><a name="SEC00078">Decoration</a></h2>
464
471
  <div class="section-comment">
465
472
 
466
473
  </div>
@@ -476,11 +483,11 @@ Returns all direct child components collected in an array.
476
483
  <div id="methods">
477
484
  <h3 class="section-bar">Public Instance methods</h3>
478
485
 
479
- <div id="method-M000182" class="method-detail">
480
- <a name="M000182"></a>
486
+ <div id="method-M000218" class="method-detail">
487
+ <a name="M000218"></a>
481
488
 
482
489
  <div class="method-heading">
483
- <a href="#M000182" class="method-signature">
490
+ <a href="#M000218" class="method-signature">
484
491
  <span class="method-name">add_decoration</span><span class="method-args">(d)</span>
485
492
  </a>
486
493
  </div>
@@ -495,10 +502,10 @@ decoration is added in front of all other local decorations but after all
495
502
  global decorations.
496
503
  </p>
497
504
  <p><a class="source-toggle" href="#"
498
- onclick="toggleCode('M000182-source');return false;">[Source]</a></p>
499
- <div class="method-source-code" id="M000182-source">
505
+ onclick="toggleCode('M000218-source');return false;">[Source]</a></p>
506
+ <div class="method-source-code" id="M000218-source">
500
507
  <pre>
501
- <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 155</span>
508
+ <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 156</span>
502
509
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_decoration</span>(<span class="ruby-identifier">d</span>)
503
510
  <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">d</span>.<span class="ruby-identifier">global?</span>
504
511
  <span class="ruby-identifier">d</span>.<span class="ruby-identifier">owner</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">decoration</span>
@@ -528,11 +535,11 @@ global decorations.
528
535
  </div>
529
536
  </div>
530
537
 
531
- <div id="method-M000179" class="method-detail">
532
- <a name="M000179"></a>
538
+ <div id="method-M000215" class="method-detail">
539
+ <a name="M000215"></a>
533
540
 
534
541
  <div class="method-heading">
535
- <a href="#M000179" class="method-signature">
542
+ <a href="#M000215" class="method-signature">
536
543
  <span class="method-name">decoration</span><span class="method-args">()</span>
537
544
  </a>
538
545
  </div>
@@ -543,10 +550,10 @@ Returns the first decoration from the component&#8217;s decoration chain,
543
550
  or <tt>self</tt> if no decorations were specified for the component.
544
551
  </p>
545
552
  <p><a class="source-toggle" href="#"
546
- onclick="toggleCode('M000179-source');return false;">[Source]</a></p>
547
- <div class="method-source-code" id="M000179-source">
553
+ onclick="toggleCode('M000215-source');return false;">[Source]</a></p>
554
+ <div class="method-source-code" id="M000215-source">
548
555
  <pre>
549
- <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 128</span>
556
+ <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 129</span>
550
557
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">decoration</span>
551
558
  <span class="ruby-ivar">@decoration</span>.<span class="ruby-identifier">value</span>
552
559
  <span class="ruby-keyword kw">end</span>
@@ -555,11 +562,11 @@ or <tt>self</tt> if no decorations were specified for the component.
555
562
  </div>
556
563
  </div>
557
564
 
558
- <div id="method-M000180" class="method-detail">
559
- <a name="M000180"></a>
565
+ <div id="method-M000216" class="method-detail">
566
+ <a name="M000216"></a>
560
567
 
561
568
  <div class="method-heading">
562
- <a href="#M000180" class="method-signature">
569
+ <a href="#M000216" class="method-signature">
563
570
  <span class="method-name">decoration=</span><span class="method-args">(d)</span>
564
571
  </a>
565
572
  </div>
@@ -569,10 +576,10 @@ or <tt>self</tt> if no decorations were specified for the component.
569
576
  Set the pointer to the first decoration to <tt>d</tt>.
570
577
  </p>
571
578
  <p><a class="source-toggle" href="#"
572
- onclick="toggleCode('M000180-source');return false;">[Source]</a></p>
573
- <div class="method-source-code" id="M000180-source">
579
+ onclick="toggleCode('M000216-source');return false;">[Source]</a></p>
580
+ <div class="method-source-code" id="M000216-source">
574
581
  <pre>
575
- <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 134</span>
582
+ <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 135</span>
576
583
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">decoration=</span>(<span class="ruby-identifier">d</span>)
577
584
  <span class="ruby-ivar">@decoration</span>.<span class="ruby-identifier">value</span> = <span class="ruby-identifier">d</span>
578
585
  <span class="ruby-keyword kw">end</span>
@@ -581,11 +588,11 @@ Set the pointer to the first decoration to <tt>d</tt>.
581
588
  </div>
582
589
  </div>
583
590
 
584
- <div id="method-M000181" class="method-detail">
585
- <a name="M000181"></a>
591
+ <div id="method-M000217" class="method-detail">
592
+ <a name="M000217"></a>
586
593
 
587
594
  <div class="method-heading">
588
- <a href="#M000181" class="method-signature">
595
+ <a href="#M000217" class="method-signature">
589
596
  <span class="method-name">each_decoration</span><span class="method-args">( {|decoration| ...}</span>
590
597
  </a>
591
598
  </div>
@@ -595,10 +602,10 @@ Set the pointer to the first decoration to <tt>d</tt>.
595
602
  Iterates over all decorations (note that the component itself is excluded).
596
603
  </p>
597
604
  <p><a class="source-toggle" href="#"
598
- onclick="toggleCode('M000181-source');return false;">[Source]</a></p>
599
- <div class="method-source-code" id="M000181-source">
605
+ onclick="toggleCode('M000217-source');return false;">[Source]</a></p>
606
+ <div class="method-source-code" id="M000217-source">
600
607
  <pre>
601
- <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 140</span>
608
+ <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 141</span>
602
609
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each_decoration</span> <span class="ruby-comment cmt"># :yields: decoration</span>
603
610
  <span class="ruby-identifier">d</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">decoration</span>
604
611
  <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
@@ -612,11 +619,11 @@ Iterates over all decorations (note that the component itself is excluded).
612
619
  </div>
613
620
  </div>
614
621
 
615
- <div id="method-M000183" class="method-detail">
616
- <a name="M000183"></a>
622
+ <div id="method-M000219" class="method-detail">
623
+ <a name="M000219"></a>
617
624
 
618
625
  <div class="method-heading">
619
- <a href="#M000183" class="method-signature">
626
+ <a href="#M000219" class="method-signature">
620
627
  <span class="method-name">remove_decoration</span><span class="method-args">(d)</span>
621
628
  </a>
622
629
  </div>
@@ -630,10 +637,10 @@ Returns the removed decoration or <tt>nil</tt> if it did not exist in the
630
637
  decoration chain.
631
638
  </p>
632
639
  <p><a class="source-toggle" href="#"
633
- onclick="toggleCode('M000183-source');return false;">[Source]</a></p>
634
- <div class="method-source-code" id="M000183-source">
640
+ onclick="toggleCode('M000219-source');return false;">[Source]</a></p>
641
+ <div class="method-source-code" id="M000219-source">
635
642
  <pre>
636
- <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 185</span>
643
+ <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 186</span>
637
644
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove_decoration</span>(<span class="ruby-identifier">d</span>)
638
645
  <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">d</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">decoration</span> <span class="ruby-comment cmt"># 'd' is in front</span>
639
646
  <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">decoration</span> = <span class="ruby-identifier">d</span>.<span class="ruby-identifier">owner</span>
@@ -656,11 +663,11 @@ decoration chain.
656
663
  </div>
657
664
  </div>
658
665
 
659
- <div id="method-M000184" class="method-detail">
660
- <a name="M000184"></a>
666
+ <div id="method-M000220" class="method-detail">
667
+ <a name="M000220"></a>
661
668
 
662
669
  <div class="method-heading">
663
- <a href="#M000184" class="method-signature">
670
+ <a href="#M000220" class="method-signature">
664
671
  <span class="method-name">remove_decoration_if</span><span class="method-args">( {|decoration| ...}</span>
665
672
  </a>
666
673
  </div>
@@ -676,10 +683,10 @@ Example (removes all decorations of class <tt>HaloDecoration</tt>):
676
683
  remove_decoration_if {|d| d.class == HaloDecoration}
677
684
  </pre>
678
685
  <p><a class="source-toggle" href="#"
679
- onclick="toggleCode('M000184-source');return false;">[Source]</a></p>
680
- <div class="method-source-code" id="M000184-source">
686
+ onclick="toggleCode('M000220-source');return false;">[Source]</a></p>
687
+ <div class="method-source-code" id="M000220-source">
681
688
  <pre>
682
- <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 210</span>
689
+ <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 211</span>
683
690
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove_decoration_if</span> <span class="ruby-comment cmt"># :yields: decoration</span>
684
691
  <span class="ruby-identifier">to_remove</span> = []
685
692
  <span class="ruby-identifier">each_decoration</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span> <span class="ruby-identifier">to_remove</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">d</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">d</span>}
@@ -693,7 +700,7 @@ Example (removes all decorations of class <tt>HaloDecoration</tt>):
693
700
 
694
701
  </div>
695
702
  <div id="section">
696
- <h2 class="section-title"><a name="SEC00072">Backtrack</a></h2>
703
+ <h2 class="section-title"><a name="SEC00079">Backtrack</a></h2>
697
704
  <div class="section-comment">
698
705
 
699
706
  </div>
@@ -709,11 +716,11 @@ Example (removes all decorations of class <tt>HaloDecoration</tt>):
709
716
  <div id="methods">
710
717
  <h3 class="section-bar">Public Instance methods</h3>
711
718
 
712
- <div id="method-M000186" class="method-detail">
713
- <a name="M000186"></a>
719
+ <div id="method-M000222" class="method-detail">
720
+ <a name="M000222"></a>
714
721
 
715
722
  <div class="method-heading">
716
- <a href="#M000186" class="method-signature">
723
+ <a href="#M000222" class="method-signature">
717
724
  <span class="method-name">backtrack_state</span><span class="method-args">(snapshot)</span>
718
725
  </a>
719
726
  </div>
@@ -740,7 +747,7 @@ the decoration-object itself!).
740
747
  <p>
741
748
  For example if you dynamically add children to your component, you might
742
749
  want to backtrack the children array. Therefore you simply pass it to the
743
- <a href="Snapshot.html#M000075">Snapshot#add</a> method:
750
+ <a href="Snapshot.html#M000093">Snapshot#add</a> method:
744
751
  </p>
745
752
  <pre>
746
753
  def backtrack_state(snapshot)
@@ -749,11 +756,11 @@ want to backtrack the children array. Therefore you simply pass it to the
749
756
  end
750
757
  </pre>
751
758
  <p>
752
- This will call <a href="../Array.html#M000003">Array#take_snapshot</a> to
759
+ This will call <a href="../Array.html#M000005">Array#take_snapshot</a> to
753
760
  take the snapshot for the children array. If at a later point in time a
754
761
  snapshot is restored, <a
755
- href="../Array.html#M000004">Array#restore_snapshot</a> will be called with
756
- the return value of <a href="../Array.html#M000003">Array#take_snapshot</a>
762
+ href="../Array.html#M000006">Array#restore_snapshot</a> will be called with
763
+ the return value of <a href="../Array.html#M000005">Array#take_snapshot</a>
757
764
  as argument.
758
765
  </p>
759
766
  <dl>
@@ -762,10 +769,10 @@ as argument.
762
769
  </dd>
763
770
  </dl>
764
771
  <p><a class="source-toggle" href="#"
765
- onclick="toggleCode('M000186-source');return false;">[Source]</a></p>
766
- <div class="method-source-code" id="M000186-source">
772
+ onclick="toggleCode('M000222-source');return false;">[Source]</a></p>
773
+ <div class="method-source-code" id="M000222-source">
767
774
  <pre>
768
- <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 267</span>
775
+ <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 268</span>
769
776
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backtrack_state</span>(<span class="ruby-identifier">snapshot</span>)
770
777
  <span class="ruby-identifier">snapshot</span>.<span class="ruby-identifier">add</span>(<span class="ruby-ivar">@decoration</span>)
771
778
  <span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span> <span class="ruby-identifier">child</span>.<span class="ruby-identifier">backtrack_state_chain</span>(<span class="ruby-identifier">snapshot</span>) <span class="ruby-keyword kw">end</span>
@@ -775,11 +782,11 @@ as argument.
775
782
  </div>
776
783
  </div>
777
784
 
778
- <div id="method-M000185" class="method-detail">
779
- <a name="M000185"></a>
785
+ <div id="method-M000221" class="method-detail">
786
+ <a name="M000221"></a>
780
787
 
781
788
  <div class="method-heading">
782
- <a href="#M000185" class="method-signature">
789
+ <a href="#M000221" class="method-signature">
783
790
  <span class="method-name">backtrack_state_chain</span><span class="method-args">(snapshot)</span>
784
791
  </a>
785
792
  </div>
@@ -787,11 +794,11 @@ as argument.
787
794
  <div class="method-description">
788
795
  <p>
789
796
  Starts the backtrack-state phase for the decoration chain, by invoking
790
- method <a href="Component.html#M000186">backtrack_state</a> of the first
797
+ method <a href="Component.html#M000222">backtrack_state</a> of the first
791
798
  decoration or the component itself if no decorations were specified.
792
799
  </p>
793
800
  <p>
794
- See <a href="Component.html#M000186">backtrack_state</a> for details.
801
+ See <a href="Component.html#M000222">backtrack_state</a> for details.
795
802
  </p>
796
803
  <dl>
797
804
  <dt><tt>snapshot</tt></dt><dd>An object of class <a href="Snapshot.html">Snapshot</a>
@@ -799,10 +806,10 @@ See <a href="Component.html#M000186">backtrack_state</a> for details.
799
806
  </dd>
800
807
  </dl>
801
808
  <p><a class="source-toggle" href="#"
802
- onclick="toggleCode('M000185-source');return false;">[Source]</a></p>
803
- <div class="method-source-code" id="M000185-source">
809
+ onclick="toggleCode('M000221-source');return false;">[Source]</a></p>
810
+ <div class="method-source-code" id="M000221-source">
804
811
  <pre>
805
- <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 231</span>
812
+ <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 232</span>
806
813
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backtrack_state_chain</span>(<span class="ruby-identifier">snapshot</span>)
807
814
  <span class="ruby-identifier">decoration</span>.<span class="ruby-identifier">backtrack_state</span>(<span class="ruby-identifier">snapshot</span>)
808
815
  <span class="ruby-keyword kw">end</span>
@@ -814,11 +821,17 @@ See <a href="Component.html#M000186">backtrack_state</a> for details.
814
821
 
815
822
  </div>
816
823
  <div id="section">
817
- <h2 class="section-title"><a name="SEC00073">Call/Answer</a></h2>
824
+ <h2 class="section-title"><a name="SEC00080">Call/Answer</a></h2>
818
825
  <div class="section-comment">
819
826
 
820
827
  </div>
821
828
 
829
+ <div id="class-list">
830
+ <h3 class="section-bar">Classes and Modules</h3>
831
+
832
+ Class <a href="Component/OnAnswer.html" class="link">Wee::Component::OnAnswer</a><br />
833
+
834
+ </div>
822
835
 
823
836
 
824
837
 
@@ -830,11 +843,11 @@ See <a href="Component.html#M000186">backtrack_state</a> for details.
830
843
  <div id="methods">
831
844
  <h3 class="section-bar">Protected Instance methods</h3>
832
845
 
833
- <div id="method-M000188" class="method-detail">
834
- <a name="M000188"></a>
846
+ <div id="method-M000224" class="method-detail">
847
+ <a name="M000224"></a>
835
848
 
836
849
  <div class="method-heading">
837
- <a href="#M000188" class="method-signature">
850
+ <a href="#M000224" class="method-signature">
838
851
  <span class="method-name">answer</span><span class="method-args">(*args)</span>
839
852
  </a>
840
853
  </div>
@@ -844,17 +857,17 @@ See <a href="Component.html#M000186">backtrack_state</a> for details.
844
857
  Return from a called component.
845
858
  </p>
846
859
  <p>
847
- NOTE that <a href="Component.html#M000188">answer</a> never returns.
860
+ NOTE that <a href="Component.html#M000224">answer</a> never returns.
848
861
  </p>
849
862
  <p>
850
- See <a href="Component.html#M000187">call</a> for a detailed description of
863
+ See <a href="Component.html#M000223">call</a> for a detailed description of
851
864
  the call/answer mechanism.
852
865
  </p>
853
866
  <p><a class="source-toggle" href="#"
854
- onclick="toggleCode('M000188-source');return false;">[Source]</a></p>
855
- <div class="method-source-code" id="M000188-source">
867
+ onclick="toggleCode('M000224-source');return false;">[Source]</a></p>
868
+ <div class="method-source-code" id="M000224-source">
856
869
  <pre>
857
- <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 334</span>
870
+ <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 346</span>
858
871
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">answer</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
859
872
  <span class="ruby-identifier">throw</span> <span class="ruby-identifier">:wee_answer</span>, <span class="ruby-identifier">args</span>
860
873
  <span class="ruby-keyword kw">end</span>
@@ -863,12 +876,86 @@ the call/answer mechanism.
863
876
  </div>
864
877
  </div>
865
878
 
866
- <div id="method-M000187" class="method-detail">
867
- <a name="M000187"></a>
879
+ <div id="method-M000223" class="method-detail">
880
+ <a name="M000223"></a>
881
+
882
+ <div class="method-heading">
883
+ <a href="#M000223" class="method-signature">
884
+ <span class="method-name">call</span><span class="method-args">(component, return_callback=nil, *additional_args)</span>
885
+ </a>
886
+ </div>
887
+
888
+ <div class="method-description">
889
+ <p>
890
+ The component to be called is wrapped with an <a
891
+ href="AnswerDecoration.html">AnswerDecoration</a> and the
892
+ <tt>return_callback</tt> parameter is assigned to it&#8217;s
893
+ <tt>on_answer</tt> attribute (not directly as there are cleanup actions to
894
+ be taken before the <tt>return_callback</tt> can be invoked, hence we wrap
895
+ it in the <a href="Component/OnAnswer.html">OnAnswer</a> class). Then a <a
896
+ href="Delegate.html">Delegate</a> decoration is added to the calling
897
+ component (self), which delegates to the component to be called
898
+ (<tt>component</tt>).
899
+ </p>
900
+ <p>
901
+ Then we unwind the calling stack back to the <a
902
+ href="Session.html">Session</a> by throwing <em>:wee_back_to_session</em>.
903
+ This means, that there is only ever one action callback invoked per
904
+ request. This is not neccessary, we could simply omit this, but then
905
+ we&#8217;d break compatibility with the implementation using continuations.
906
+ </p>
907
+ <p>
908
+ When at a later point in time the called component invokes <a
909
+ href="Component.html#M000224">answer</a>, this will throw a
910
+ <em>:wee_answer</em> exception which is catched in the <a
911
+ href="AnswerDecoration.html">AnswerDecoration</a>. The <a
912
+ href="AnswerDecoration.html">AnswerDecoration</a> then invokes the
913
+ <tt>on_answer</tt> callback which cleans up the decorations we added during
914
+ <a href="Component.html#M000223">call</a>, and finally passes control to
915
+ the <tt>return_callback</tt>.
916
+ </p>
917
+ <p><a class="source-toggle" href="#"
918
+ onclick="toggleCode('M000223-source');return false;">[Source]</a></p>
919
+ <div class="method-source-code" id="M000223-source">
920
+ <pre>
921
+ <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 317</span>
922
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call</span>(<span class="ruby-identifier">component</span>, <span class="ruby-identifier">return_callback</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">additional_args</span>)
923
+ <span class="ruby-identifier">add_decoration</span>(<span class="ruby-identifier">delegate</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Delegate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">component</span>))
924
+ <span class="ruby-identifier">component</span>.<span class="ruby-identifier">add_decoration</span>(<span class="ruby-identifier">answer</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">AnswerDecoration</span>.<span class="ruby-identifier">new</span>)
925
+ <span class="ruby-identifier">answer</span>.<span class="ruby-identifier">on_answer</span> = <span class="ruby-constant">OnAnswer</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">component</span>, <span class="ruby-identifier">delegate</span>, <span class="ruby-identifier">answer</span>,
926
+ <span class="ruby-identifier">return_callback</span>, <span class="ruby-identifier">additional_args</span>)
927
+ <span class="ruby-identifier">throw</span> <span class="ruby-identifier">:wee_back_to_session</span>
928
+ <span class="ruby-keyword kw">end</span>
929
+ </pre>
930
+ </div>
931
+ </div>
932
+ </div>
933
+
934
+
935
+ </div>
936
+ <div id="section">
937
+ <h2 class="section-title"><a name="SEC00120">Call/Answer</a></h2>
938
+ <div class="section-comment">
939
+
940
+ </div>
941
+
942
+
943
+
944
+
945
+
946
+
947
+
948
+
949
+ <!-- if method_list -->
950
+ <div id="methods">
951
+ <h3 class="section-bar">Protected Instance methods</h3>
952
+
953
+ <div id="method-M000225" class="method-detail">
954
+ <a name="M000225"></a>
868
955
 
869
956
  <div class="method-heading">
870
- <a href="#M000187" class="method-signature">
871
- <span class="method-name">call</span><span class="method-args">(component, return_callback=:use_continuation)</span>
957
+ <a href="#M000225" class="method-signature">
958
+ <span class="method-name">call</span><span class="method-args">(component, return_callback=:use_continuation, *additional_args)</span>
872
959
  </a>
873
960
  </div>
874
961
 
@@ -876,7 +963,7 @@ the call/answer mechanism.
876
963
  <p>
877
964
  Call another component. The calling component is neither rendered nor are
878
965
  it&#8217;s callbacks processed until the called component answers using
879
- method <a href="Component.html#M000188">answer</a>.
966
+ method <a href="Component.html#M000224">answer</a>.
880
967
  </p>
881
968
  <dl>
882
969
  <dt><tt>component</tt></dt><dd>The component to be called.
@@ -896,15 +983,15 @@ calling component (self), which delegates to the component to be called
896
983
  href="Session.html">Session</a> by throwing <em>:wee_back_to_session</em>.
897
984
  This means, that there is only ever one action callback invoked per
898
985
  request. When at a later point in time the called component invokes <a
899
- href="Component.html#M000188">answer</a>, this will throw a
986
+ href="Component.html#M000224">answer</a>, this will throw a
900
987
  <em>:wee_answer</em> exception which is catched in the <a
901
988
  href="AnswerDecoration.html">AnswerDecoration</a>. The <a
902
989
  href="AnswerDecoration.html">AnswerDecoration</a> then jumps back to the
903
990
  continuation we created at the beginning, and finally method <a
904
- href="Component.html#M000187">call</a> returns.
991
+ href="Component.html#M000223">call</a> returns.
905
992
  </p>
906
993
  <p>
907
- Note that <a href="Component.html#M000187">call</a> returns to an
994
+ Note that <a href="Component.html#M000223">call</a> returns to an
908
995
  &quot;old&quot; stack-frame from a previous request. That is why we throw
909
996
  <em>:wee_back_to_session</em> after invoking an action callback, and
910
997
  that&#8217;s why only ever one is invoked. We could remove this limitation
@@ -912,11 +999,11 @@ without problems, but then there would be a difference between those action
912
999
  callbacks that call other components and those that do not.
913
1000
  </p>
914
1001
  <p><a class="source-toggle" href="#"
915
- onclick="toggleCode('M000187-source');return false;">[Source]</a></p>
916
- <div class="method-source-code" id="M000187-source">
1002
+ onclick="toggleCode('M000225-source');return false;">[Source]</a></p>
1003
+ <div class="method-source-code" id="M000225-source">
917
1004
  <pre>
918
- <span class="ruby-comment cmt"># File lib/wee/core/component.rb, line 305</span>
919
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call</span>(<span class="ruby-identifier">component</span>, <span class="ruby-identifier">return_callback</span>=<span class="ruby-identifier">:use_continuation</span>)
1005
+ <span class="ruby-comment cmt"># File lib/wee/continuation/core/component.rb, line 36</span>
1006
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">call</span>(<span class="ruby-identifier">component</span>, <span class="ruby-identifier">return_callback</span>=<span class="ruby-identifier">:use_continuation</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">additional_args</span>)
920
1007
  <span class="ruby-identifier">add_decoration</span>(<span class="ruby-identifier">delegate</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Delegate</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">component</span>))
921
1008
  <span class="ruby-identifier">component</span>.<span class="ruby-identifier">add_decoration</span>(<span class="ruby-identifier">answer</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">AnswerDecoration</span>.<span class="ruby-identifier">new</span>)
922
1009
 
@@ -929,12 +1016,8 @@ callbacks that call other components and those that do not.
929
1016
  <span class="ruby-identifier">component</span>.<span class="ruby-identifier">remove_decoration</span>(<span class="ruby-identifier">answer</span>)
930
1017
  <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>
931
1018
  <span class="ruby-keyword kw">else</span>
932
- <span class="ruby-comment cmt"># TODO: make this marshallable! </span>
933
- <span class="ruby-identifier">answer</span>.<span class="ruby-identifier">on_answer</span> = <span class="ruby-identifier">proc</span> {<span class="ruby-operator">|</span><span class="ruby-operator">*</span><span class="ruby-identifier">args</span><span class="ruby-operator">|</span>
934
- <span class="ruby-identifier">remove_decoration</span>(<span class="ruby-identifier">delegate</span>)
935
- <span class="ruby-identifier">component</span>.<span class="ruby-identifier">remove_decoration</span>(<span class="ruby-identifier">answer</span>)
936
- <span class="ruby-identifier">return_callback</span>.<span class="ruby-identifier">call</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
937
- }
1019
+ <span class="ruby-identifier">answer</span>.<span class="ruby-identifier">on_answer</span> = <span class="ruby-constant">OnAnswer</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">component</span>, <span class="ruby-identifier">delegate</span>, <span class="ruby-identifier">answer</span>,
1020
+ <span class="ruby-identifier">return_callback</span>, <span class="ruby-identifier">additional_args</span>)
938
1021
  <span class="ruby-identifier">throw</span> <span class="ruby-identifier">:wee_back_to_session</span>
939
1022
  <span class="ruby-keyword kw">end</span>
940
1023
  <span class="ruby-keyword kw">end</span>