wee 0.4.0 → 0.5.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 (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
@@ -88,9 +88,9 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000166">current</a>&nbsp;&nbsp;
92
- <a href="#M000165">new</a>&nbsp;&nbsp;
93
- <a href="#M000167">next</a>&nbsp;&nbsp;
91
+ <a href="#M000202">current</a>&nbsp;&nbsp;
92
+ <a href="#M000201">new</a>&nbsp;&nbsp;
93
+ <a href="#M000203">next</a>&nbsp;&nbsp;
94
94
  </div>
95
95
  </div>
96
96
 
@@ -112,19 +112,19 @@
112
112
  <div id="methods">
113
113
  <h3 class="section-bar">Public Class methods</h3>
114
114
 
115
- <div id="method-M000165" class="method-detail">
116
- <a name="M000165"></a>
115
+ <div id="method-M000201" class="method-detail">
116
+ <a name="M000201"></a>
117
117
 
118
118
  <div class="method-heading">
119
- <a href="#M000165" class="method-signature">
119
+ <a href="#M000201" class="method-signature">
120
120
  <span class="method-name">new</span><span class="method-args">(initial_value=0)</span>
121
121
  </a>
122
122
  </div>
123
123
 
124
124
  <div class="method-description">
125
125
  <p><a class="source-toggle" href="#"
126
- onclick="toggleCode('M000165-source');return false;">[Source]</a></p>
127
- <div class="method-source-code" id="M000165-source">
126
+ onclick="toggleCode('M000201-source');return false;">[Source]</a></p>
127
+ <div class="method-source-code" id="M000201-source">
128
128
  <pre>
129
129
  <span class="ruby-comment cmt"># File lib/wee/idgen.rb, line 2</span>
130
130
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">initial_value</span>=<span class="ruby-value">0</span>)
@@ -137,19 +137,19 @@
137
137
 
138
138
  <h3 class="section-bar">Public Instance methods</h3>
139
139
 
140
- <div id="method-M000166" class="method-detail">
141
- <a name="M000166"></a>
140
+ <div id="method-M000202" class="method-detail">
141
+ <a name="M000202"></a>
142
142
 
143
143
  <div class="method-heading">
144
- <a href="#M000166" class="method-signature">
144
+ <a href="#M000202" class="method-signature">
145
145
  <span class="method-name">current</span><span class="method-args">()</span>
146
146
  </a>
147
147
  </div>
148
148
 
149
149
  <div class="method-description">
150
150
  <p><a class="source-toggle" href="#"
151
- onclick="toggleCode('M000166-source');return false;">[Source]</a></p>
152
- <div class="method-source-code" id="M000166-source">
151
+ onclick="toggleCode('M000202-source');return false;">[Source]</a></p>
152
+ <div class="method-source-code" id="M000202-source">
153
153
  <pre>
154
154
  <span class="ruby-comment cmt"># File lib/wee/idgen.rb, line 6</span>
155
155
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">current</span>
@@ -160,19 +160,19 @@
160
160
  </div>
161
161
  </div>
162
162
 
163
- <div id="method-M000167" class="method-detail">
164
- <a name="M000167"></a>
163
+ <div id="method-M000203" class="method-detail">
164
+ <a name="M000203"></a>
165
165
 
166
166
  <div class="method-heading">
167
- <a href="#M000167" class="method-signature">
167
+ <a href="#M000203" class="method-signature">
168
168
  <span class="method-name">next</span><span class="method-args">()</span>
169
169
  </a>
170
170
  </div>
171
171
 
172
172
  <div class="method-description">
173
173
  <p><a class="source-toggle" href="#"
174
- onclick="toggleCode('M000167-source');return false;">[Source]</a></p>
175
- <div class="method-source-code" id="M000167-source">
174
+ onclick="toggleCode('M000203-source');return false;">[Source]</a></p>
175
+ <div class="method-source-code" id="M000203-source">
176
176
  <pre>
177
177
  <span class="ruby-comment cmt"># File lib/wee/idgen.rb, line 10</span>
178
178
  <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">next</span>
@@ -86,7 +86,7 @@ This class is for backtracking the state of components (or
86
86
  decorations/presenters). Components that want an undo-facility to be
87
87
  implemented (triggered for example by a browsers back-button), have to
88
88
  overwrite the <a
89
- href="Component.html#M000186">Component#backtrack_state</a> method. Class
89
+ href="Component.html#M000222">Component#backtrack_state</a> method. Class
90
90
  <a href="Snapshot.html">Wee::Snapshot</a> simply represents a collection of
91
91
  objects from which snapshots were taken via methods take_snapshot.
92
92
  </p>
@@ -100,9 +100,9 @@ objects from which snapshots were taken via methods take_snapshot.
100
100
  <h3 class="section-bar">Methods</h3>
101
101
 
102
102
  <div class="name-list">
103
- <a href="#M000075">add</a>&nbsp;&nbsp;
104
- <a href="#M000074">new</a>&nbsp;&nbsp;
105
- <a href="#M000076">restore</a>&nbsp;&nbsp;
103
+ <a href="#M000093">add</a>&nbsp;&nbsp;
104
+ <a href="#M000092">new</a>&nbsp;&nbsp;
105
+ <a href="#M000094">restore</a>&nbsp;&nbsp;
106
106
  </div>
107
107
  </div>
108
108
 
@@ -124,19 +124,19 @@ objects from which snapshots were taken via methods take_snapshot.
124
124
  <div id="methods">
125
125
  <h3 class="section-bar">Public Class methods</h3>
126
126
 
127
- <div id="method-M000074" class="method-detail">
128
- <a name="M000074"></a>
127
+ <div id="method-M000092" class="method-detail">
128
+ <a name="M000092"></a>
129
129
 
130
130
  <div class="method-heading">
131
- <a href="#M000074" class="method-signature">
131
+ <a href="#M000092" class="method-signature">
132
132
  <span class="method-name">new</span><span class="method-args">()</span>
133
133
  </a>
134
134
  </div>
135
135
 
136
136
  <div class="method-description">
137
137
  <p><a class="source-toggle" href="#"
138
- onclick="toggleCode('M000074-source');return false;">[Source]</a></p>
139
- <div class="method-source-code" id="M000074-source">
138
+ onclick="toggleCode('M000092-source');return false;">[Source]</a></p>
139
+ <div class="method-source-code" id="M000092-source">
140
140
  <pre>
141
141
  <span class="ruby-comment cmt"># File lib/wee/core/snapshot.rb, line 9</span>
142
142
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
@@ -149,19 +149,19 @@ objects from which snapshots were taken via methods take_snapshot.
149
149
 
150
150
  <h3 class="section-bar">Public Instance methods</h3>
151
151
 
152
- <div id="method-M000075" class="method-detail">
153
- <a name="M000075"></a>
152
+ <div id="method-M000093" class="method-detail">
153
+ <a name="M000093"></a>
154
154
 
155
155
  <div class="method-heading">
156
- <a href="#M000075" class="method-signature">
156
+ <a href="#M000093" class="method-signature">
157
157
  <span class="method-name">add</span><span class="method-args">(object)</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('M000075-source');return false;">[Source]</a></p>
164
- <div class="method-source-code" id="M000075-source">
163
+ onclick="toggleCode('M000093-source');return false;">[Source]</a></p>
164
+ <div class="method-source-code" id="M000093-source">
165
165
  <pre>
166
166
  <span class="ruby-comment cmt"># File lib/wee/core/snapshot.rb, line 13</span>
167
167
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add</span>(<span class="ruby-identifier">object</span>)
@@ -173,19 +173,19 @@ objects from which snapshots were taken via methods take_snapshot.
173
173
  </div>
174
174
  </div>
175
175
 
176
- <div id="method-M000076" class="method-detail">
177
- <a name="M000076"></a>
176
+ <div id="method-M000094" class="method-detail">
177
+ <a name="M000094"></a>
178
178
 
179
179
  <div class="method-heading">
180
- <a href="#M000076" class="method-signature">
180
+ <a href="#M000094" class="method-signature">
181
181
  <span class="method-name">restore</span><span class="method-args">()</span>
182
182
  </a>
183
183
  </div>
184
184
 
185
185
  <div class="method-description">
186
186
  <p><a class="source-toggle" href="#"
187
- onclick="toggleCode('M000076-source');return false;">[Source]</a></p>
188
- <div class="method-source-code" id="M000076-source">
187
+ onclick="toggleCode('M000094-source');return false;">[Source]</a></p>
188
+ <div class="method-source-code" id="M000094-source">
189
189
  <pre>
190
190
  <span class="ruby-comment cmt"># File lib/wee/core/snapshot.rb, line 18</span>
191
191
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">restore</span>
@@ -55,8 +55,16 @@
55
55
  <tr class="top-aligned-row">
56
56
  <td><strong>In:</strong></td>
57
57
  <td>
58
- <a href="../../files/lib/wee/utils/cache_rb.html">
59
- lib/wee/utils/cache.rb
58
+ <a href="../../files/lib/wee/utils_rb.html">
59
+ lib/wee/utils.rb
60
+ </a>
61
+ <br />
62
+ <a href="../../files/lib/wee/utils/autoreload_rb.html">
63
+ lib/wee/utils/autoreload.rb
64
+ </a>
65
+ <br />
66
+ <a href="../../files/lib/wee/utils/helper_rb.html">
67
+ lib/wee/utils/helper.rb
60
68
  </a>
61
69
  <br />
62
70
  </td>
@@ -76,6 +84,14 @@
76
84
 
77
85
  </div>
78
86
 
87
+ <div id="method-list">
88
+ <h3 class="section-bar">Methods</h3>
89
+
90
+ <div class="name-list">
91
+ <a href="#M000045">app_for</a>&nbsp;&nbsp;
92
+ <a href="#M000044">autoreload</a>&nbsp;&nbsp;
93
+ </div>
94
+ </div>
79
95
 
80
96
  </div>
81
97
 
@@ -98,6 +114,126 @@
98
114
 
99
115
 
100
116
  <!-- if method_list -->
117
+ <div id="methods">
118
+ <h3 class="section-bar">Public Class methods</h3>
119
+
120
+ <div id="method-M000045" class="method-detail">
121
+ <a name="M000045"></a>
122
+
123
+ <div class="method-heading">
124
+ <a href="#M000045" class="method-signature">
125
+ <span class="method-name">app_for</span><span class="method-args">(component=nil, options={}, &amp;block)</span>
126
+ </a>
127
+ </div>
128
+
129
+ <div class="method-description">
130
+ <dl>
131
+ <dt><tt>component</tt></dt><dd>The component class for which to create an application object. If a block
132
+ is given, this will be invoked to create a new component object.
133
+
134
+ </dd>
135
+ <dt><tt>options</tt></dt><dd>A Hash. Following keys are accepted:
136
+
137
+ <dl>
138
+ <dt>:application</dt><dd>The application class to use (default: <a
139
+ href="Application.html">Wee::Application</a>)
140
+
141
+ </dd>
142
+ <dt>:session</dt><dd>The session class to use (default: <a href="Session.html">Wee::Session</a>)
143
+
144
+ </dd>
145
+ <dt>:page_cache_capacity</dt><dd>The size of the sessions page_store (default: 10)
146
+
147
+ </dd>
148
+ <dt>:id_seed</dt><dd>Initial value of the <a href="SimpleIdGenerator.html">SimpleIdGenerator</a>
149
+ (default: rand(1_000_000))
150
+
151
+ </dd>
152
+ </dl>
153
+ </dd>
154
+ </dl>
155
+ <p><a class="source-toggle" href="#"
156
+ onclick="toggleCode('M000045-source');return false;">[Source]</a></p>
157
+ <div class="method-source-code" id="M000045-source">
158
+ <pre>
159
+ <span class="ruby-comment cmt"># File lib/wee/utils/helper.rb, line 22</span>
160
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">app_for</span>(<span class="ruby-identifier">component</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">options</span>={}, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
161
+ <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;either component or block must be given&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">component</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">block</span>.<span class="ruby-identifier">nil?</span>
162
+
163
+ <span class="ruby-identifier">defaults</span> = {
164
+ <span class="ruby-identifier">:application</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Application</span>,
165
+ <span class="ruby-identifier">:session</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Session</span>,
166
+ <span class="ruby-identifier">:page_cache_capacity</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">10</span>,
167
+ <span class="ruby-identifier">:id_seed</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">rand</span>(<span class="ruby-value">1_000_000</span>)
168
+ }
169
+ <span class="ruby-identifier">options</span> = <span class="ruby-identifier">defaults</span>.<span class="ruby-identifier">update</span>(<span class="ruby-identifier">options</span>)
170
+
171
+ <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:application</span>].<span class="ruby-identifier">new</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">app</span><span class="ruby-operator">|</span>
172
+ <span class="ruby-identifier">app</span>.<span class="ruby-identifier">default_request_handler</span> {
173
+ <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:session</span>].<span class="ruby-identifier">new</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">sess</span><span class="ruby-operator">|</span>
174
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">component</span>
175
+ <span class="ruby-identifier">sess</span>.<span class="ruby-identifier">root_component</span> = <span class="ruby-identifier">component</span>.<span class="ruby-identifier">new</span>
176
+ <span class="ruby-keyword kw">else</span>
177
+ <span class="ruby-identifier">sess</span>.<span class="ruby-identifier">root_component</span> = <span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>
178
+ <span class="ruby-keyword kw">end</span>
179
+ <span class="ruby-identifier">sess</span>.<span class="ruby-identifier">page_store</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">Utils</span><span class="ruby-operator">::</span><span class="ruby-constant">LRUCache</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:page_cache_capacity</span>])
180
+ }
181
+ }
182
+ <span class="ruby-identifier">app</span>.<span class="ruby-identifier">id_generator</span> = <span class="ruby-constant">Wee</span><span class="ruby-operator">::</span><span class="ruby-constant">SimpleIdGenerator</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:id_seed</span>])
183
+ }
184
+ <span class="ruby-keyword kw">end</span>
185
+ </pre>
186
+ </div>
187
+ </div>
188
+ </div>
189
+
190
+ <h3 class="section-bar">Public Instance methods</h3>
191
+
192
+ <div id="method-M000044" class="method-detail">
193
+ <a name="M000044"></a>
194
+
195
+ <div class="method-heading">
196
+ <a href="#M000044" class="method-signature">
197
+ <span class="method-name">autoreload</span><span class="method-args">(check_interval=10)</span>
198
+ </a>
199
+ </div>
200
+
201
+ <div class="method-description">
202
+ <p><a class="source-toggle" href="#"
203
+ onclick="toggleCode('M000044-source');return false;">[Source]</a></p>
204
+ <div class="method-source-code" id="M000044-source">
205
+ <pre>
206
+ <span class="ruby-comment cmt"># File lib/wee/utils/autoreload.rb, line 4</span>
207
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">autoreload</span>(<span class="ruby-identifier">check_interval</span>=<span class="ruby-value">10</span>)
208
+ <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">start_time</span><span class="ruby-operator">|</span>
209
+ <span class="ruby-identifier">file_mtime</span> = {}
210
+ <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
211
+ <span class="ruby-identifier">sleep</span> <span class="ruby-identifier">check_interval</span>
212
+ <span class="ruby-identifier">$LOADED_FEATURES</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">feature</span><span class="ruby-operator">|</span>
213
+ <span class="ruby-identifier">$LOAD_PATH</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">lp</span><span class="ruby-operator">|</span>
214
+ <span class="ruby-identifier">file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">lp</span>, <span class="ruby-identifier">feature</span>)
215
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-identifier">file</span>) <span class="ruby-keyword kw">and</span>
216
+ <span class="ruby-constant">File</span>.<span class="ruby-identifier">stat</span>(<span class="ruby-identifier">file</span>).<span class="ruby-identifier">mtime</span> <span class="ruby-operator">&gt;</span> (<span class="ruby-identifier">file_mtime</span>[<span class="ruby-identifier">file</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">start_time</span>))
217
+ <span class="ruby-identifier">file_mtime</span>[<span class="ruby-identifier">file</span>] = <span class="ruby-constant">File</span>.<span class="ruby-identifier">stat</span>(<span class="ruby-identifier">file</span>).<span class="ruby-identifier">mtime</span>
218
+ <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;reload #{ file }&quot;</span>
219
+ <span class="ruby-keyword kw">begin</span>
220
+ <span class="ruby-identifier">load</span>(<span class="ruby-identifier">file</span>)
221
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
222
+ <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">inspect</span>
223
+ <span class="ruby-keyword kw">end</span>
224
+ <span class="ruby-keyword kw">end</span>
225
+ <span class="ruby-keyword kw">end</span>
226
+ <span class="ruby-keyword kw">end</span>
227
+ <span class="ruby-keyword kw">end</span>
228
+ }
229
+ <span class="ruby-keyword kw">end</span>
230
+ </pre>
231
+ </div>
232
+ </div>
233
+ </div>
234
+
235
+
236
+ </div>
101
237
 
102
238
 
103
239
  </div>
@@ -88,7 +88,7 @@
88
88
  <h3 class="section-bar">Methods</h3>
89
89
 
90
90
  <div class="name-list">
91
- <a href="#M000035">new</a>&nbsp;&nbsp;
91
+ <a href="#M000046">new</a>&nbsp;&nbsp;
92
92
  </div>
93
93
  </div>
94
94
 
@@ -110,21 +110,21 @@
110
110
  <div id="methods">
111
111
  <h3 class="section-bar">Public Class methods</h3>
112
112
 
113
- <div id="method-M000035" class="method-detail">
114
- <a name="M000035"></a>
113
+ <div id="method-M000046" class="method-detail">
114
+ <a name="M000046"></a>
115
115
 
116
116
  <div class="method-heading">
117
- <a href="#M000035" class="method-signature">
117
+ <a href="#M000046" class="method-signature">
118
118
  <span class="method-name">new</span><span class="method-args">(capacity=20)</span>
119
119
  </a>
120
120
  </div>
121
121
 
122
122
  <div class="method-description">
123
123
  <p><a class="source-toggle" href="#"
124
- onclick="toggleCode('M000035-source');return false;">[Source]</a></p>
125
- <div class="method-source-code" id="M000035-source">
124
+ onclick="toggleCode('M000046-source');return false;">[Source]</a></p>
125
+ <div class="method-source-code" id="M000046-source">
126
126
  <pre>
127
- <span class="ruby-comment cmt"># File lib/wee/utils/cache.rb, line 6</span>
127
+ <span class="ruby-comment cmt"># File lib/wee/utils/cache.rb, line 4</span>
128
128
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">capacity</span>=<span class="ruby-value">20</span>)
129
129
  <span class="ruby-keyword kw">super</span>(<span class="ruby-constant">Cache</span><span class="ruby-operator">::</span><span class="ruby-constant">Strategy</span><span class="ruby-operator">::</span><span class="ruby-constant">LRU</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">capacity</span>))
130
130
  <span class="ruby-keyword kw">end</span>
@@ -97,9 +97,9 @@ href="Component.html">Wee::Component</a>.
97
97
  <h3 class="section-bar">Methods</h3>
98
98
 
99
99
  <div class="name-list">
100
- <a href="#M000169">new</a>&nbsp;&nbsp;
101
- <a href="#M000171">restore_snapshot</a>&nbsp;&nbsp;
102
- <a href="#M000170">take_snapshot</a>&nbsp;&nbsp;
100
+ <a href="#M000205">new</a>&nbsp;&nbsp;
101
+ <a href="#M000207">restore_snapshot</a>&nbsp;&nbsp;
102
+ <a href="#M000206">take_snapshot</a>&nbsp;&nbsp;
103
103
  </div>
104
104
  </div>
105
105
 
@@ -134,19 +134,19 @@ href="Component.html">Wee::Component</a>.
134
134
  <div id="methods">
135
135
  <h3 class="section-bar">Public Class methods</h3>
136
136
 
137
- <div id="method-M000169" class="method-detail">
138
- <a name="M000169"></a>
137
+ <div id="method-M000205" class="method-detail">
138
+ <a name="M000205"></a>
139
139
 
140
140
  <div class="method-heading">
141
- <a href="#M000169" class="method-signature">
141
+ <a href="#M000205" class="method-signature">
142
142
  <span class="method-name">new</span><span class="method-args">(value=nil)</span>
143
143
  </a>
144
144
  </div>
145
145
 
146
146
  <div class="method-description">
147
147
  <p><a class="source-toggle" href="#"
148
- onclick="toggleCode('M000169-source');return false;">[Source]</a></p>
149
- <div class="method-source-code" id="M000169-source">
148
+ onclick="toggleCode('M000205-source');return false;">[Source]</a></p>
149
+ <div class="method-source-code" id="M000205-source">
150
150
  <pre>
151
151
  <span class="ruby-comment cmt"># File lib/wee/core/valueholder.rb, line 8</span>
152
152
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">value</span>=<span class="ruby-keyword kw">nil</span>)
@@ -159,19 +159,19 @@ href="Component.html">Wee::Component</a>.
159
159
 
160
160
  <h3 class="section-bar">Public Instance methods</h3>
161
161
 
162
- <div id="method-M000171" class="method-detail">
163
- <a name="M000171"></a>
162
+ <div id="method-M000207" class="method-detail">
163
+ <a name="M000207"></a>
164
164
 
165
165
  <div class="method-heading">
166
- <a href="#M000171" class="method-signature">
166
+ <a href="#M000207" class="method-signature">
167
167
  <span class="method-name">restore_snapshot</span><span class="method-args">(value)</span>
168
168
  </a>
169
169
  </div>
170
170
 
171
171
  <div class="method-description">
172
172
  <p><a class="source-toggle" href="#"
173
- onclick="toggleCode('M000171-source');return false;">[Source]</a></p>
174
- <div class="method-source-code" id="M000171-source">
173
+ onclick="toggleCode('M000207-source');return false;">[Source]</a></p>
174
+ <div class="method-source-code" id="M000207-source">
175
175
  <pre>
176
176
  <span class="ruby-comment cmt"># File lib/wee/core/valueholder.rb, line 16</span>
177
177
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">restore_snapshot</span>(<span class="ruby-identifier">value</span>)
@@ -182,19 +182,19 @@ href="Component.html">Wee::Component</a>.
182
182
  </div>
183
183
  </div>
184
184
 
185
- <div id="method-M000170" class="method-detail">
186
- <a name="M000170"></a>
185
+ <div id="method-M000206" class="method-detail">
186
+ <a name="M000206"></a>
187
187
 
188
188
  <div class="method-heading">
189
- <a href="#M000170" class="method-signature">
189
+ <a href="#M000206" class="method-signature">
190
190
  <span class="method-name">take_snapshot</span><span class="method-args">()</span>
191
191
  </a>
192
192
  </div>
193
193
 
194
194
  <div class="method-description">
195
195
  <p><a class="source-toggle" href="#"
196
- onclick="toggleCode('M000170-source');return false;">[Source]</a></p>
197
- <div class="method-source-code" id="M000170-source">
196
+ onclick="toggleCode('M000206-source');return false;">[Source]</a></p>
197
+ <div class="method-source-code" id="M000206-source">
198
198
  <pre>
199
199
  <span class="ruby-comment cmt"># File lib/wee/core/valueholder.rb, line 12</span>
200
200
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">take_snapshot</span>