wee 0.10.0 → 2.0.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 (369) hide show
  1. data/README.rdoc +127 -0
  2. data/Rakefile +11 -32
  3. data/doc/rdoc/classes/Array.html +28 -24
  4. data/doc/rdoc/classes/Hash.html +28 -24
  5. data/doc/rdoc/classes/Object.html +37 -84
  6. data/doc/rdoc/classes/String.html +89 -21
  7. data/doc/rdoc/classes/Struct.html +32 -82
  8. data/doc/rdoc/classes/Wee.html +285 -86
  9. data/doc/rdoc/classes/Wee/AnswerDecoration.html +111 -48
  10. data/doc/rdoc/classes/Wee/{Context.html → AnswerDecoration/Answer.html} +61 -51
  11. data/doc/rdoc/classes/Wee/Application.html +161 -322
  12. data/doc/rdoc/classes/Wee/Application/SessionCache.html +162 -0
  13. data/doc/rdoc/classes/Wee/Brush.html +147 -62
  14. data/doc/rdoc/classes/{Enumerable.html → Wee/Brush/ActionInputTag.html} +68 -41
  15. data/doc/rdoc/classes/Wee/Brush/AnchorTag.html +150 -100
  16. data/doc/rdoc/classes/Wee/Brush/CheckboxTag.html +132 -46
  17. data/doc/rdoc/classes/Wee/Brush/FileUploadTag.html +63 -41
  18. data/doc/rdoc/classes/Wee/Brush/FormTag.html +184 -78
  19. data/doc/rdoc/classes/Wee/Brush/GenericEncodedTextBrush.html +48 -65
  20. data/doc/rdoc/classes/Wee/Brush/GenericSingleTagBrush.html +83 -37
  21. data/doc/rdoc/classes/Wee/Brush/GenericTagBrush.html +334 -310
  22. data/doc/rdoc/classes/Wee/Brush/GenericTextBrush.html +74 -54
  23. data/doc/rdoc/classes/Wee/Brush/HiddenInputTag.html +58 -43
  24. data/doc/rdoc/classes/Wee/Brush/ImageButtonTag.html +64 -74
  25. data/doc/rdoc/classes/Wee/Brush/ImageTag.html +109 -86
  26. data/doc/rdoc/classes/Wee/Brush/InputTag.html +205 -45
  27. data/doc/rdoc/classes/Wee/Brush/JavascriptTag.html +96 -34
  28. data/doc/rdoc/classes/Wee/Brush/Page.html +129 -67
  29. data/doc/rdoc/classes/Wee/{Utils/LRUCache.html → Brush/PasswordInputTag.html} +65 -38
  30. data/doc/rdoc/classes/Wee/Brush/RadioButtonTag.html +132 -78
  31. data/doc/rdoc/classes/Wee/Brush/{RadioButtonTag/RadioGroup.html → RadioGroup.html} +91 -53
  32. data/doc/rdoc/classes/Wee/Brush/SelectListTag.html +301 -127
  33. data/doc/rdoc/classes/Wee/Brush/SelectOptionTag.html +96 -33
  34. data/doc/rdoc/classes/Wee/Brush/SubmitButtonTag.html +59 -44
  35. data/doc/rdoc/classes/Wee/Brush/TableDataTag.html +94 -57
  36. data/doc/rdoc/classes/Wee/Brush/TableHeaderTag.html +96 -33
  37. data/doc/rdoc/classes/Wee/Brush/TableRowTag.html +181 -121
  38. data/doc/rdoc/classes/Wee/Brush/TableTag.html +94 -32
  39. data/doc/rdoc/classes/Wee/Brush/TextAreaTag.html +257 -71
  40. data/doc/rdoc/classes/Wee/Brush/TextInputTag.html +58 -43
  41. data/doc/rdoc/classes/Wee/CallAnswerMixin.html +289 -0
  42. data/doc/rdoc/classes/Wee/CallbackMixin.html +233 -0
  43. data/doc/rdoc/classes/Wee/CallbackRegistry.html +179 -155
  44. data/doc/rdoc/classes/Wee/Callbacks.html +262 -0
  45. data/doc/rdoc/classes/Wee/Component.html +228 -779
  46. data/doc/rdoc/classes/Wee/Decoration.html +144 -159
  47. data/doc/rdoc/classes/Wee/DecorationMixin.html +340 -0
  48. data/doc/rdoc/classes/Wee/Delegate.html +119 -76
  49. data/doc/rdoc/classes/Wee/DupReplaceSnapshotMixin.html +64 -47
  50. data/doc/rdoc/classes/Wee/ErrorResponse.html +59 -62
  51. data/doc/rdoc/classes/Wee/FormDecoration.html +51 -37
  52. data/doc/rdoc/classes/Wee/GenericResponse.html +60 -35
  53. data/doc/rdoc/classes/Wee/HtmlCanvas.html +1000 -602
  54. data/doc/rdoc/classes/Wee/HtmlDocument.html +288 -0
  55. data/doc/rdoc/classes/Wee/HtmlWriter.html +227 -126
  56. data/doc/rdoc/classes/Wee/IdGenerator.html +60 -31
  57. data/doc/rdoc/classes/Wee/IdGenerator/Secure.html +282 -0
  58. data/doc/rdoc/classes/Wee/{SimpleIdGenerator.html → IdGenerator/Sequential.html} +76 -49
  59. data/doc/rdoc/classes/Wee/JQuery.html +221 -0
  60. data/doc/rdoc/classes/Wee/LRUCache.html +514 -0
  61. data/doc/rdoc/classes/Wee/LRUCache/Item.html +158 -0
  62. data/doc/rdoc/classes/Wee/ObjectSnapshotMixin.html +187 -0
  63. data/doc/rdoc/classes/Wee/PageDecoration.html +88 -59
  64. data/doc/rdoc/classes/Wee/Presenter.html +124 -704
  65. data/doc/rdoc/classes/Wee/RedirectResponse.html +64 -33
  66. data/doc/rdoc/classes/Wee/RefreshResponse.html +59 -44
  67. data/doc/rdoc/classes/Wee/Renderer.html +234 -54
  68. data/doc/rdoc/classes/Wee/Request.html +151 -286
  69. data/doc/rdoc/classes/Wee/Response.html +29 -212
  70. data/doc/rdoc/classes/Wee/Session.html +585 -360
  71. data/doc/rdoc/classes/Wee/{StateHolder.html → Session/AbortCallbackProcessing.html} +67 -40
  72. data/doc/rdoc/classes/Wee/Session/MutexSerializer.html +166 -0
  73. data/doc/rdoc/classes/{Cache/Strategy/LFU/Item.html → Wee/Session/Page.html} +26 -27
  74. data/doc/rdoc/classes/Wee/Session/ThreadSerializer.html +219 -0
  75. data/doc/rdoc/classes/Wee/State.html +307 -0
  76. data/doc/rdoc/classes/{Cache/Strategy/LRU/Item.html → Wee/State/Snapshot.html} +26 -27
  77. data/doc/rdoc/classes/{Cache/Strategy/Unbounded/Item.html → Wee/State/SnapshotIVars.html} +26 -27
  78. data/doc/rdoc/classes/Wee/StructSnapshotMixin.html +183 -0
  79. data/doc/rdoc/classes/Wee/WrapperDecoration.html +101 -35
  80. data/doc/rdoc/created.rid +1 -1
  81. data/doc/rdoc/files/README_rdoc.html +243 -0
  82. data/doc/rdoc/files/lib/wee/application_rb.html +22 -30
  83. data/doc/rdoc/files/lib/wee/{page_rb.html → call_answer_rb.html} +14 -25
  84. data/doc/rdoc/files/lib/wee/callback_rb.html +12 -29
  85. data/doc/rdoc/files/lib/wee/component_rb.html +22 -27
  86. data/doc/rdoc/files/lib/wee/decoration_rb.html +19 -20
  87. data/doc/rdoc/files/lib/wee/{idgen_rb.html → html_brushes_rb.html} +14 -25
  88. data/doc/rdoc/files/lib/wee/html_canvas_rb.html +15 -23
  89. data/doc/rdoc/files/lib/wee/{abstractsession_rb.html → html_document_rb.html} +17 -25
  90. data/doc/rdoc/files/lib/wee/html_writer_rb.html +15 -23
  91. data/doc/rdoc/files/lib/wee/{webrick_rb.html → id_generator_rb.html} +19 -25
  92. data/doc/rdoc/files/lib/wee/{core/page_rb.html → jquery/jquery_rb.html} +14 -25
  93. data/doc/rdoc/files/lib/wee/{state_registry_rb.html → jquery_rb.html} +17 -27
  94. data/doc/rdoc/files/lib/{cache/cache_rb.html → wee/lru_cache_rb.html} +14 -25
  95. data/doc/rdoc/files/lib/wee/presenter_rb.html +12 -34
  96. data/doc/rdoc/files/lib/wee/{holder_rb.html → renderer_rb.html} +14 -25
  97. data/doc/rdoc/files/lib/wee/request_rb.html +18 -32
  98. data/doc/rdoc/files/lib/wee/response_rb.html +17 -24
  99. data/doc/rdoc/files/lib/wee/session_rb.html +21 -23
  100. data/doc/rdoc/files/lib/wee/state_rb.html +90 -0
  101. data/doc/rdoc/files/lib/wee_rb.html +48 -40
  102. data/doc/rdoc/fr_class_index.html +111 -75
  103. data/doc/rdoc/fr_file_index.html +46 -76
  104. data/doc/rdoc/fr_method_index.html +473 -480
  105. data/doc/rdoc/index.html +6 -9
  106. data/doc/rdoc/rdoc-style.css +210 -119
  107. data/examples/ObjectSpaceBrowser.rb +33 -23
  108. data/examples/ajax.rb +71 -0
  109. data/examples/continuations.rb +28 -0
  110. data/examples/demo.rb +92 -36
  111. data/examples/demo/calculator.rb +63 -0
  112. data/examples/demo/calendar.rb +42 -55
  113. data/examples/demo/counter.rb +38 -0
  114. data/{lib/wee/examples → examples/demo}/editable_counter.rb +11 -6
  115. data/examples/demo/example.rb +28 -24
  116. data/examples/demo/file_upload.rb +19 -0
  117. data/{lib/wee/components → examples/demo}/messagebox.rb +3 -3
  118. data/examples/demo/radio.rb +33 -0
  119. data/{lib/wee/examples → examples/demo}/window.rb +15 -10
  120. data/examples/hw.rb +3 -4
  121. data/{lib/wee/components → examples}/pager.rb +14 -14
  122. data/lib/wee.rb +48 -25
  123. data/lib/wee/application.rb +69 -131
  124. data/lib/wee/call_answer.rb +118 -0
  125. data/lib/wee/callback.rb +88 -0
  126. data/lib/wee/component.rb +141 -0
  127. data/lib/wee/decoration.rb +242 -0
  128. data/lib/wee/html_brushes.rb +725 -0
  129. data/lib/wee/html_canvas.rb +241 -0
  130. data/lib/wee/html_document.rb +45 -0
  131. data/lib/wee/html_writer.rb +71 -0
  132. data/lib/wee/id_generator.rb +70 -0
  133. data/lib/wee/jquery.rb +1 -0
  134. data/lib/wee/jquery/jquery.rb +17 -0
  135. data/lib/wee/jquery/public/jquery-1.3.2.min.js +19 -0
  136. data/lib/wee/jquery/public/wee-jquery.js +19 -0
  137. data/lib/wee/lru_cache.rb +89 -0
  138. data/lib/wee/presenter.rb +43 -0
  139. data/lib/wee/renderer.rb +65 -0
  140. data/lib/wee/request.rb +37 -113
  141. data/lib/wee/response.rb +43 -70
  142. data/lib/wee/session.rb +304 -113
  143. data/lib/wee/state.rb +85 -0
  144. data/test/component_spec.rb +17 -0
  145. data/wee.gemspec +4 -3
  146. metadata +249 -452
  147. data/ChangeLog +0 -657
  148. data/INSTALL +0 -17
  149. data/README +0 -272
  150. data/TODO +0 -142
  151. data/benchmark/Centrino1300/result.2000.counter.action +0 -45
  152. data/benchmark/Centrino1300/result.2000.counter.render +0 -43
  153. data/benchmark/Centrino1300/result.2000.filehandler +0 -43
  154. data/benchmark/Centrino600/result.2000.counter.action +0 -47
  155. data/benchmark/Centrino600/result.2000.counter.render +0 -45
  156. data/benchmark/Centrino600/result.2000.filehandler +0 -43
  157. data/benchmark/Makefile +0 -53
  158. data/benchmark/counter.rb +0 -77
  159. data/benchmark/filehandler.rb +0 -6
  160. data/benchmark/report_req.rb +0 -12
  161. data/bin/wee +0 -100
  162. data/doc/rdoc/classes/ActionView.html +0 -107
  163. data/doc/rdoc/classes/ActionView/Base.html +0 -133
  164. data/doc/rdoc/classes/Cache.html +0 -126
  165. data/doc/rdoc/classes/Cache/StorageCache.html +0 -320
  166. data/doc/rdoc/classes/Cache/Strategy.html +0 -128
  167. data/doc/rdoc/classes/Cache/Strategy/CapacityBounded.html +0 -269
  168. data/doc/rdoc/classes/Cache/Strategy/LFU.html +0 -238
  169. data/doc/rdoc/classes/Cache/Strategy/LRU.html +0 -238
  170. data/doc/rdoc/classes/Cache/Strategy/Unbounded.html +0 -225
  171. data/doc/rdoc/classes/LiteralMethod.html +0 -196
  172. data/doc/rdoc/classes/Main.html +0 -289
  173. data/doc/rdoc/classes/OgApplication.html +0 -126
  174. data/doc/rdoc/classes/OgScaffolder.html +0 -827
  175. data/doc/rdoc/classes/OgScaffolder/Editor.html +0 -565
  176. data/doc/rdoc/classes/OgSession.html +0 -172
  177. data/doc/rdoc/classes/Recipe.html +0 -113
  178. data/doc/rdoc/classes/Wee/AbstractSession.html +0 -502
  179. data/doc/rdoc/classes/Wee/Brush/ActionCallbackMixin.html +0 -148
  180. data/doc/rdoc/classes/Wee/Brush/ActionMixin.html +0 -146
  181. data/doc/rdoc/classes/Wee/Brush/ActionURLCallbackMixin.html +0 -154
  182. data/doc/rdoc/classes/Wee/Brush/AssignMixin.html +0 -141
  183. data/doc/rdoc/classes/Wee/Brush/CallbackMixin.html +0 -141
  184. data/doc/rdoc/classes/Wee/Brush/InputCallbackMixin.html +0 -148
  185. data/doc/rdoc/classes/Wee/Brush/SelectListTag/SelectListCallback.html +0 -158
  186. data/doc/rdoc/classes/Wee/Brush/ToCallback.html +0 -146
  187. data/doc/rdoc/classes/Wee/Callback.html +0 -231
  188. data/doc/rdoc/classes/Wee/CallbackStream.html +0 -227
  189. data/doc/rdoc/classes/Wee/Canvas.html +0 -235
  190. data/doc/rdoc/classes/Wee/CanvasMixin.html +0 -225
  191. data/doc/rdoc/classes/Wee/Component/OnAnswer.html +0 -153
  192. data/doc/rdoc/classes/Wee/ComponentDispatcher.html +0 -289
  193. data/doc/rdoc/classes/Wee/ComponentRunner.html +0 -321
  194. data/doc/rdoc/classes/Wee/ErrorPage.html +0 -175
  195. data/doc/rdoc/classes/Wee/Examples.html +0 -114
  196. data/doc/rdoc/classes/Wee/Examples/Calculator.html +0 -319
  197. data/doc/rdoc/classes/Wee/Examples/Counter.html +0 -289
  198. data/doc/rdoc/classes/Wee/Examples/EditableCounter.html +0 -210
  199. data/doc/rdoc/classes/Wee/Examples/Window.html +0 -346
  200. data/doc/rdoc/classes/Wee/FastCGIAdaptor.html +0 -227
  201. data/doc/rdoc/classes/Wee/Helper.html +0 -148
  202. data/doc/rdoc/classes/Wee/HtmlCanvasRenderer.html +0 -1230
  203. data/doc/rdoc/classes/Wee/LiteralMethodCallback.html +0 -198
  204. data/doc/rdoc/classes/Wee/LoginDecoration.html +0 -261
  205. data/doc/rdoc/classes/Wee/Md5IdGenerator.html +0 -181
  206. data/doc/rdoc/classes/Wee/MessageBox.html +0 -180
  207. data/doc/rdoc/classes/Wee/MethodCallback.html +0 -193
  208. data/doc/rdoc/classes/Wee/Nitro.html +0 -114
  209. data/doc/rdoc/classes/Wee/Nitro/ControllerClassMixin.html +0 -192
  210. data/doc/rdoc/classes/Wee/Nitro/ControllerMixin.html +0 -345
  211. data/doc/rdoc/classes/Wee/Nitro/FormTag.html +0 -155
  212. data/doc/rdoc/classes/Wee/Nitro/HtmlCanvasRenderer.html +0 -178
  213. data/doc/rdoc/classes/Wee/Page.html +0 -115
  214. data/doc/rdoc/classes/Wee/PagelessApplication.html +0 -154
  215. data/doc/rdoc/classes/Wee/PagelessComponentDriver.html +0 -296
  216. data/doc/rdoc/classes/Wee/PagelessRequest.html +0 -208
  217. data/doc/rdoc/classes/Wee/PagelessSession.html +0 -359
  218. data/doc/rdoc/classes/Wee/Pager.html +0 -534
  219. data/doc/rdoc/classes/Wee/Rails.html +0 -114
  220. data/doc/rdoc/classes/Wee/Rails/ControllerClassMixin.html +0 -192
  221. data/doc/rdoc/classes/Wee/Rails/ControllerMixin.html +0 -342
  222. data/doc/rdoc/classes/Wee/Rails/FormTag.html +0 -155
  223. data/doc/rdoc/classes/Wee/Rails/HtmlCanvasRenderer.html +0 -177
  224. data/doc/rdoc/classes/Wee/RenderingContext.html +0 -283
  225. data/doc/rdoc/classes/Wee/RequestHandler.html +0 -341
  226. data/doc/rdoc/classes/Wee/Snapshot.html +0 -211
  227. data/doc/rdoc/classes/Wee/StateRegistry.html +0 -434
  228. data/doc/rdoc/classes/Wee/StateRegistry/Snapshot.html +0 -320
  229. data/doc/rdoc/classes/Wee/StateRegistry/WithObject.html +0 -153
  230. data/doc/rdoc/classes/Wee/Utils.html +0 -300
  231. data/doc/rdoc/classes/Wee/ValueHolder.html +0 -220
  232. data/doc/rdoc/classes/Wee/WEBrickAdaptor.html +0 -368
  233. data/doc/rdoc/files/INSTALL.html +0 -130
  234. data/doc/rdoc/files/README.html +0 -471
  235. data/doc/rdoc/files/lib/wee/adaptors/fastcgi_rb.html +0 -108
  236. data/doc/rdoc/files/lib/wee/adaptors/nitro_rb.html +0 -101
  237. data/doc/rdoc/files/lib/wee/adaptors/rails_rb.html +0 -101
  238. data/doc/rdoc/files/lib/wee/adaptors/webrick_rb.html +0 -108
  239. data/doc/rdoc/files/lib/wee/component_ext_rb.html +0 -101
  240. data/doc/rdoc/files/lib/wee/components/component_dispatcher_rb.html +0 -108
  241. data/doc/rdoc/files/lib/wee/components/form_decoration_rb.html +0 -101
  242. data/doc/rdoc/files/lib/wee/components/login_decoration_rb.html +0 -101
  243. data/doc/rdoc/files/lib/wee/components/messagebox_rb.html +0 -101
  244. data/doc/rdoc/files/lib/wee/components/page_decoration_rb.html +0 -101
  245. data/doc/rdoc/files/lib/wee/components/pager_rb.html +0 -101
  246. data/doc/rdoc/files/lib/wee/components/wrapper_decoration_rb.html +0 -101
  247. data/doc/rdoc/files/lib/wee/components_rb.html +0 -114
  248. data/doc/rdoc/files/lib/wee/context_rb.html +0 -101
  249. data/doc/rdoc/files/lib/wee/continuation/core/component_rb.html +0 -101
  250. data/doc/rdoc/files/lib/wee/continuation/session_rb.html +0 -108
  251. data/doc/rdoc/files/lib/wee/continuation_rb.html +0 -116
  252. data/doc/rdoc/files/lib/wee/core/callback_rb.html +0 -115
  253. data/doc/rdoc/files/lib/wee/core/component_rb.html +0 -108
  254. data/doc/rdoc/files/lib/wee/core/componentrunner_rb.html +0 -110
  255. data/doc/rdoc/files/lib/wee/core/context_rb.html +0 -101
  256. data/doc/rdoc/files/lib/wee/core/decoration_rb.html +0 -133
  257. data/doc/rdoc/files/lib/wee/core/idgen_rb.html +0 -101
  258. data/doc/rdoc/files/lib/wee/core/presenter_rb.html +0 -112
  259. data/doc/rdoc/files/lib/wee/core/renderer_rb.html +0 -107
  260. data/doc/rdoc/files/lib/wee/core/snapshot_rb.html +0 -113
  261. data/doc/rdoc/files/lib/wee/core/valueholder_rb.html +0 -110
  262. data/doc/rdoc/files/lib/wee/core_ext_rb.html +0 -101
  263. data/doc/rdoc/files/lib/wee/core_rb.html +0 -124
  264. data/doc/rdoc/files/lib/wee/databases/og/application_rb.html +0 -101
  265. data/doc/rdoc/files/lib/wee/databases/og/old_scaffolder_rb.html +0 -101
  266. data/doc/rdoc/files/lib/wee/databases/og/scaffolder_rb.html +0 -115
  267. data/doc/rdoc/files/lib/wee/databases/og/session_rb.html +0 -101
  268. data/doc/rdoc/files/lib/wee/databases/og_rb.html +0 -111
  269. data/doc/rdoc/files/lib/wee/examples/calculator_rb.html +0 -107
  270. data/doc/rdoc/files/lib/wee/examples/counter_rb.html +0 -101
  271. data/doc/rdoc/files/lib/wee/examples/editable_counter_rb.html +0 -114
  272. data/doc/rdoc/files/lib/wee/examples/window_rb.html +0 -101
  273. data/doc/rdoc/files/lib/wee/idgen/md5_rb.html +0 -115
  274. data/doc/rdoc/files/lib/wee/idgen/simple_rb.html +0 -107
  275. data/doc/rdoc/files/lib/wee/pageless/application_rb.html +0 -108
  276. data/doc/rdoc/files/lib/wee/pageless/request_rb.html +0 -101
  277. data/doc/rdoc/files/lib/wee/pageless/session_rb.html +0 -109
  278. data/doc/rdoc/files/lib/wee/pageless_rb.html +0 -110
  279. data/doc/rdoc/files/lib/wee/renderer/html/brushes_rb.html +0 -101
  280. data/doc/rdoc/files/lib/wee/renderer/html/canvas_rb.html +0 -108
  281. data/doc/rdoc/files/lib/wee/renderer/html/writer_rb.html +0 -108
  282. data/doc/rdoc/files/lib/wee/rendering/html/brushes_rb.html +0 -101
  283. data/doc/rdoc/files/lib/wee/rendering/html/canvas_rb.html +0 -101
  284. data/doc/rdoc/files/lib/wee/rendering/html/writer_rb.html +0 -108
  285. data/doc/rdoc/files/lib/wee/requesthandler_rb.html +0 -101
  286. data/doc/rdoc/files/lib/wee/skeleton/og/components/main_rb.html +0 -101
  287. data/doc/rdoc/files/lib/wee/skeleton/og/conf/db_rb.html +0 -114
  288. data/doc/rdoc/files/lib/wee/skeleton/og/models/recipe_rb.html +0 -101
  289. data/doc/rdoc/files/lib/wee/skeleton/og/run_rb.html +0 -115
  290. data/doc/rdoc/files/lib/wee/skeleton/simple/components/main_rb.html +0 -101
  291. data/doc/rdoc/files/lib/wee/skeleton/simple/run_rb.html +0 -111
  292. data/doc/rdoc/files/lib/wee/snapshot_ext_rb.html +0 -101
  293. data/doc/rdoc/files/lib/wee/snapshot_rb.html +0 -107
  294. data/doc/rdoc/files/lib/wee/stuff_rb.html +0 -144
  295. data/doc/rdoc/files/lib/wee/template_rb.html +0 -101
  296. data/doc/rdoc/files/lib/wee/utils/autoreload_rb.html +0 -101
  297. data/doc/rdoc/files/lib/wee/utils/cache_rb.html +0 -108
  298. data/doc/rdoc/files/lib/wee/utils/helper_rb.html +0 -101
  299. data/doc/rdoc/files/lib/wee/utils_rb.html +0 -110
  300. data/examples/ajax/ajax.js +0 -444
  301. data/examples/ajax/ajax.rb +0 -31
  302. data/examples/cc.rb +0 -74
  303. data/examples/dispatcher.rb +0 -37
  304. data/examples/draw.rb +0 -94
  305. data/examples/live-update.rb +0 -45
  306. data/examples/nitro/run.rb +0 -42
  307. data/examples/og-test.rb +0 -60
  308. data/examples/radio.rb +0 -44
  309. data/examples/test.rb +0 -39
  310. data/install.rb +0 -14
  311. data/lib/cache/cache.rb +0 -167
  312. data/lib/wee/abstractsession.rb +0 -96
  313. data/lib/wee/adaptors/fastcgi.rb +0 -76
  314. data/lib/wee/adaptors/nitro.rb +0 -155
  315. data/lib/wee/adaptors/rails.rb +0 -154
  316. data/lib/wee/adaptors/webrick.rb +0 -89
  317. data/lib/wee/components.rb +0 -7
  318. data/lib/wee/components/component_dispatcher.rb +0 -46
  319. data/lib/wee/components/form_decoration.rb +0 -7
  320. data/lib/wee/components/login_decoration.rb +0 -35
  321. data/lib/wee/components/page_decoration.rb +0 -14
  322. data/lib/wee/components/wrapper_decoration.rb +0 -7
  323. data/lib/wee/continuation.rb +0 -5
  324. data/lib/wee/continuation/core/component.rb +0 -56
  325. data/lib/wee/continuation/session.rb +0 -64
  326. data/lib/wee/core.rb +0 -16
  327. data/lib/wee/core/callback.rb +0 -121
  328. data/lib/wee/core/component.rb +0 -356
  329. data/lib/wee/core/componentrunner.rb +0 -73
  330. data/lib/wee/core/context.rb +0 -27
  331. data/lib/wee/core/decoration.rb +0 -138
  332. data/lib/wee/core/idgen.rb +0 -5
  333. data/lib/wee/core/page.rb +0 -1
  334. data/lib/wee/core/presenter.rb +0 -100
  335. data/lib/wee/core/renderer.rb +0 -23
  336. data/lib/wee/core/snapshot.rb +0 -21
  337. data/lib/wee/core/valueholder.rb +0 -19
  338. data/lib/wee/core_ext.rb +0 -122
  339. data/lib/wee/databases/og.rb +0 -4
  340. data/lib/wee/databases/og/application.rb +0 -3
  341. data/lib/wee/databases/og/old_scaffolder.rb +0 -98
  342. data/lib/wee/databases/og/scaffolder.rb +0 -255
  343. data/lib/wee/databases/og/session.rb +0 -9
  344. data/lib/wee/examples/calculator.rb +0 -70
  345. data/lib/wee/examples/counter.rb +0 -33
  346. data/lib/wee/idgen/md5.rb +0 -21
  347. data/lib/wee/idgen/sequential.rb +0 -11
  348. data/lib/wee/pageless.rb +0 -3
  349. data/lib/wee/pageless/application.rb +0 -13
  350. data/lib/wee/pageless/request.rb +0 -27
  351. data/lib/wee/pageless/session.rb +0 -74
  352. data/lib/wee/renderer/html/brushes.rb +0 -667
  353. data/lib/wee/renderer/html/canvas.rb +0 -265
  354. data/lib/wee/renderer/html/writer.rb +0 -80
  355. data/lib/wee/requesthandler.rb +0 -81
  356. data/lib/wee/skeleton/og/README +0 -38
  357. data/lib/wee/skeleton/og/components/main.rb +0 -20
  358. data/lib/wee/skeleton/og/conf/db.rb +0 -8
  359. data/lib/wee/skeleton/og/models/recipe.rb +0 -5
  360. data/lib/wee/skeleton/og/run.rb +0 -23
  361. data/lib/wee/skeleton/simple/README +0 -32
  362. data/lib/wee/skeleton/simple/components/main.rb +0 -25
  363. data/lib/wee/skeleton/simple/run.rb +0 -12
  364. data/lib/wee/snapshot_ext.rb +0 -41
  365. data/lib/wee/template.rb +0 -42
  366. data/lib/wee/utils.rb +0 -5
  367. data/lib/wee/utils/autoreload.rb +0 -56
  368. data/lib/wee/utils/cache.rb +0 -7
  369. data/lib/wee/utils/helper.rb +0 -51
