waves 0.7.7 → 0.8.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 (402) hide show
  1. data/bin/waves +17 -72
  2. data/doc/HISTORY +1 -44
  3. data/doc/README +1 -0
  4. data/doc/VERSION +1 -0
  5. data/lib/caches/file.rb +48 -0
  6. data/lib/caches/memcached.rb +40 -0
  7. data/lib/caches/simple.rb +25 -0
  8. data/lib/caches/synchronized.rb +25 -0
  9. data/lib/commands/console.rb +35 -0
  10. data/lib/commands/generate.rb +52 -0
  11. data/lib/commands/help.rb +5 -0
  12. data/lib/commands/{waves-server.rb → server.rb} +16 -3
  13. data/lib/dispatchers/base.rb +21 -20
  14. data/lib/dispatchers/default.rb +11 -63
  15. data/lib/ext/float.rb +13 -0
  16. data/lib/{utilities → ext}/hash.rb +2 -2
  17. data/lib/{utilities → ext}/integer.rb +5 -2
  18. data/lib/ext/kernel.rb +20 -0
  19. data/lib/ext/module.rb +20 -0
  20. data/lib/{utilities → ext}/object.rb +3 -5
  21. data/lib/ext/string.rb +20 -0
  22. data/lib/ext/symbol.rb +11 -0
  23. data/lib/ext/tempfile.rb +5 -0
  24. data/lib/foundations/classic.rb +64 -0
  25. data/lib/foundations/compact.rb +50 -0
  26. data/lib/helpers/basic.rb +11 -0
  27. data/lib/helpers/doc_type.rb +34 -0
  28. data/lib/helpers/extended.rb +21 -0
  29. data/lib/helpers/form.rb +3 -1
  30. data/lib/helpers/formatting.rb +3 -3
  31. data/lib/helpers/layouts.rb +37 -0
  32. data/lib/helpers/model.rb +8 -4
  33. data/lib/helpers/view.rb +2 -4
  34. data/lib/layers/inflect/english.rb +48 -5
  35. data/lib/layers/mvc.rb +18 -18
  36. data/lib/layers/mvc/controllers.rb +41 -0
  37. data/lib/layers/mvc/extensions.rb +52 -0
  38. data/lib/layers/orm/{active_record.rb → providers/active_record.rb} +9 -14
  39. data/lib/layers/orm/{active_record → providers/active_record}/migrations/empty.rb.erb +0 -0
  40. data/lib/layers/orm/{active_record → providers/active_record}/tasks/generate.rb +1 -1
  41. data/lib/layers/orm/{active_record → providers/active_record}/tasks/schema.rb +1 -1
  42. data/lib/layers/orm/{data_mapper.rb → providers/data_mapper.rb} +3 -4
  43. data/lib/layers/orm/providers/filebase.rb +25 -0
  44. data/lib/layers/orm/{sequel.rb → providers/sequel.rb} +11 -7
  45. data/lib/layers/orm/{sequel → providers/sequel}/migrations/empty.rb.erb +0 -0
  46. data/lib/layers/orm/{sequel → providers/sequel}/tasks/generate.rb +5 -3
  47. data/lib/layers/orm/{sequel → providers/sequel}/tasks/schema.rb +2 -2
  48. data/lib/{renderers → layers/renderers}/erubis.rb +10 -13
  49. data/lib/{renderers → layers/renderers}/haml.rb +27 -25
  50. data/lib/layers/renderers/markaby.rb +29 -0
  51. data/lib/matchers/accept.rb +21 -0
  52. data/lib/matchers/base.rb +30 -0
  53. data/lib/matchers/content_type.rb +17 -0
  54. data/lib/matchers/path.rb +67 -0
  55. data/lib/matchers/query.rb +21 -0
  56. data/lib/matchers/request.rb +27 -0
  57. data/lib/matchers/resource.rb +19 -0
  58. data/lib/matchers/traits.rb +19 -0
  59. data/lib/matchers/uri.rb +20 -0
  60. data/lib/renderers/mixin.rb +15 -29
  61. data/lib/resources/mixin.rb +132 -0
  62. data/lib/resources/paths.rb +34 -0
  63. data/lib/runtime/configuration.rb +55 -135
  64. data/lib/runtime/console.rb +4 -1
  65. data/lib/runtime/logger.rb +24 -48
  66. data/lib/runtime/mime_types.rb +516 -2
  67. data/lib/runtime/mocks.rb +14 -0
  68. data/lib/runtime/monitor.rb +32 -0
  69. data/lib/runtime/request.rb +107 -39
  70. data/lib/runtime/response.rb +5 -2
  71. data/lib/runtime/response_mixin.rb +43 -22
  72. data/lib/runtime/runtime.rb +67 -0
  73. data/lib/runtime/server.rb +14 -101
  74. data/lib/runtime/session.rb +4 -43
  75. data/lib/runtime/worker.rb +86 -0
  76. data/lib/servers/base.rb +42 -0
  77. data/lib/servers/mongrel.rb +13 -0
  78. data/lib/servers/webrick.rb +13 -0
  79. data/lib/tasks/gem.rb +1 -0
  80. data/lib/tasks/generate.rb +67 -62
  81. data/lib/views/errors.rb +49 -0
  82. data/lib/views/mixin.rb +34 -82
  83. data/lib/waves.rb +36 -57
  84. data/samples/blog/Rakefile +16 -5
  85. data/samples/blog/blog.db +0 -0
  86. data/samples/blog/configurations/default.rb +11 -0
  87. data/samples/blog/configurations/development.rb +9 -11
  88. data/samples/blog/configurations/production.rb +11 -15
  89. data/samples/blog/log/waves.production +3 -0
  90. data/samples/blog/models/comment.rb +9 -0
  91. data/samples/blog/models/entry.rb +17 -0
  92. data/samples/blog/public/css/site.css +13 -2
  93. data/samples/blog/public/javascript/jquery-1.2.6.min.js +32 -0
  94. data/samples/blog/resources/entry.rb +39 -0
  95. data/samples/blog/resources/map.rb +9 -0
  96. data/samples/blog/schema/migrations/001_initial_schema.rb +3 -3
  97. data/samples/blog/schema/migrations/002_add_comments.rb +2 -2
  98. data/samples/blog/startup.rb +8 -6
  99. data/samples/blog/templates/comment/add.mab +6 -4
  100. data/samples/blog/templates/comment/list.mab +4 -4
  101. data/samples/blog/templates/entry/{editor.mab → edit.mab} +7 -6
  102. data/samples/blog/templates/entry/list.mab +10 -5
  103. data/samples/blog/templates/entry/show.mab +16 -7
  104. data/samples/blog/templates/entry/summary.mab +8 -4
  105. data/samples/blog/templates/errors/not_found_404.mab +6 -1
  106. data/samples/blog/templates/layouts/default.mab +5 -3
  107. data/samples/blog/templates/waves/status.mab +85 -0
  108. data/{app → templates/classic}/Rakefile +58 -0
  109. data/templates/classic/configurations/default.rb.erb +9 -0
  110. data/{app → templates/classic}/configurations/development.rb.erb +3 -8
  111. data/{app → templates/classic}/configurations/production.rb.erb +3 -5
  112. data/templates/classic/resources/map.rb.erb +8 -0
  113. data/templates/classic/startup.rb.erb +11 -0
  114. data/{app → templates/classic}/templates/errors/not_found_404.mab +0 -0
  115. data/{app → templates/classic}/templates/errors/server_error_500.mab +0 -0
  116. data/{app → templates/classic}/templates/layouts/default.mab +0 -0
  117. data/templates/compact/startup.rb.erb +11 -0
  118. metadata +257 -610
  119. data/app/bin/waves-console +0 -4
  120. data/app/bin/waves-server +0 -4
  121. data/app/configurations/mapping.rb.erb +0 -14
  122. data/app/controllers/.gitignore +0 -0
  123. data/app/doc/.gitignore +0 -0
  124. data/app/helpers/.gitignore +0 -0
  125. data/app/lib/application.rb.erb +0 -5
  126. data/app/lib/tasks/.gitignore +0 -0
  127. data/app/log/.gitignore +0 -0
  128. data/app/models/.gitignore +0 -0
  129. data/app/public/css/.gitignore +0 -0
  130. data/app/public/flash/.gitignore +0 -0
  131. data/app/public/images/.gitignore +0 -0
  132. data/app/public/javascript/.gitignore +0 -0
  133. data/app/schema/migrations/.gitignore +0 -0
  134. data/app/startup.rb +0 -5
  135. data/app/tmp/sessions/.gitignore +0 -0
  136. data/app/views/.gitignore +0 -0
  137. data/bin/waves-console +0 -4
  138. data/bin/waves-server +0 -4
  139. data/doc/rdoc/classes/Erubis/Context.html +0 -218
  140. data/doc/rdoc/classes/Kernel.html +0 -145
  141. data/doc/rdoc/classes/Symbol.html +0 -154
  142. data/doc/rdoc/classes/Tempfile.html +0 -161
  143. data/doc/rdoc/classes/Waves.html +0 -455
  144. data/doc/rdoc/classes/Waves/Application.html +0 -371
  145. data/doc/rdoc/classes/Waves/Blackboard.html +0 -296
  146. data/doc/rdoc/classes/Waves/Configurations.html +0 -283
  147. data/doc/rdoc/classes/Waves/Configurations/Base.html +0 -209
  148. data/doc/rdoc/classes/Waves/Configurations/Default.html +0 -237
  149. data/doc/rdoc/classes/Waves/Console.html +0 -187
  150. data/doc/rdoc/classes/Waves/Controllers.html +0 -203
  151. data/doc/rdoc/classes/Waves/Controllers/Base.html +0 -151
  152. data/doc/rdoc/classes/Waves/Controllers/Mixin.html +0 -312
  153. data/doc/rdoc/classes/Waves/Dispatchers.html +0 -118
  154. data/doc/rdoc/classes/Waves/Dispatchers/Base.html +0 -198
  155. data/doc/rdoc/classes/Waves/Dispatchers/Default.html +0 -224
  156. data/doc/rdoc/classes/Waves/Dispatchers/NotFoundError.html +0 -122
  157. data/doc/rdoc/classes/Waves/Dispatchers/Redirect.html +0 -173
  158. data/doc/rdoc/classes/Waves/Foundations.html +0 -131
  159. data/doc/rdoc/classes/Waves/Foundations/Default.html +0 -179
  160. data/doc/rdoc/classes/Waves/Foundations/Simple.html +0 -167
  161. data/doc/rdoc/classes/Waves/Helpers.html +0 -176
  162. data/doc/rdoc/classes/Waves/Helpers/AssetHelper.html +0 -212
  163. data/doc/rdoc/classes/Waves/Helpers/Common.html +0 -213
  164. data/doc/rdoc/classes/Waves/Helpers/Default.html +0 -135
  165. data/doc/rdoc/classes/Waves/Helpers/Form.html +0 -201
  166. data/doc/rdoc/classes/Waves/Helpers/Formatting.html +0 -232
  167. data/doc/rdoc/classes/Waves/Helpers/Model.html +0 -194
  168. data/doc/rdoc/classes/Waves/Helpers/NumberHelper.html +0 -165
  169. data/doc/rdoc/classes/Waves/Helpers/TagHelper.html +0 -226
  170. data/doc/rdoc/classes/Waves/Helpers/UrlHelper.html +0 -242
  171. data/doc/rdoc/classes/Waves/Helpers/View.html +0 -163
  172. data/doc/rdoc/classes/Waves/Inflect/InflectorMethods.html +0 -475
  173. data/doc/rdoc/classes/Waves/Layers.html +0 -175
  174. data/doc/rdoc/classes/Waves/Layers/DefaultErrors.html +0 -161
  175. data/doc/rdoc/classes/Waves/Layers/Inflect.html +0 -119
  176. data/doc/rdoc/classes/Waves/Layers/Inflect/English.html +0 -168
  177. data/doc/rdoc/classes/Waves/Layers/Inflect/English/Rules.html +0 -112
  178. data/doc/rdoc/classes/Waves/Layers/Inflect/English/StringMethods.html +0 -194
  179. data/doc/rdoc/classes/Waves/Layers/MVC.html +0 -204
  180. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord.html +0 -239
  181. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord/ControllerMethods.html +0 -246
  182. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord/Symbol.html +0 -132
  183. data/doc/rdoc/classes/Waves/Layers/ORM/DataMapper.html +0 -166
  184. data/doc/rdoc/classes/Waves/Layers/ORM/Filebase.html +0 -157
  185. data/doc/rdoc/classes/Waves/Layers/ORM/Sequel.html +0 -232
  186. data/doc/rdoc/classes/Waves/Layers/ORM/Sequel/ControllerMethods.html +0 -246
  187. data/doc/rdoc/classes/Waves/Layers/Simple.html +0 -169
  188. data/doc/rdoc/classes/Waves/Layers/SimpleErrors.html +0 -159
  189. data/doc/rdoc/classes/Waves/Logger.html +0 -288
  190. data/doc/rdoc/classes/Waves/Mapping.html +0 -760
  191. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls.html +0 -129
  192. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls/GetRules.html +0 -174
  193. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls/RestRules.html +0 -180
  194. data/doc/rdoc/classes/Waves/MimeTypes.html +0 -200
  195. data/doc/rdoc/classes/Waves/Renderers/Erubis.html +0 -162
  196. data/doc/rdoc/classes/Waves/Renderers/Haml.html +0 -160
  197. data/doc/rdoc/classes/Waves/Renderers/Markaby.html +0 -167
  198. data/doc/rdoc/classes/Waves/Renderers/Mixin.html +0 -191
  199. data/doc/rdoc/classes/Waves/Renderers/Scope.html +0 -181
  200. data/doc/rdoc/classes/Waves/Request.html +0 -441
  201. data/doc/rdoc/classes/Waves/Request/ParseError.html +0 -111
  202. data/doc/rdoc/classes/Waves/Response.html +0 -283
  203. data/doc/rdoc/classes/Waves/ResponseMixin.html +0 -460
  204. data/doc/rdoc/classes/Waves/ResponseProxy.html +0 -269
  205. data/doc/rdoc/classes/Waves/Server.html +0 -488
  206. data/doc/rdoc/classes/Waves/Session.html +0 -330
  207. data/doc/rdoc/classes/Waves/Utilities/Hash.html +0 -185
  208. data/doc/rdoc/classes/Waves/Utilities/Integer.html +0 -424
  209. data/doc/rdoc/classes/Waves/Utilities/Module.html +0 -174
  210. data/doc/rdoc/classes/Waves/Utilities/Object.html +0 -155
  211. data/doc/rdoc/classes/Waves/Utilities/Proc.html +0 -145
  212. data/doc/rdoc/classes/Waves/Utilities/String.html +0 -290
  213. data/doc/rdoc/classes/Waves/Views.html +0 -278
  214. data/doc/rdoc/classes/Waves/Views/Base.html +0 -118
  215. data/doc/rdoc/classes/Waves/Views/Mixin.html +0 -279
  216. data/doc/rdoc/classes/Waves/Views/NoTemplateError.html +0 -111
  217. data/doc/rdoc/created.rid +0 -1
  218. data/doc/rdoc/files/README_rdoc.html +0 -415
  219. data/doc/rdoc/files/bin/waves.html +0 -135
  220. data/doc/rdoc/files/doc/HISTORY.html +0 -265
  221. data/doc/rdoc/files/lib/commands/waves-console_rb.html +0 -110
  222. data/doc/rdoc/files/lib/commands/waves-server_rb.html +0 -108
  223. data/doc/rdoc/files/lib/controllers/base_rb.html +0 -101
  224. data/doc/rdoc/files/lib/controllers/mixin_rb.html +0 -101
  225. data/doc/rdoc/files/lib/dispatchers/base_rb.html +0 -101
  226. data/doc/rdoc/files/lib/dispatchers/default_rb.html +0 -101
  227. data/doc/rdoc/files/lib/foundations/default_rb.html +0 -101
  228. data/doc/rdoc/files/lib/foundations/simple_rb.html +0 -101
  229. data/doc/rdoc/files/lib/helpers/asset_helper_rb.html +0 -101
  230. data/doc/rdoc/files/lib/helpers/common_rb.html +0 -101
  231. data/doc/rdoc/files/lib/helpers/default_rb.html +0 -101
  232. data/doc/rdoc/files/lib/helpers/form_rb.html +0 -101
  233. data/doc/rdoc/files/lib/helpers/formatting_rb.html +0 -108
  234. data/doc/rdoc/files/lib/helpers/model_rb.html +0 -101
  235. data/doc/rdoc/files/lib/helpers/number_helper_rb.html +0 -101
  236. data/doc/rdoc/files/lib/helpers/tag_helper_rb.html +0 -101
  237. data/doc/rdoc/files/lib/helpers/url_helper_rb.html +0 -101
  238. data/doc/rdoc/files/lib/helpers/view_rb.html +0 -101
  239. data/doc/rdoc/files/lib/layers/default_errors_rb.html +0 -101
  240. data/doc/rdoc/files/lib/layers/inflect/english/rules_rb.html +0 -101
  241. data/doc/rdoc/files/lib/layers/inflect/english/string_rb.html +0 -101
  242. data/doc/rdoc/files/lib/layers/inflect/english_rb.html +0 -109
  243. data/doc/rdoc/files/lib/layers/mvc_rb.html +0 -101
  244. data/doc/rdoc/files/lib/layers/orm/active_record/tasks/generate_rb.html +0 -101
  245. data/doc/rdoc/files/lib/layers/orm/active_record/tasks/schema_rb.html +0 -101
  246. data/doc/rdoc/files/lib/layers/orm/active_record_rb.html +0 -108
  247. data/doc/rdoc/files/lib/layers/orm/data_mapper_rb.html +0 -108
  248. data/doc/rdoc/files/lib/layers/orm/filebase_rb.html +0 -101
  249. data/doc/rdoc/files/lib/layers/orm/migration_rb.html +0 -101
  250. data/doc/rdoc/files/lib/layers/orm/sequel/tasks/generate_rb.html +0 -101
  251. data/doc/rdoc/files/lib/layers/orm/sequel/tasks/schema_rb.html +0 -101
  252. data/doc/rdoc/files/lib/layers/orm/sequel_rb.html +0 -108
  253. data/doc/rdoc/files/lib/layers/simple_errors_rb.html +0 -101
  254. data/doc/rdoc/files/lib/layers/simple_rb.html +0 -101
  255. data/doc/rdoc/files/lib/mapping/mapping_rb.html +0 -101
  256. data/doc/rdoc/files/lib/mapping/pretty_urls_rb.html +0 -101
  257. data/doc/rdoc/files/lib/renderers/erubis_rb.html +0 -108
  258. data/doc/rdoc/files/lib/renderers/haml_rb.html +0 -108
  259. data/doc/rdoc/files/lib/renderers/markaby_rb.html +0 -108
  260. data/doc/rdoc/files/lib/renderers/mixin_rb.html +0 -101
  261. data/doc/rdoc/files/lib/runtime/application_rb.html +0 -107
  262. data/doc/rdoc/files/lib/runtime/blackboard_rb.html +0 -101
  263. data/doc/rdoc/files/lib/runtime/configuration_rb.html +0 -101
  264. data/doc/rdoc/files/lib/runtime/console_rb.html +0 -101
  265. data/doc/rdoc/files/lib/runtime/debugger_rb.html +0 -101
  266. data/doc/rdoc/files/lib/runtime/logger_rb.html +0 -108
  267. data/doc/rdoc/files/lib/runtime/mime_types_rb.html +0 -101
  268. data/doc/rdoc/files/lib/runtime/request_rb.html +0 -101
  269. data/doc/rdoc/files/lib/runtime/response_mixin_rb.html +0 -101
  270. data/doc/rdoc/files/lib/runtime/response_proxy_rb.html +0 -101
  271. data/doc/rdoc/files/lib/runtime/response_rb.html +0 -101
  272. data/doc/rdoc/files/lib/runtime/server_rb.html +0 -108
  273. data/doc/rdoc/files/lib/runtime/session_rb.html +0 -101
  274. data/doc/rdoc/files/lib/tasks/cluster_rb.html +0 -101
  275. data/doc/rdoc/files/lib/tasks/gem_rb.html +0 -108
  276. data/doc/rdoc/files/lib/tasks/generate_rb.html +0 -101
  277. data/doc/rdoc/files/lib/utilities/hash_rb.html +0 -101
  278. data/doc/rdoc/files/lib/utilities/inflect_rb.html +0 -111
  279. data/doc/rdoc/files/lib/utilities/integer_rb.html +0 -101
  280. data/doc/rdoc/files/lib/utilities/module_rb.html +0 -101
  281. data/doc/rdoc/files/lib/utilities/object_rb.html +0 -101
  282. data/doc/rdoc/files/lib/utilities/proc_rb.html +0 -101
  283. data/doc/rdoc/files/lib/utilities/string_rb.html +0 -101
  284. data/doc/rdoc/files/lib/utilities/symbol_rb.html +0 -101
  285. data/doc/rdoc/files/lib/utilities/tempfile_rb.html +0 -115
  286. data/doc/rdoc/files/lib/views/base_rb.html +0 -101
  287. data/doc/rdoc/files/lib/views/mixin_rb.html +0 -101
  288. data/doc/rdoc/files/lib/waves_rb.html +0 -195
  289. data/doc/rdoc/fr_class_index.html +0 -104
  290. data/doc/rdoc/fr_file_index.html +0 -97
  291. data/doc/rdoc/fr_method_index.html +0 -233
  292. data/doc/rdoc/index.html +0 -24
  293. data/doc/rdoc/rdoc-style.css +0 -208
  294. data/lib/commands/waves-console.rb +0 -21
  295. data/lib/controllers/base.rb +0 -11
  296. data/lib/controllers/mixin.rb +0 -165
  297. data/lib/foundations/default.rb +0 -27
  298. data/lib/foundations/simple.rb +0 -30
  299. data/lib/helpers/asset_helper.rb +0 -67
  300. data/lib/helpers/common.rb +0 -66
  301. data/lib/helpers/default.rb +0 -13
  302. data/lib/helpers/number_helper.rb +0 -25
  303. data/lib/helpers/tag_helper.rb +0 -58
  304. data/lib/helpers/url_helper.rb +0 -77
  305. data/lib/layers/default_errors.rb +0 -26
  306. data/lib/layers/inflect/english/rules.rb +0 -88
  307. data/lib/layers/inflect/english/string.rb +0 -24
  308. data/lib/layers/orm/filebase.rb +0 -22
  309. data/lib/layers/simple.rb +0 -32
  310. data/lib/layers/simple_errors.rb +0 -23
  311. data/lib/mapping/mapping.rb +0 -289
  312. data/lib/mapping/pretty_urls.rb +0 -96
  313. data/lib/renderers/markaby.rb +0 -33
  314. data/lib/runtime/application.rb +0 -69
  315. data/lib/runtime/blackboard.rb +0 -57
  316. data/lib/runtime/debugger.rb +0 -9
  317. data/lib/runtime/response_proxy.rb +0 -30
  318. data/lib/tasks/cluster.rb +0 -26
  319. data/lib/utilities/inflect.rb +0 -110
  320. data/lib/utilities/module.rb +0 -21
  321. data/lib/utilities/proc.rb +0 -16
  322. data/lib/utilities/string.rb +0 -49
  323. data/lib/utilities/symbol.rb +0 -10
  324. data/lib/utilities/tempfile.rb +0 -9
  325. data/lib/views/base.rb +0 -9
  326. data/samples/blog/bin/waves-console +0 -3
  327. data/samples/blog/bin/waves-server +0 -3
  328. data/samples/blog/configurations/mapping.rb +0 -23
  329. data/samples/blog/doc/EMTPY +0 -0
  330. data/samples/blog/lib/application.rb +0 -5
  331. data/samples/jub/Rakefile +0 -72
  332. data/samples/jub/bin/waves-console +0 -4
  333. data/samples/jub/bin/waves-server +0 -4
  334. data/samples/jub/configurations/development.rb +0 -31
  335. data/samples/jub/configurations/mapping.rb +0 -18
  336. data/samples/jub/configurations/production.rb +0 -31
  337. data/samples/jub/lib/application.rb +0 -5
  338. data/samples/jub/startup.rb +0 -6
  339. data/samples/jub/templates/errors/not_found_404.mab +0 -2
  340. data/samples/jub/templates/errors/server_error_500.mab +0 -2
  341. data/samples/jub/templates/layouts/default.mab +0 -14
  342. data/verify/app_generation/helpers.rb +0 -24
  343. data/verify/app_generation/startup.rb +0 -39
  344. data/verify/blackboard/blackboard_verify.rb +0 -92
  345. data/verify/blackboard/helpers.rb +0 -5
  346. data/verify/configurations/attributes.rb +0 -37
  347. data/verify/configurations/helpers.rb +0 -1
  348. data/verify/configurations/rack_integration.rb +0 -29
  349. data/verify/controllers/base.rb +0 -37
  350. data/verify/controllers/helpers.rb +0 -13
  351. data/verify/controllers/interface.rb +0 -51
  352. data/verify/core/helpers.rb +0 -3
  353. data/verify/core/utilities.rb +0 -177
  354. data/verify/foundations/default.rb +0 -86
  355. data/verify/foundations/default_application/Rakefile +0 -14
  356. data/verify/foundations/default_application/bin/waves-console +0 -3
  357. data/verify/foundations/default_application/bin/waves-server +0 -3
  358. data/verify/foundations/default_application/configurations/development.rb +0 -26
  359. data/verify/foundations/default_application/configurations/mapping.rb +0 -14
  360. data/verify/foundations/default_application/configurations/production.rb +0 -30
  361. data/verify/foundations/default_application/controllers/default.rb +0 -15
  362. data/verify/foundations/default_application/controllers/loaded.rb +0 -15
  363. data/verify/foundations/default_application/defaultapplication.db +0 -0
  364. data/verify/foundations/default_application/helpers/loaded.rb +0 -10
  365. data/verify/foundations/default_application/lib/application.rb +0 -5
  366. data/verify/foundations/default_application/models/default.rb +0 -13
  367. data/verify/foundations/default_application/models/loaded.rb +0 -13
  368. data/verify/foundations/default_application/schema/migrations/templates/empty.rb.erb +0 -9
  369. data/verify/foundations/default_application/startup.rb +0 -7
  370. data/verify/foundations/default_application/templates/errors/not_found_404.mab +0 -2
  371. data/verify/foundations/default_application/templates/errors/server_error_500.mab +0 -2
  372. data/verify/foundations/default_application/templates/layouts/default.mab +0 -14
  373. data/verify/foundations/default_application/views/default.rb +0 -7
  374. data/verify/foundations/default_application/views/loaded.rb +0 -15
  375. data/verify/foundations/helpers.rb +0 -1
  376. data/verify/foundations/simple.rb +0 -25
  377. data/verify/helpers.rb +0 -76
  378. data/verify/layers/data_mapper/association_verify.rb +0 -87
  379. data/verify/layers/default_errors.rb +0 -29
  380. data/verify/layers/helpers.rb +0 -1
  381. data/verify/layers/migration.rb +0 -33
  382. data/verify/layers/sequel/model.rb +0 -41
  383. data/verify/layers/sequeltest.db +0 -0
  384. data/verify/mapping/always.rb +0 -19
  385. data/verify/mapping/filters.rb +0 -65
  386. data/verify/mapping/handle.rb +0 -24
  387. data/verify/mapping/helpers.rb +0 -7
  388. data/verify/mapping/matches.rb +0 -27
  389. data/verify/mapping/named.rb +0 -29
  390. data/verify/mapping/options.rb +0 -17
  391. data/verify/mapping/path.rb +0 -40
  392. data/verify/mapping/response_proxy.rb +0 -50
  393. data/verify/mapping/threaded.rb +0 -25
  394. data/verify/requests/helpers.rb +0 -16
  395. data/verify/requests/request.rb +0 -73
  396. data/verify/requests/response.rb +0 -59
  397. data/verify/requests/session.rb +0 -54
  398. data/verify/views/helpers.rb +0 -1
  399. data/verify/views/rendering.rb +0 -34
  400. data/verify/views/templates/foo.erb +0 -0
  401. data/verify/views/templates/moo.erb +0 -0
  402. data/verify/views/templates/moo.mab +0 -0
