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
@@ -2,8 +2,10 @@ namespace :generate do
2
2
 
3
3
  desc 'Generate a Sequel model, with name=<name>'
4
4
  task :model do |task|
5
- name = ENV['name']
6
- model_name = name.camel_case
5
+
6
+ model_name = ENV['name'].camel_case
7
+ app_name = ( ENV['app'] || Dir.pwd.split('/').last ).camel_case
8
+
7
9
  raise "Cannot generate Default yet" if model_name == 'Default'
8
10
 
9
11
  filename = File.expand_path "models/#{name}.rb"
@@ -13,7 +15,7 @@ namespace :generate do
13
15
  end
14
16
 
15
17
  model = <<TEXT
16
- module #{Waves.application.name}
18
+ module #{app_name}
17
19
  module Models
18
20
  class #{model_name} < Default
19
21
 
@@ -1,4 +1,4 @@
1
- require "#{File.dirname(__FILE__)}/../../migration"
1
+ require "#{File.dirname(__FILE__)}/../../../migration"
2
2
 
3
3
  namespace :schema do
4
4
 
@@ -10,7 +10,7 @@ namespace :schema do
10
10
  desc "Performs Sequel migrations to version=<version>"
11
11
  task :migrate do |task|
12
12
  version = ENV['version']; version = version.to_i unless version.nil?
13
- Sequel::Migrator.apply( Waves.application.database, Waves::Layers::ORM.migration_directory , version )
13
+ Sequel::Migrator.apply( Waves.main.database, Waves::Layers::ORM.migration_directory , version )
14
14
  end
15
15
 
16
16
  end
@@ -5,10 +5,6 @@ module Erubis # :nodoc:
5
5
  # This is added to the Erubis Content class to allow the same helper methods
6
6
  # to be used with both Markaby and Erubis.
7
7
  class Context
8
- include Waves::Helpers::UrlHelper
9
- include Waves::Helpers::TagHelper
10
- include Waves::Helpers::AssetHelper
11
- include Waves::Helpers::NumberHelper
12
8
 
13
9
  def <<(s)
14
10
  eval("_buf", @binding).concat s # add to rendered output
@@ -34,15 +30,15 @@ module Erubis # :nodoc:
34
30
  end
35
31
 
36
32
  module Waves
37
-
33
+
38
34
  module Renderers
39
35
 
40
- class Erubis
41
-
42
- include Renderers::Mixin
43
-
44
- extension :erb
45
-
36
+ module Erubis
37
+
38
+ Extension = :erb
39
+
40
+ extend Waves::Renderers::Mixin
41
+
46
42
  def self.render( path, assigns )
47
43
  eruby = ::Erubis::Eruby.new( template( path ) )
48
44
  helper = helper( path )
@@ -56,8 +52,9 @@ module Waves
56
52
  context.render(eruby)
57
53
  end
58
54
 
59
- end
60
55
 
56
+ end
57
+
61
58
  end
62
59
 
63
- end
60
+ end
@@ -1,32 +1,15 @@
1
1
  require 'haml'
2
2
 
3
3
  module Waves
4
-
4
+
5
5
  module Renderers
6
6
 
7
- class Scope
8
- include Waves::Helpers::Common
9
- include Waves::Helpers::Model
10
- include Waves::Helpers::TagHelper
11
- include Waves::Helpers::UrlHelper
12
- include Waves::Helpers::View
13
-
14
- def <<(s)
15
- eval("@haml_buffer", @binding).push_text s # add to rendered output
16
- end
17
-
18
- def capture(&block)
19
- capture_haml(nil, &block)
20
- end
21
-
22
- end
23
-
24
- class Haml
25
-
26
- include Renderers::Mixin
27
-
28
- extension :haml
29
-
7
+ module Haml
8
+
9
+ Extension = :haml
10
+
11
+ extend Waves::Renderers::Mixin
12
+
30
13
  def self.render( path, assigns )
31
14
  engine = ::Haml::Engine.new( template( path ) )
32
15
  scope = Scope.new
@@ -37,9 +20,28 @@ module Waves
37
20
  end
38
21
  engine.render(scope, assigns)
39
22
  end
23
+
24
+ class Scope
25
+ include Waves::Helpers::DocType
26
+ include Waves::Helpers::Layouts
27
+ include Waves::Helpers::Model
28
+ include Waves::Helpers::View
29
+
30
+ def <<(s)
31
+ eval("@haml_buffer", @binding).push_text s # add to rendered output
32
+ end
40
33
 