@@ -0,0 +1,71 @@
1
+ $LOAD_PATH.unshift "../lib"
2
+ require 'rubygems'
3
+ require 'wee'
4
+ require 'rack'
5
+ require 'wee/jquery'
6
+
7
+ class AjaxCounter < Wee::Component
8
+ def initialize
9
+ super
10
+ @counter = 0
11
+ end
12
+
13
+ def backtrack(state)
14
+ super
15
+ state.add_ivar(self, :@counter, @counter)
16
+ end
17
+
18
+ def render(r)
19
+ r.once(self.class) {
20
+ r.css "div.wee-AjaxCounter a { border: 1px solid blue; padding: 5px; background-color: #ABABAB; };"
21
+ }
22
+ r.div.css_class('wee-AjaxCounter').oid.with {
23
+ r.anchor.onclick_update_self_callback { @counter += 1 }.with(@counter.to_s)
24
+ }
25
+ end
26
+ end
27
+
28
+ class HelloWorld < Wee::Component
29
+ def initialize
30
+ super
31
+ @cs = (1..10).map { add_child AjaxCounter.new }
32
+ end
33
+
34
+ def render(r)
35
+ r.html {
36
+ r.head {
37
+ r.title('Wee + Ajax')
38
+ Wee::JQuery.javascript_includes(r)
39
+ }
40
+ r.body {
41
+ render_hello(r)
42
+ r.div.onclick_callback { p "refresh" }.with("Refresh")
43
+ @cs.each {|c| r.render(c); r.break}
44
+ }
45
+ }
46
+ end
47
+
48
+ def render_hello(r)
49
+ @hello ||= "Hello"
50
+ r.div.id("hello").onclick_update_callback {|r|
51
+ @hello.reverse!
52
+ render_hello(r)
53
+ }.with(@hello)
54
+ end
55
+ end
56
+
57
+ if __FILE__ == $0
58
+ require 'rack/handler/webrick'
59
+ app = Rack::Builder.app do
60
+ Wee::JQuery.install('/jquery', self)
61
+ map '/ajax' do
62
+ run Wee::Application.new {
63
+ Wee::Session.new(HelloWorld.new)
64
+ }
65
+ end
66
+ end
67
+ puts
68
+ puts "Open your browser at: http://localhost:2000/ajax"
69
+ puts
70
+ Rack::Handler::WEBrick.run(app, :Port => 2000)
71
+ end
@@ -0,0 +1,28 @@
1
+ $LOAD_PATH.unshift "../lib"
2
+ require 'rubygems'
3
+ require 'wee'
4
+ require 'demo/messagebox'
5
+
6
+ class MainPage < Wee::Component
7
+
8
+ def initialize
9
+ super
10
+ add_decoration(Wee::PageDecoration.new("Test"))
11
+ end
12
+
13
+ def click
14
+ if callcc Wee::MessageBox.new('Really quit?')
15
+ callcc Wee::MessageBox.new('You clicked YES')
16
+ else
17
+ callcc Wee::MessageBox.new('You clicked Cancel')
18
+ callcc Wee::MessageBox.new('super')
19
+ end
20
+ end
21
+
22
+ def render(r)
23
+ r.anchor.callback_method(:click).with('show')
24
+ end
25
+
26
+ end
27
+
28
+ Wee.runcc(MainPage)
@@ -1,47 +1,103 @@
1
+ $LOAD_PATH.unshift "../lib"
2
+ require 'rubygems'
1
3
  require 'wee'