@@ -3,75 +3,23 @@ module Waves
3
3
  module Dispatchers
4
4
 
5
5
  #
6
- # Waves::Dispatchers::Default matches requests against an application's mappings to
7
- # determine what main action to take, as well as what before, after, always, and exception-handling
8
- # blocks must run.
9
- #
10
- # The default dispatcher also attempts to set the content type based on the
11
- # file extension used in the request URL. It does this using the class defined in
12
- # the current configuration's +mime_types+ attribute, which defaults to Mongrel's
13
- # MIME type handler.
14
- #
15
- # You can write your own dispatcher and use it in your application's configuration
16
- # file. By default, they use the default dispatcher, like this:
17
- #
18
- # application do
19
- # use Rack::ShowExceptions
20
- # run Waves::Dispatchers::Default.new
21
- # end
6
+ # Waves::Dispatchers::Default processes a Waves::Request and returns a Waves::Response as follows:
22
7
  #
23
8
 
24
9
  class Default < Base
25
10
 
26
- # All dispatchers using the Dispatchers::Base to provide thread-safety, logging, etc.
27
- # must provide a +safe+ method to handle creating a response from a request.
28
- # Takes a Waves::Request and returns a Waves::Reponse
11
+ # Takes a Waves::Request and returns a Waves::Response
29
12
  def safe( request )