41
- end
34
+ def capture(&block)
35
+ capture_haml(nil, &block)
36
+ end
37
+
38
+ end
42
39
 
40
+ end
41
+
43
42
  end
44
43
 
45
44
  end
45
+
46
+
47
+
@@ -0,0 +1,29 @@
1
+ module Waves
2
+
3
+ module Renderers
4
+
5
+ module Markaby
6
+
7
+ Extension = :mab
8
+
9
+ extend Waves::Renderers::Mixin
10
+
11
+ def self.included( app )
12
+ require 'markaby'
13
+ ::Markaby::Builder.set( :indent, 2 )
14
+ super
15
+ end
16
+
17
+ def self.render( path, assigns )
18
+ builder = ::Markaby::Builder.new( assigns )
19
+ helper = helper( path )
20
+ builder.meta_eval { include( helper ) }
21
+ builder.instance_eval( template( path ) )
22
+ builder.to_s
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,21 @@
1
+ module Waves
2
+
3
+ module Matchers
4
+
5
+ class Accept < Base
6
+
7
+ def initialize( options )
8
+ @constraints = {
9
+ :accept => options[ :accept ],
10
+ :lang => options[ :lang ],
11
+ :charset => options[ :charset ]
12
+ }
13
+ end
14
+
15
+ def call( request ) ; test( request ) ; end
16
+
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -0,0 +1,30 @@
1
+ module Waves
2
+
3
+ module Matchers
4
+
5
+ class Base
6
+
7
+ attr_accessor :constraints
8
+
9
+ def []( *args ) ; call( *args ) ; end
10
+
11
+ # used to provide consisting matching logic across all matchers
12
+ def test( request )
13
+ constraints.all? do | key, val |
14
+ if val.nil? or val == true
15
+ true
16
+ else
17
+ if val.respond_to? :call
18
+ val.call( request )
19
+ else
20
+ val == request.send( key ) or val === request.send( key ) or request.send( key ) === val
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -0,0 +1,17 @@
1
+ module Waves
2
+
3
+ module Matchers
4
+
5
+ class ContentType < Base
6
+
7
+ def initialize( content_type ) ; @constraints = { :content_type => content_type } ; end
8
+
9
+ # we could maybe do something more sophisticated here, matching against content type patterns
10
+ # such */html or */xml, etc.; adapt from the matching done on accepts ... ?
11
+ def call( request ) ; test( request ) ; end
12
+
13
+ end
14
+
15
+ end
16
+
17
+ end
@@ -0,0 +1,67 @@
1
+ module Waves
2
+
3
+ module Matchers
4
+
5
+ class Path < Base
6
+
7
+ # Takes an array of pattern elements ... coming soon, support for formatted strings!
8
+ def initialize( pattern ) ; @pattern = pattern ; end
9
+
10
+ def call( request )
11
+ return {} if @pattern == true or @pattern == false or @pattern.nil?
12
+ path = extract_path( request ).reverse
13
+ return {} if ( path.empty? and @pattern.empty? )
14
+ capture = {}
15
+ match = @pattern.all? do | want |
16
+ case want
17
+ when true # means 1..-1
18
+ path = [] unless path.empty?
19
+ when Range
20
+ if want.end == -1
21
+ path = [] if path.length >= want.begin
22
+ else
23
+ path = [] if want.include? path.length
24
+ end
25
+ when String then want == path.pop
26
+ when Symbol then capture[ want ] = path.pop
27
+ when Regexp then want === path.pop
28
+ when Hash
29
+ key, value = want.to_a.first
30
+ case value
31
+ when true
32
+ ( capture[ key ], path = path.reverse, [] ) unless path.empty?
33
+ when Range
34
+ if value.end == -1
35
+ ( capture[ key ], path = path.reverse, [] ) if path.length >= value.begin
36
+ else
37
+ ( capture[ key ], path = path.reverse, [] ) if value.include? path.length
38
+ end
39
+ when String, Symbol
40
+ got = path.pop
41
+ capture[ key ] = got ? got : value.to_s
42
+ when Regexp then
43
+ got = path.pop
44
+ capture[ key ] = got if value === got
45
+ end
46
+ end
47
+ end
48
+ capture if match && path.empty?
49
+ end
50
+
51
+ private
52
+
53
+ # just a little helper method
54
+ def extract_path( request )
55
+ path = request.traits.waves.path
56
+ return path if path
57
+ path = request.path.split('/')
58
+ path.shift unless path.empty?
59
+ request.traits.waves.path = path
60
+ end
61
+
62
+ end
63
+
64
+
65
+ end
66
+
67
+ end
@@ -0,0 +1,21 @@
1
+ module Waves
2
+
3
+ module Matchers
4
+
5
+ class Query < Base
6
+
7
+ def initialize( pattern ) ; @pattern = ( pattern or {} ) ; end
8
+
9
+ def call( request )
10
+ @pattern.all? do | key, val |
11
+ key = key.to_s
12
+ ( ( val.respond_to?(:call) and val.call( request.query[ key ] ) ) or
13
+ ( request.query[ key ] and ( ( val == true ) or ( val === request.query[ key ] ) ) ) )
14
+ end
15
+ end
16
+
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -0,0 +1,27 @@
1
+ module Waves
2
+
3
+ module Matchers
4
+
5
+ class Request < Base
6
+
7
+ def initialize( options )
8
+ @uri = Matchers::URI.new( options )
9
+ @constraints = {
10
+ :content_type => Matchers::ContentType.new( options[ :content_type ] ),
11
+ :accept => Matchers::Accept.new( options ),
12
+ :query => Matchers::Query.new( options[:query] ),
13
+ :traits => Matchers::Traits.new( options[:traits] )
14
+ }
15
+ end
16
+
17
+ def call( request )
18
+ if test( request ) and captured = @uri[ request ]
19
+ request.traits.waves.captured = captured
20
+ end
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,19 @@
1
+ module Waves
2
+
3
+ module Matchers
4
+
5
+ class Resource
6
+
7
+ def initialize( options )
8
+ @matcher = Waves::Matchers::Request.new( options )
9
+ end
10
+
11
+ def call( resource ) ; @matcher.call( resource.request ) ; end
12
+ def []( *args ) ; call( *args ) ; end
13
+
14
+
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -0,0 +1,19 @@
1
+ module Waves
2
+
3
+ module Matchers
4
+
5
+ class Traits < Base
6
+
7
+ def initialize( pattern ) ; @pattern = ( pattern or {} ) ; end
8
+
9
+ def call( request )
10
+ @pattern.all? do | key, val |
11
+ ( val.is_a? Proc and val.call( request.traits[ key ] ) ) or val === request.traits[ key ]
12
+ end
13
+ end
14
+
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -0,0 +1,20 @@
1
+ module Waves
2
+
3
+ module Matchers
4
+
5
+ class URI < Base
6
+
7
+ def initialize( options )
8
+ @path = Waves::Matchers::Path.new( options[ :path ] )
9
+ @constraints = { :server => options[ :server ], :scheme => options[ :scheme ] }
10
+ end
11
+
12
+ def call( request )
13
+ @path.call( request ) if test( request )
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -6,42 +6,28 @@ module Waves
6
6
  # Just include this in your Renderer class and write your render method.