2
- require 'wee/adaptors/webrick'
3
- require 'wee/utils'
4
+
5
+ $LOAD_PATH.unshift "./demo"
6
+ require 'demo/calculator'
7
+ require 'demo/counter'
8
+ require 'demo/calendar'
9
+ require 'demo/radio'
10
+ require 'demo/file_upload'
4
11
 
5
12
  class Demo < Wee::Component
6
- def render
7
- r.h1 'Wee Demos'
8
- r.ul {
9
- APPS.each do |name, descr, _|
10
- r.li {
11
- r.anchor.href("/#{ name }").with("/#{ name }: #{ descr }")
12
- }
13
- end
14
- }
13
+ class E < Struct.new(:component, :title, :file); end
14
+
15
+ def initialize
16
+ super
17
+ add_decoration Wee::PageDecoration.new('Wee Demos')
18
+
19
+ @components = []
20
+ @components << E.new(Counter.new, "Counter", 'demo/counter.rb')
21
+ @components << E.new(Calculator.new, "Calculator", 'demo/calculator.rb')
22
+ @components << E.new(CustomCalendarDemo.new, "Calendar", 'demo/calendar.rb')
23
+ @components << E.new(RadioTest.new, "Radio Buttons", 'demo/radio.rb')
24
+ @components << E.new(FileUploadTest.new, "File Upload", 'demo/file_upload.rb')
25
+
26
+ @components.each {|c| add_child c.component }
27
+
28
+ @editor = add_child Editor.new
29
+
30
+ select_component(@components.first)
15
31
  end