30
-
31
- response = request.response
32
-
33
- Waves::Application.instance.reload if Waves::Application.instance.debug?
34
- response.content_type = Waves::Application.instance.config.mime_types[ request.path ] || 'text/html'
35
-
36
- mapping = Waves::Application.instance.mapping[ request ]
37
-
38
- begin
39
-
40
- mapping[:before].each do | block, args |
41
- ResponseProxy.new(request).instance_exec(*args,&block)
42
- end
43
-
44
- request.not_found unless mapping[:action]
45
-
46
- block, args = mapping[:action]
47
- response.write( ResponseProxy.new(request).instance_exec(*args, &block) )
48
-
49
- mapping[:after].each do | block, args |
50
- ResponseProxy.new(request).instance_exec(*args,&block)
51
- end
52
-
53
- rescue Exception => e
54
-
55
- handler = mapping[:handlers].detect do | exception, block, args |
56
- e.is_a? exception
57
- end
58
- if handler
59
- ResponseProxy.new(request).instance_exec(*handler[2], &handler[1])
60
- else
61
- raise e
62
- end
63
-
64
- ensure
65
- mapping[:always].each do | block, args |
66
- begin
67
- ResponseProxy.new(request).instance_exec(*args,&block)
68
- rescue Exception => e
69
- Waves::Logger.info e.to_s
70
- end
71
- end
72
-
13
+ # set a default content type -- this can be overridden by the resource
14
+ request.response.content_type = request.accept.default
15
+ resource = Waves.config.resource.new( request )
16
+ if request.response.body.empty?
17
+ request.response.body << resource.process.to_s
18
+ else
19
+ resource.process
73
20
  end
