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,241 @@
1
+ require 'wee/renderer'
2
+
3
+ module Wee
4
+
5
+ class HtmlCanvas < Renderer
6
+
7
+ def initialize(*args)
8
+ super
9
+ @current_brush = nil
10
+ end
11
+
12
+ def close
13
+ @current_brush.close if @current_brush
14
+ @current_brush = nil
15
+ end
16
+
17
+ def nest
18
+ old_brush = @current_brush
19
+ # we don't want that Brush#close is calledas #nest
20
+ # is called from #with -> this avoids an infinite loop
21
+ @current_brush = nil
22
+ yield
23
+ @current_brush.close if @current_brush
24
+ @current_brush = old_brush
25
+ end
26
+
27
+ def self.brush_tag(attr, klass, *args_to_new)
28
+ args_to_new = args_to_new.map {|a| a.inspect}.join(", ")
29
+ if klass.instance_method(:with).arity != 0
30
+ class_eval %{
31
+ def #{attr}(*args, &block)
32
+ handle(#{klass}.new(#{args_to_new}), *args, &block)
33
+ end
34
+ }
35
+ elsif klass.nesting?
36
+ class_eval %{
37
+ def #{attr}(&block)
38
+ handle2(#{klass}.new(#{args_to_new}), &block)
39
+ end
40
+ }
41
+ else
42
+ class_eval %{
43
+ def #{attr}
44
+ handle3(#{klass}.new(#{args_to_new}))
45
+ end
46
+ }
47
+ end
48
+ end
49
+
50
+ def self.generic_tag(*attrs)
51
+ attrs.each {|attr| brush_tag attr, Brush::GenericTagBrush, attr }
52
+ end
53
+
54
+ def self.generic_single_tag(*attrs)
55
+ attrs.each {|attr| brush_tag attr, Brush::GenericSingleTagBrush, attr }
56
+ end
57
+
58
+ generic_tag :html, :head, :body, :title, :style, :label
59
+ generic_tag :h1, :h2, :h3, :h4, :h5
60
+ generic_tag :div, :span, :ul, :ol, :li, :pre
61
+ generic_single_tag :link, :hr
62
+
63
+ brush_tag :table, Brush::TableTag
64
+ brush_tag :table_row, Brush::TableRowTag
65
+ brush_tag :table_data, Brush::TableDataTag
66
+ brush_tag :table_header, Brush::TableHeaderTag
67
+ brush_tag :form, Brush::FormTag
68
+ brush_tag :input, Brush::InputTag
69
+ brush_tag :hidden_input, Brush::HiddenInputTag
70
+ brush_tag :password_input, Brush::PasswordInputTag
71
+ brush_tag :text_input, Brush::TextInputTag
72
+ brush_tag :radio_button, Brush::RadioButtonTag
73
+ brush_tag :check_box, Brush::CheckboxTag; alias checkbox check_box
74
+ brush_tag :text_area, Brush::TextAreaTag
75
+ brush_tag :option, Brush::SelectOptionTag
76
+ brush_tag :submit_button, Brush::SubmitButtonTag
77
+ brush_tag :image_button, Brush::ImageButtonTag
78
+ brush_tag :file_upload, Brush::FileUploadTag
79
+ brush_tag :page, Brush::Page
80
+ brush_tag :anchor, Brush::AnchorTag
81
+ brush_tag :javascript, Brush::JavascriptTag
82
+ brush_tag :image, Brush::ImageTag
83
+
84
+ brush_tag :bold, Brush::GenericTagBrush, :b
85
+ brush_tag :paragraph, Brush::GenericTagBrush, :p
86
+ brush_tag :break, Brush::GenericSingleTagBrush, :br
87
+
88
+ def select_list(items, &block)
89
+ handle2(Brush::SelectListTag.new(items), &block)
90
+ end
91
+
92
+ HTML_NBSP = "&nbsp;".freeze
93
+
94
+ def space(n=1)
95
+ text(HTML_NBSP*n)
96
+ end
97
+
98
+ def text(str)
99
+ @current_brush.close if @current_brush
100
+ @current_brush = nil
101
+ @document.text(str)
102
+ nil
103
+ end
104
+
105
+ alias << text
106
+
107
+ def encode_text(str)
108
+ @current_brush.close if @current_brush
109
+ @current_brush = nil
110
+ @document.encode_text(str)
111
+ nil
112
+ end
113
+
114
+ def css(str)
115
+ @current_brush.close if @current_brush
116
+ @current_brush = nil
117
+ @document.start_tag(:style, 'type' => 'text/css')
118
+ @document.write("<!--\n")
119
+ @document.text(str)
120
+ @document.write("-->\n")
121
+ @document.end_tag(:style)
122
+ end
123
+
124
+ #
125
+ # converts \n into <br/>
126
+ #
127
+ def multiline_text(str, encode=true)
128
+ @current_brush.close if @current_brush
129
+ @current_brush = nil
130
+
131
+ first = true
132
+ str.each_line do |line|
133
+ @document.single_tag(:br) unless first
134
+ first = false
135
+
136
+ if encode
137
+ @document.encode_text(line)
138
+ else
139
+ @document.text(line)
140
+ end
141
+ end
142
+ end
143
+
144
+ #
145
+ # Define a divert location or change into an existing divert
146
+ # location (and append +txt+ or the contents of +block+).
147
+ #
148
+ def divert(tag, txt=nil, &block)
149
+ @document.divert(tag, txt, &block)
150
+ end
151
+
152
+ #
153
+ # To update components in an AJAX request.
154
+ #
155
+ def update(*components)
156
+ components.each {|c|
157
+ self.callbacks.unregister(c)
158
+ self.render_decoration(c)
159
+ }
160
+ end
161
+
162
+ #
163
+ # Render specific markup only once. For example style and/or
164
+ # javascript of a component which has many instances.
165
+ #
166
+ def once(tag)
167
+ return if @document.set.has_key?(tag)
168
+ @document.set[tag] = true
169
+ yield if block_given?
170
+ end
171
+
172
+ HTML_TYPE_CSS = 'text/css'.freeze
173
+ HTML_REL_STYLESHEET = 'stylesheet'.freeze
174
+
175
+ def link_css(url)
176
+ link.type(HTML_TYPE_CSS).rel(HTML_REL_STYLESHEET).href(url)
177
+ end
178
+
179
+ def new_radio_group
180
+ Wee::Brush::RadioButtonTag::RadioGroup.new(self)
181
+ end
182
+
183
+ def url_for_callback(callback, type=:action, hash=nil)
184
+ url_for_callback_id(register_callback(type, callback), hash)
185
+ end
186
+
187
+ def url_for_callback_id(callback_id, hash=nil)
188
+ if hash
189
+ build_url(hash.update(:callback_id => callback_id))
190
+ else
191
+ build_url(:callback_id => callback_id)
192
+ end
193
+ end
194
+
195
+ def build_url(*args)
196
+ @request.build_url(*args)
197
+ end
198
+
199
+ def register_callback(type, callback)
200
+ cbs = @callbacks
201
+ if cbs.respond_to?("#{type}_callbacks")
202
+ cbs.send("#{type}_callbacks").register(@current_component, callback)
203
+ else
204
+ raise
205
+ end
206
+ end
207
+
208
+ protected
209
+
210
+ def set_brush(brush)
211
+ brush.setup(self, @document)
212
+
213
+ @current_brush.close if @current_brush
214
+ @current_brush = brush
215
+
216
+ return brush
217
+ end
218
+
219
+ def handle(brush, *args, &block)
220
+ if block or not args.empty?
221
+ set_brush(brush)
222
+ brush.with(*args, &block)
223
+ else
224
+ set_brush(brush)
225
+ end
226
+ end
227
+
228
+ def handle2(brush, &block)
229
+ if block
230
+ set_brush(brush)
231
+ brush.with(&block)
232
+ else
233
+ set_brush(brush)
234
+ end
235
+ end
236
+
237
+ alias handle3 set_brush
238
+
239
+ end # class HtmlCanvas
240
+
241
+ end # module Wee
@@ -0,0 +1,45 @@
1
+ require 'wee/html_writer'
2
+
3
+ module Wee
4
+
5
+ #
6
+ # Represents a complete HTML document.
7
+ #
8
+ class HtmlDocument < HtmlWriter
9
+ def initialize
10
+ super([])
11
+ end
12
+
13
+ def set
14
+ @set ||= {}
15
+ end
16
+
17
+ def divert(tag, txt=nil, &block)
18
+ raise ArgumentError if txt and block
19
+ @divert ||= {}
20
+
21
+ unless divert = @divert[tag]
22
+ @divert[tag] = divert = []
23
+ @port << divert
24
+ end
25
+
26
+ if txt
27
+ divert << txt
28
+ end
29
+
30
+ if block
31
+ old_port = @port
32
+ begin
33
+ @port = divert
34
+ block.call
35
+ ensure
36
+ @port = old_port
37
+ end
38
+ end
39
+ end
40
+
41
+ def to_s
42
+ @port.join
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,71 @@
1
+ require 'rack'
2
+
3
+ module Wee
4
+
5
+ #
6
+ # A class used to write out HTML documents easily.
7
+ #
8
+ # Usage:
9
+ #
10
+ # w = Wee::HtmlWriter.new(doc='')
11
+ # w.start_tag('html')
12
+ # w.start_tag('body')
13
+ # w.start_tag('a', 'href' => 'http://...')
14
+ # w.text('link')
15
+ # w.end_tag('a')
16
+ # w.end_tag('body')
17
+ # w.end_tag('html')
18
+ #
19
+ # p doc # => '<html><body><a href="http://...">link</a></body></html>'
20
+ #
21
+ class HtmlWriter
22
+
23
+ attr_accessor :port
24
+
25
+ def initialize(port=[])
26
+ @port = port
27
+ end
28
+
29
+ CLOSING = ">".freeze
30
+ SINGLE_CLOSING = " />".freeze
31
+
32
+ def start_tag(tag, attributes=nil, single=false)
33
+ if attributes
34
+ @port << "<#{tag}"
35
+ attributes.each {|k, v|
36
+ if v
37
+ @port << %[ #{ k }="#{ v }"]
38
+ else
39
+ @port << %[ #{ k }]
40
+ end
41
+ }
42
+ @port << (single ? SINGLE_CLOSING : CLOSING)
43
+ else
44
+ @port << (single ? "<#{tag} />" : "<#{tag}>")
45
+ end
46
+ end
47
+
48
+ def single_tag(tag, attributes=nil)
49
+ start_tag(tag, attributes, true)
50
+ end
51
+
52
+ def end_tag(tag)
53
+ @port << "</#{tag}>"
54
+ end
55
+
56
+ def text(str)
57
+ @port << str.to_s
58
+ end
59
+
60
+ def encode_text(str)
61
+ @port << Rack::Utils.escape_html(str.to_s)
62
+ end
63
+
64
+ def write(str)
65
+ @port << str
66
+ end
67
+ alias << write
68
+
69
+ end # class HtmlWriter
70
+
71
+ end # module Wee
@@ -0,0 +1,70 @@
1
+ module Wee
2
+
3
+ #
4
+ # Abstract base class of all id generators.
5
+ #
6
+ class IdGenerator
7
+ def next
8
+ raise "subclass responsibility"
9
+ end
10
+ end
11
+
12
+ #
13
+ # Sequential id generator.
14
+ #
15
+ # Returned ids are guaranteed to be unique, but they are easily guessable.
16
+ #
17
+ class IdGenerator::Sequential < IdGenerator
18
+ def initialize(initial_value=0)
19
+ @value = initial_value - 1
20
+ end
21
+
22
+ def next
23
+ (@value += 1).to_s(36)
24
+ end
25
+ end
26
+
27
+ #
28
+ # Returned ids are unique with a very high probability and it's
29
+ # very hard to guess the next or any used id.
30
+ #
31
+ class IdGenerator::Secure < IdGenerator
32
+
33
+ require 'digest/md5'
34
+ begin
35
+ require 'securerandom'
36
+ rescue LoadError
37
+ end
38
+
39
+ def initialize(salt='wee')
40
+ @salt = salt
41
+ end
42
+
43
+ def next_md5
44
+ now = Time.now
45
+ dig = Digest::MD5.new
46
+ dig.update(now.to_s)
47
+ dig.update(now.usec.to_s)
48
+ dig.update(rand(0).to_s)
49
+ dig.update($$.to_s)
50
+ dig.update(@salt.to_s)
51
+ dig.digest
52
+ end
53
+
54
+ def next_secure
55
+ SecureRandom.random_bytes(16)
56
+ rescue NotImplementedError
57
+ next_md5
58
+ end
59
+
60
+ def next
61
+ str = defined?(::SecureRandom) ? next_secure : next_md5
62
+ packed = [str].pack('m')
63
+ packed.tr!("=\r\n", '')
64
+ packed.tr!('+/', '-_')
65
+ packed
66
+ end
67
+
68
+ end
69
+
70
+ end # module Wee
@@ -0,0 +1 @@
1
+ require 'wee/jquery/jquery'
@@ -0,0 +1,17 @@
1
+ module Wee
2
+ class JQuery
3
+ FILES = %w(jquery-1.3.2.min.js wee-jquery.js)
4
+ PUBLIC_DIR = File.expand_path(File.join(File.dirname(__FILE__), 'public'))
5
+
6
+ def self.install(mount_path, builder)
7
+ builder.map(@mount_path = mount_path) do
8
+ run Rack::File.new(PUBLIC_DIR)
9
+ end
10
+ end
11
+
12
+ def self.javascript_includes(r)
13
+ raise "JQuery.install needs to be called" unless @mount_path
14
+ FILES.each {|f| r.javascript.src("#{@mount_path}/#{f}") }
15
+ end
16
+ end
17
+ end