16
- end
17
32
 
18
- APPS = []
19
- def APPS.add(name, description=nil, &block)
20
- self << [name, description||name, block]
21
- end
33
+ def select_component(component)
34
+ @editor.entry = @selected_component = component
35
+ end
22
36
 
23
- APPS.add 'demo', 'This demo application' do
24
- Demo.new.add_decoration Wee::PageDecoration.new('Demo')
25
- end
37
+ def render(r)
38
+ r.form.enctype_multipart.with do
39
+ r.h1 'Wee Component Demos'
40
+ r.div.style('float: left; width: 200px;').with {
41
+ r.select_list(@components).
42
+ labels(@components.map {|c| c.title}).
43
+ selected(@selected_component).
44
+ size(10).
45
+ onclick_javascript("this.form.submit()").
46
+ callback_method(:select_component)
47
+ r.break
48
+ r.checkbox.checked(@editor.visibility).
49
+ onclick_javascript("this.form.submit()").
50
+ callback {|bool| @editor.visibility = bool }
51
+ r.space
52
+ r.text "Show Sourcecode?"
53
+ r.break
54
+ }
55
+ r.div.style('float: left; left: 20px; height: 200px; width: 600px; background: #EFEFEF; border: 1px dotted red; padding: 10px').with {
56
+ r.render @selected_component.component
57
+ }
58
+ r.render @editor
59
+ end
60
+ end
26
61
 