74
-
21
+ # okay, we've handled the request, now write the response unless it was already done
22
+ request.response.finish
75
23
  end
76
24
 
77
25
  end
@@ -0,0 +1,13 @@
1
+ module Waves
2
+ module Ext
3
+ module Float
4
+ def to_delimited(delim=',')
5
+ self.to_s.gsub(/(\d)(?=(\d\d\d)+\.)/, "\\1#{delim}")
6
+ end
7
+ end
8
+ end
9
+ end
10
+
11
+ class Float # :nodoc:
12
+ include Waves::Ext::Float
13
+ end
@@ -1,5 +1,5 @@
1
1
  module Waves
2
- module Utilities # :nodoc:
2
+ module Ext # :nodoc:
3
3
 
4
4
  # Utility methods mixed into Hash.
5
5
  module Hash
@@ -27,5 +27,5 @@ module Waves
27
27
  end
28
28
 
29
29
  class Hash # :nodoc:
30
- include Waves::Utilities::Hash
30
+ include Waves::Ext::Hash
31
31
  end
@@ -1,5 +1,5 @@
1
1
  module Waves
2
- module Utilities
2
+ module Ext
3
3
  module Integer
4
4
  def seconds ; self ; end
5
5
  def minutes ; self * 60 ; end
@@ -15,10 +15,13 @@ module Waves
15
15
  def exabytes ; self * 1024.petabytes ; end