7
7
  module Mixin
8
8
 
9
- # Adds the following methods to the target class:
10
- #
11
- # - extension: allows you to set or get the extension used by this renderer.
12
- #
13
- # Renderers::Markaby.extension 'foo' # tell Waves to use .foo as Markaby extension
9
+ # Adds the following methods to the mod class:
14
10
  #
15
11
  # - filename: generate a filename for the template based on a logical path.
16
12
  # - template: read the template from the file corresponding to the given logical path.
17
13
  # - helper: return a helper module that corresponds to the given logical path.
18
14
  #
19
- def self.included(target)
20
- class << target
21
-
22
- def extension(*args)
23
- return @extension if args.length == 0
24
- @extension = args.first
25
- end
26
-
27
- def filename(path)
28
- :templates / "#{path}.#{self.extension}"
29
- end
30
-
31
- def render(path,args=nil)
32
- end
33
-
34
- def template( path )
35
- File.read( filename( path ) )
36
- end
37
-
38
- def helper( path )
39
- Waves.application.helpers[
40
- File.basename( File.dirname( path ) ).camel_case ]
41
- end
42
- end
15
+
16
+ def included( app )
17
+ Waves::Views.renderers << self
18
+ end
19
+
20
+ def filename(path)
21
+ "#{path}.#{self::Extension}"
22
+ end
23
+
24
+ def template( path )
25
+ File.read( filename( path ) )
43
26
  end
44
27
 
28
+ def helper( path )
29
+ Waves.main[ :helpers ][ File.basename( File.dirname( path ) ).camel_case ]
30
+ end
45
31
 
46
32
  end
47
33