27
- APPS.add 'calc', 'RPN Calculator' do
28
- require 'wee/examples/calculator'
29
- Wee::Examples::Calculator.new.
30
- add_decoration(Wee::FormDecoration.new).
31
- add_decoration(Wee::PageDecoration.new('RPN Calculator'))
32
- end
62
+ class Editor < Wee::Component
63
+ attr_accessor :visibility
64
+ attr_accessor :entry
33
65
 
34
- APPS.add 'calendar', 'Calendar' do
35
- require File.join(File.dirname(__FILE__), 'demo', 'calendar')
36
- CustomCalendarDemo.new
37
- end
66
+ def initialize
67
+ super
68
+ @visibility = false
69
+ @mode = :view
70
+ @entry = nil
71
+ end
38
72
 
39
- APPS.add 'example', 'Misc Components' do
40
- require File.join(File.dirname(__FILE__), 'demo', 'example')
41
- MainPage.new
42
- end
73
+ def save
74
+ File.open(@entry.file, 'w+') {|f| f << @txt.lines.map {|l| l.chomp}.join("\n") + "\n" }
75
+ load @entry.file
76
+ @mode = :view
77
+ end
78
+
79
+ def render(r)
80
+ return unless @visibility
81
+ r.div.style('float: left; margin-top: 2em; border-top: 2px solid; width: 100%').with {
82
+ if @mode == :view
83
+ r.anchor.callback { @mode = :edit }.with('edit')
84
+ r.pre.ondblclick_callback { @mode = :edit }.with {
85
+ r.encode_text(File.read(@entry.file))
86
+ }
87
+ else
88
+ r.form do
89
+ r.anchor.callback { @mode = :view }.with('cancel'); r.space
90
+ r.submit_button.callback_method(:save).value('Save!')
91
+ r.break
92
+ r.text_area.rows(25).cols(120).callback{|txt| @txt = txt }.with {
93
+ r.encode_text(File.read(@entry.file))
94
+ }
95
+ end
96
+ end
97
+ }
98
+ end
99
+ end
43
100
 