16
16
  def zettabytes ; self * 1024.exabytes ; end
17
17
  def yottabytes ; self * 1024.zettabytes ; end
18
+ def to_delimited(delim=',')
19
+ self.to_s.gsub(/(\d)(?=(\d\d\d)+$)/, "\\1#{delim}")
20
+ end
18
21
  end
19
22
  end
20
23
  end
21
24
 
22
25
  class Integer # :nodoc:
23
- include Waves::Utilities::Integer
26
+ include Waves::Ext::Integer
24
27
  end
@@ -0,0 +1,20 @@
1
+ module Kernel
2
+ unless respond_to?(:debugger)
3
+ # Starts a debugging session if ruby-debug has been loaded (call waves-server --debugger to do load it).
4
+ def debugger
5
+ Waves::Logger.info "Debugger invoked but not loaded. Start server with --debugger to enable."
6
+ end
7
+ end
8
+
9
+ unless respond_to?(:engine)
10
+ # 'engine' exists to provide a quick and easy (and MRI-compatible!) interface to the RUBY_ENGINE constant
11
+ def engine; defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'; end
12
+ end
13
+
14
+ def safe_trap(*signals)
15
+ signals.each { |s| trap(s) { yield } }
16
+ Thread.new { loop { sleep 1 } } if RUBY_PLATFORM =~ /mswin32/
17
+ end
18
+
19
+
20
+ end
@@ -0,0 +1,20 @@
1
+ module Waves
2
+ module Ext
3
+ module Module
4
+
5
+ def basename ; self.name.split('::').last || '' ; end
6
+ def rootname ; self.name.split('::').first ; end
7
+ def root ; eval( "::#{self.rootname}" ) ; end
8
+
9
+ # Just a convenience method for dynamically referencing submodules. Note that
10
+ # you cannot do const_get, because that will also attempt to deref the cname
11
+ # at global scope. So it is more efficient to just use eval.
12
+ def []( cname ) ; eval( "self::#{cname.to_s.camel_case}" ) ; end
13
+
14
+ end
15
+ end
16
+ end
17
+
18
+ class Module # :nodoc:
19
+ include Waves::Ext::Module
20
+ end
@@ -1,11 +1,9 @@
1
1
  module Waves