44
- APPS.each do |name, descr, block|
45
- Wee::WEBrickAdaptor.register("/#{ name }" => Wee::Utils.app_for(&block))
46
101
  end
47
- Wee::WEBrickAdaptor.start
102
+
103
+ Wee.run(Demo) if __FILE__ == $0
@@ -0,0 +1,63 @@
1
+ require 'demo/messagebox'
2
+
3
+ class Calculator < Wee::Component
4
+ def initialize
5
+ super()
6
+ @number_stack = []
7
+ @input = ""
8
+ end
9
+
10
+ def backtrack(state)
11
+ super
12
+ state.add(@number_stack)
13
+ state.add(@input)
14
+ end
15
+
16
+ def render(r)
17
+ r.ul { @number_stack.each {|num| r.li(num) } }
18
+
19
+ r.text_input.value(@input).readonly
20
+
21
+ r.space
22
+
23
+ r.submit_button.value("Enter").callback { enter }
24
+ r.submit_button.value("C").callback { clear }
25
+
26
+ r.break
27
+
28
+ (0..9).each {|num|
29
+ r.submit_button.value(num.to_s).callback { append(num.to_s) }
30
+ }
31
+
32
+ r.submit_button.value(".").disabled(@input.include?(".")).callback { append(".") }
33
+
34
+ ['+', '-', '*', '/'].each { |op|
35
+ r.submit_button.value(op).callback { operation(op) }
36
+ }
37
+ end
38
+
39
+ protected
40
+
41
+ def enter
42
+ @number_stack << @input.to_f
43
+ clear()
44
+ end
45
+
46
+ def clear
47
+ @input.replace("")
48
+ end
49
+
50
+ def append(str)
51
+ @input << str
52
+ end
53
+
54
+ def operation(op)
55
+ enter unless @input.empty?
56
+ if @number_stack.size < 2
57
+ call Wee::MessageBox.new('Stack underflow!')
58
+ else
59
+ r2, r1 = @number_stack.pop, @number_stack.pop
60
+ @number_stack.push(r1.send(op, r2))
61
+ end
62
+ end
63
+ end
@@ -69,9 +69,9 @@ class MiniCalendar < Wee::Component
69
69
 