2
- module Utilities
2
+ module Ext
3
3
  module Object
4
4
  # This is an extremely powerful little function that will be built-in to Ruby 1.9.
5
5
  # This version is from Mauricio Fernandez via ruby-talk. Works like instance_eval
6
- # except that you can pass parameters to the block. This means you can define a block
7
- # intended for use with instance_eval, pass it to another method, which can then
8
- # invoke with parameters. This is used quite a bit by the Waves::Mapping code.
6
+ # except that you can pass parameters to the block.
9
7
  def instance_exec(*args, &block)
10
8
  mname = "__instance_exec_#{Thread.current.object_id.abs}"
11
9
  class << self; self end.class_eval{ define_method(mname, &block) }
@@ -21,5 +19,5 @@ module Waves
21
19
  end
22
20
 
23
21
  class Object # :nodoc:
24
- include Waves::Utilities::Object
22
+ include Waves::Ext::Object
25
23
  end
@@ -0,0 +1,20 @@
1
+ # Utility methods mixed into String.
2
+
3
+ class String
4
+
5
+ # Syntactic sugar for using File.join to concatenate the argument to the receiver.
6
+ #
7
+ # require "lib" / "utilities" / "string"
8
+ #
9
+ # The idea is not original, but we can't remember where we first saw it.
10
+ # Waves::Ext::Symbol defines the same method, allowing for :files / 'afilename.txt'
11
+ #
12
+
13
+ def / ( s ) ; File.join( self, s.to_s ); end
14
+
15
+ alias_method :lower_camel_case, :subcamelcase
16
+ alias_method :camel_case, :camelcase
17
+ alias_method :snake_case, :snakecase
18
+ alias_method :title_case, :titlecase
19
+
20
+ end
@@ -0,0 +1,11 @@
1
+ class Symbol
2
+
3
+ # Syntactic sugar for using File.join to concatenate the argument to the receiver.
4
+ #
5
+ # require :lib / :utilities / :string
6
+ #
7
+ # The idea is not original, but we can't remember where we first saw it.
8
+ # Waves::Ext::Symbol defines the same method, allowing for :files / 'afilename.txt'
9
+
10
+ def / ( s ) ; File.join( self.to_s, s.to_s ) ; end
11
+ end
@@ -0,0 +1,5 @@
1
+ require 'tempfile'
2
+ class Tempfile
3
+ # override method to prevent problem uploading files with Rack
4
+ def ==(other) ; eql?(other) || super ; end
5
+ end
@@ -0,0 +1,64 @@
1
+ module Waves
2
+ module Foundations
3
+
4
+ # Provides Sun MVC features for your application.
5
+ # Includes ERb-style templates. You can also include others via Renderer Layers.
6
+ # It does NOT include a default ORM. Use an ORM Layer for that.
7
+
8
+ module Classic
9
+
10
+ def self.included( app )
11
+
12
+ require 'autocode'
13
+ require 'layers/mvc'
14
+ require 'layers/inflect/english'
15
+ require 'helpers/extended'
16
+ require 'layers/renderers/erubis'
17
+
18
+ app.module_eval do
19
+
20
+ include AutoCode
21
+
22
+ app.auto_create_module( :Configurations ) do
23
+ include AutoCode
24
+ auto_create_class :Default
25
+ auto_load :Default, :directories => [ :configurations ]
26
+ end
27
+
28
+ app.auto_eval( :Configurations ) do
29
+ auto_create_class true, app::Configurations::Default
30
+ auto_load true, :directories => [ :configurations ]
31
+ end
32
+
33
+ app.auto_create_module( :Resources ) do
34
+ include AutoCode
35
+ auto_create_class :Default, Waves::Resources::Base
36
+ auto_load :Default, :directories => [ :resources ]
37
+ end
38
+
39
+ app.auto_eval( :Resources ) do
40
+ auto_create_class true, app::Resources::Default
41
+ auto_load true, :directories => [ :resources ]
42
+ auto_eval :Map do
43
+
44
+ handler( Waves::Dispatchers::NotFoundError ) do
45
+ app::Views::Errors.new( request ).not_found_404
46
+ end
47
+
48
+ end
49
+ end
50
+
51
+ include Waves::Layers::Inflect::English
52
+ include Waves::Layers::MVC
53
+ include Waves::Renderers::Erubis
54
+
55
+ end
56
+
57
+ Waves << app
58
+
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+
@@ -0,0 +1,50 @@
1
+ module Waves
2
+ module Foundations
3
+ module Compact
4
+ def self.included( app )
5
+ app.module_eval {
6
+ const_set( :Resources, Module.new {
7
+ const_set( :Map, Class.new {
8
+ include Waves::Resources::Mixin
9
+ handler( Exception ) {
10
+ Waves::Views::Errors.new( request ).server_error_500
11
+ }
12
+
13
+ handler( Waves::Dispatchers::NotFoundError ) {
14
+ Waves::Views::Errors.new( request ).not_found_404
15
+ }
16
+ })
17
+ })
18
+ const_set( :Configurations, Module.new {
19
+ const_set( :Development, Class.new( Waves::Configurations::Default ) {
20
+ log :level => :debug
21
+ host '127.0.0.1'
22
+ port 3000
23
+ server Waves::Servers::Mongrel
24
+ resource app::Resources::Map
25
+ })
26
+ const_set( :Production, Class.new( self::Development ) {
27
+ log :level => :error, :output => ( "log.#{$$}" ), :rotation => :weekly
28
+ port 80
29
+ host '0.0.0.0'
30
+ server Waves::Servers::Mongrel
31
+ application {
32
+ use Rack::Session::Cookie, :key => 'rack.session',
33
+ # :domain => 'foo.com',
34
+ :path => '/',
35
+ :expire_after => 2592000,
36
+ :secret => 'Change it'
37
+
38
+ run ::Waves::Dispatchers::Default.new
39
+ }
40
+
41
+ })
42
+ })
43
+ }
44
+ Waves << app
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+
@@ -0,0 +1,11 @@
1
+ module Waves
2
+ module Helpers
3
+ module Basic
4
+ attr_reader :request
5
+ include Waves::ResponseMixin
6
+
7
+ def app ; Waves.main ; end
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ module Waves
2
+
3
+ module Helpers
4
+
5
+ module DocType
6
+
7
+ DOCTYPES = {
8
+ :html3 => "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n",
9
+ :html4_transitional =>
10
+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" " <<
11
+ "\"http://www.w3.org/TR/html4/loose.dtd\">\n",
12
+ :html4_strict =>
13
+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" " <<
14
+ "\"http://www.w3.org/TR/html4/strict.dtd\">\n",
15
+ :html4_frameset =>
16
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" " <<
17
+ "\"http://www.w3.org/TR/html4/frameset.dtd\">\n",
18
+ :xhtml1_transitional =>
19
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " <<
20
+ "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n",
21
+ :xhtml1_strict =>
22
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" " <<
23
+ "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n",
24
+ :xhtml1_frameset =>
25
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" " <<
26
+ "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n",
27
+ :xhtml2 => "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n"
28
+ }
29
+
30
+ def doctype(type) ; self << DOCTYPES[type||:html4_strict] ; end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,21 @@
1
+ require 'helpers/basic'
2
+ require 'helpers/doc_type'
3
+ require 'helpers/layouts'
4
+ require 'helpers/formatting'
5
+ require 'helpers/model'
6
+ require 'helpers/view'
7
+ require 'helpers/form'
8
+
9
+ module Waves
10
+ module Helpers
11
+ module Extended
12
+ include Waves::Helpers::Basic
13
+ include Waves::Helpers::DocType
14
+ include Waves::Helpers::Layouts
15
+ include Waves::Helpers::Formatting
16
+ include Waves::Helpers::Model
17
+ include Waves::Helpers::View
18
+ include Waves::Helpers::Form
19
+ end
20
+ end
21
+ end
@@ -15,7 +15,9 @@ module Waves
15
15
  # will invoke the +text+ form view (the template in +templates/form/text.mab+),
16
16
  # passing in the name ('blog.title') and the value (@blog.title) as instance variables.
17
17
  #
18
- # These helpers are Markaby only.
18
+ # These helpers work best with Markaby, but may work for other Renderers.
19
+ #
20
+
19
21
  module Form
20
22
 
21
23
  # This method really is a place-holder for common wrappers around groups of
@@ -19,9 +19,9 @@ module Waves
19
19
  # Treat content as Textile.
20
20
  def textile( content )
21
21
  return if content.nil? or content.empty?
22
- ( ::RedCloth::TEXTILE_TAGS << [ 96.chr, '&8216;'] ).each do |pat,ent|
23
- content.gsub!( pat, ent.gsub('&','&#') )
24
- end
22
+ #( ::RedCloth::TEXTILE_TAGS << [ 96.chr, '&8216;'] ).each do |pat,ent|
23
+ # content.gsub!( pat, ent.gsub('&','&#') )
24
+ #end
25
25
  self << ::RedCloth.new( content ).to_html
26
26
  end
27
27