70
70
  # Backtrack state
71
71
  #
72
- def backtrack_state(snap)
72
+ def backtrack(state)
73
73
  super
74
- snap.add(self)
74
+ state.add(self)
75
75
  end
76
76
 
77
77
  # Set to browse-only (no answer will be given)
@@ -140,23 +140,23 @@ class MiniCalendar < Wee::Component
140
140
 
141
141
  # Render a given day
142
142
  #
143
- def render_day(date)
143
+ def render_day(r, date)
144
144
  if current_month?(date)
145
- selected_day?(date) ? render_selected_day(date) : render_month_day(date)
145
+ selected_day?(date) ? render_selected_day(r, date) : render_month_day(r, date)
146
146
  else
147
- render_other_day(date)
147
+ render_other_day(r, date)
148
148
  end
149
149
  end
150
150
 
151
151
  # Render a day of the currently selected month
152
152
  #
153
- def render_month_day(date)
153
+ def render_month_day(r, date)
154
154
  r.table_data { r.anchor.callback { save(date) }.with(date.day) }
155
155
  end
156
156
 
157
157
  # Render the currently selected day
158
158
  #
159
- def render_selected_day(date)
159
+ def render_selected_day(r, date)
160
160
  r.table_data.style('border: 1px solid black').with do
161
161
  r.anchor.style('font-weight: bold').callback { save(date) }.with(date.day)
162
162
  end
@@ -164,7 +164,7 @@ class MiniCalendar < Wee::Component
164
164
 
165
165
  # Render days of the previous or next month
166
166
  #
167
- def render_other_day(date)
167
+ def render_other_day(r, date)
168
168
  r.table_data do
169
169
  r.anchor.style('color: silver').callback { save(date) }.with(date.day)
170
170
  end
@@ -172,13 +172,13 @@ class MiniCalendar < Wee::Component
172
172
 
173
173
  # CSS styles
174
174
  #
175
- def render_styles
175
+ def render_styles(r)
176
176
  # ...
177
177
  end
178
178
 
179
179
  # Render Calender header
180
180
  #
181
- def render_header
181
+ def render_header(r)
182
182
  r.table_row do
183
183
  r.table_header.colspan(4).with { r.encode_text(month_heading) }
184
184
  r.table_header { r.anchor.callback { go_prev }.with(prev_month_abbr) }
@@ -189,30 +189,28 @@ class MiniCalendar < Wee::Component
189
189
 
190
190
  # Render Calendar footer
191
191
  #
192
- def render_footer
192
+ def render_footer(r)
193
193
  r.table_row { r.table_header.colspan(7).with { r.encode_text(today_string) } }
194
194
  end
195
195
 
196
196
  # Render Calendar
197
197
  #
198
- def render
199
- r.html do
200
- r.head { r.title('Calendar'); render_styles }
201
- r.body do
202
- r.text(sprintf('<!--Month: %s, Day: %s-->', @month, @day))
203
- r.table { r.table_row { r.table_header {
204
- r.table do
205
- render_header
206
- r.table_row { Date::ABBR_DAYNAMES.each { |day| r.table_header(day) } }
207
- @month.calendar.each do |week|
208
- r.table_row do
209
- week.each { |day| render_day(day) }
210
- end
198
+ def render(r)
199
+ render_styles(r)
200
+ r.div.css_class("cal").with do
201
+ r.text(sprintf('<!--Month: %s, Day: %s-->', @month, @day))
202
+ r.table { r.table_row { r.table_header {
203
+ r.table do
204
+ render_header(r)
205
+ r.table_row { Date::ABBR_DAYNAMES.each { |day| r.table_header(day) } }
206
+ @month.calendar.each do |week|
207
+ r.table_row do
208
+ week.each { |day| render_day(r, day) }
211
209
  end
212
- render_footer
213
210
  end
214
- }}}
215
- end
211
+ render_footer(r)
212
+ end
213
+ }}}
216
214
  end
217
215
  end
218
216
 
@@ -246,17 +244,17 @@ end
246
244
  # Custom CSS styles
247
245
  #
248
246
  module StyleMixin
249
- def render_styles
247
+ def render_styles(r)
250
248
  r.style("
251
- a {
252
- text-decoration: none;
253
- }
254
- body {
249
+ .cal {
255
250
  font-size : 11px;
256
251
  font-family : Arial, Helvetica, sans-serif;
257
252
  text-align: center;
258
253
  }
259
- td {
254
+ .cal a {
255
+ text-decoration: none;
256
+ }
257
+ .cal td {
260
258
  font-family: Arial, Helvetica, sans-serif;
261
259
  font-size: 11px;
262
260
  border: 1px solid;
@@ -264,7 +262,7 @@ module StyleMixin
264
262
  vertical-align: top;
265
263
  text-align: center;
266
264
  }
267
- th {
265
+ .cal th {
268
266
  font-family: Arial, Helvetica, sans-serif;
269
267
  font-size: 11px;
270
268
  font-style: normal;
@@ -301,43 +299,32 @@ class CustomCalendarDemo < Wee::Component
301
299
 
302
300
  # Backtrack state
303
301
  #
304
- def backtrack_state(snap)
302
+ def backtrack(state)
305
303
  super
306
- snap.add(self)
304
+ state.add(self)
307
305
  end
308
306
 
309
307
  # Render calendar icon
310
308
  #
311
- def render_icon
309
+ def render_icon(r)
312
310
  icon = 'http://www.softcomplex.com/products/tigra_calendar/img/cal.gif'
313
311
  r.image.src(icon).width(16).height(16).border(0).alt('Calendar')
314
312
  end
315
313
 
316
314
  # Render Calendar demo
317
315
  #
318
- def render
319
- r.html do
320
- r.head { r.title('Calendar Demo'); render_styles }
321
- r.body do
322
- r.break
323
- r.table { r.table_row { r.table_header {
324
- r.table do
325
- r.table_row { r.table_header('Calendar Demo') }
326
- r.table_row { r.table_data {
327
- r.text_input.value(@date).attr(:date)
328
- r.space
329
- r.anchor.callback { calendar }.with { render_icon }
330
- }}
331
- end
332
- }}}
333
- end
334
- end
316
+ def render(r)
317
+ r.text_input.value(@date.to_s).callback{|val| @date } #@date = val}
318
+ r.space
319
+ r.anchor.callback { calendar }.with { render_icon(r) }
335
320
  end
336
321
 
337
322
  # Call the calendar component
338
323
  #
339
324
  def calendar()
340
- call( CustomCalendar.new(@date), :set_date)
325
+ call CustomCalendar.new(@date) do |date|
326
+ set_date(date)
327
+ end
341
328
  end
342
329
 
343
330
  def set_date(date)