waves 0.7.7 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,21 +0,0 @@
1
- require 'choice'
2
-
3
- Choice.options do
4
- header 'Run waves in console mode.'
5
- header ''
6
- option :mode do
7
- short '-c'
8
- long '--config=CONFIG'
9
- desc 'Configuration to use.'
10
- desc 'Defaults to development.'
11
- cast Symbol
12
- end
13
- separator ''
14
- end
15
-
16
- console = Waves::Console.load( Choice.choices )
17
- Object.send(:define_method, :waves) { console }
18
- require 'irb'
19
- require 'irb/completion'
20
- ARGV.clear
21
- IRB.start
@@ -1,11 +0,0 @@
1
- module Waves
2
- module Controllers
3
- class Base
4
-
5
- include Waves::Controllers::Mixin
6
-
7
- def attributes; params[model_name.singular.intern]; end
8
-
9
- end
10
- end
11
- end
@@ -1,165 +0,0 @@
1
- module Waves
2
-
3
- #
4
- # Controllers in Waves are simply classes that provide a request / response
5
- # context for operating on a model. While models are essentially just a way
6
- # to manage data in an application, controllers manage data in response to
7
- # a request. For example, a controller updates a model instance using
8
- # parameters from the request.
9
- #
10
- # Public controller methods simply return data (a resource), if necessary, that
11
- # can be then used by views to determine how to render that data.
12
- # Controllers do not determine which view will be invoked. They are
13
- # independent of the view; one controller method might be suitable for
14
- # several different views. In some cases, controllers can choose to
15
- # directly modify the response and possibly even short-circuit the view
16
- # entirely. A good example of this is a redirect.
17
- #
18
- # Controllers, like Views and Mappings, use the Waves::ResponseMixin to
19
- # provide a rich context for working with the request and response objects.
20
- # They can even call other controllers or views using the controllers method.
21
- # In addition, they provide some basic reflection (access to the model and
22
- # model_name that corresponds to the class name for the given model) and
23
- # automatic parameter destructuring. This allows controller methods to access
24
- # the request parameters as a hash, so that a POST variable named
25
- # <tt>entry.title</tt> is accessed as <tt>params[:entry][:title]</tt>.
26
- #
27
- # Controllers often do not have to be explicitly defined. Instead, one or more
28
- # default controllers can be defined that are used as exemplars for a given
29
- # model. By default, the +waves+ command generates a single default, placed in
30
- # the application's <tt>controllers/default.rb</tt> file. This can be modified
31
- # to change the default behavior for all controllers. Alternatively, the
32
- # <tt>rake generate:controller</tt> command can be used to explicitly define a
33
- # controller.
34
- #
35
- # As an example, the code for the default controller is below for the Blog application.
36
- #
37
- # module Blog
38
- # module Controllers
39
- # class Default
40
- #
41
- # # Pick up the default controller methods, like param, url, etc.
42
- # include Waves::Controllers::Mixin
43
- #
44
- # # This gets me the parameters associated with this model
45
- # def attributes; params[model_name.singular.intern]; end
46
- #
47
- # # A simple generic delegator to the model
48
- # def all; model.all; end
49
- #
50
- # # Find a specific instance based on a name or raise a 404
51
- # def find( name ); model[ :name => name ] or not_found; end
52
- #
53
- # # Create a new instance based on the request params
54
- # def create; model.create( attributes ); end
55
- #
56
- # # Update an existing record. find will raise a 404 if not found.
57
- # def update( name )
58
- # instance = find( name )
59
- # instance.set( attributes )
60
- # instance.save_changes
61
- # end
62
- #
63
- # # Find and delete - or will raise a 404 if it doesn't exist
64
- # def delete( name ); find( name ).destroy; end
65
- #
66
- # end
67
- # end
68
- # end
69
- #
70
- # Since the mapping file handles "glueing" controllers to views, controllers
71
- # don't have to be at all concerned with views. They don't have to set
72
- # instance variables, layouts, or contain logic to select the appropriate
73
- # view based on the request. All they do is worry about updating the model
74
- # when necessary based on the request.
75
-
76
- module Controllers
77
-
78
- #
79
- # Waves::Controllers::Mixin adapts a controller class for use in mappings and provides utility methods.
80
- # It is included in controllers autocreated by the Default foundation, so you do not need to include
81
- # it in subclasses of the same.
82
- #
83
- # The utility methods include simple reflection to allow controller methods
84
- # to be written generically (i.e., without reference to a specific model) and
85
- # parameter destructuring for the request parameters.
86
- #
87
-
88
- module Mixin
89
-
90
- attr_reader :request
91
-
92
- include Waves::ResponseMixin
93
-
94
- # When this mixin is included it adds a class method named +process+,
95
- # which accepts a request object and a block. The +process+ method initializes the
96
- # controller with the request, then evaluates the block using +instance_eval+. This allows the
97
- # controller to be used from within a mapping lambda (i.e. a ResponseProxy).
98
-
99
- def self.included( mod )
100
- def mod.process( request, &block )
101
- self.new( request ).instance_eval( &block )
102
- end
103
- end
104
-
105
- def initialize( request )
106
- @request = request
107
- end
108
-
109
- # The params variable is taken from the request object and "destructured", so that
110
- # a parameter named 'blog.title' becomes:
111
- #
112
- # params['blog']['title']
113
- #
114
- # If you want to access the original parameters object, you can still do so using
115
- # +request.params+ instead of simply +params+.
116
- def params; @params ||= destructure(request.params); end
117
-
118
- # Returns the name of the model corresponding to this controller by taking the basename
119
- # of the module and converting it to snake case. If the model plurality is different than
120
- # the controller, this will not, in fact, be the model name.
121
- def model_name; self.class.basename.snake_case; end
122
-
123
- # Returns the model corresponding to this controller by naively assuming that
124
- # +model_name+ must be correct. This allows you to write generic controller methods such as:
125
- #
126
- # model.find( name )
127
- #
128
- # to find an instance of a given model. Again, the plurality of the controller and
129
- # model must be the same for this to work.
130
- def model; Waves.application.models[ model_name.intern ]; end
131
-
132
- private
133
-
134
- def destructure( hash )
135
- destructured = {}
136
- hash.keys.map { |key| key.split('.') }.each do |keys|
137
- destructure_with_array_keys(hash, '', keys, destructured)
138
- end
139
- destructured
140
- end
141
-
142
- def destructure_with_array_keys( hash, prefix, keys, destructured )
143
- if keys.length == 1
144
- key = "#{prefix}#{keys.first}"
145
- val = hash[key]
146
- destructured[keys.first.intern] = case val
147
- when String
148
- val.strip
149
- when Hash
150
- val
151
- when nil
152
- raise key.inspect
153
- end
154
- else
155
- destructured = ( destructured[keys.first.intern] ||= {} )
156
- new_prefix = "#{prefix}#{keys.shift}."
157
- destructure_with_array_keys( hash, new_prefix, keys, destructured )
158
- end
159
- end
160
-
161
- end
162
-
163
- end
164
-
165
- end
@@ -1,27 +0,0 @@
1
- module Waves
2
- module Foundations
3
- # The Default foundation supports the common MVC development pattern, a la Rails and Merb. Models, controllers, views, templates, and helpers live in the corresponding directories. When your code calls for a specific M, V, C, or H, Waves tries to load it from a file matching the snake-case of the constant name. If the file does not exist, Waves creates the constant from a sensible (and customizable) default.
4
- #
5
- # This foundation does not include any ORM configuration. You can include Waves::Layers::ORM::Sequel or custom configure your model.
6
-
7
-
8
- module Default
9
-
10
- def self.included( app )
11
-
12
- app.instance_eval do
13
-
14
- include Waves::Layers::Inflect::English
15
- include Waves::Layers::Simple
16
- include Waves::Layers::MVC
17
- include Waves::Layers::DefaultErrors
18
-
19
- end
20
-
21
- Waves << app
22
-
23
- end
24
- end
25
- end
26
- end
27
-
@@ -1,30 +0,0 @@
1
- module Waves
2
-
3
- # A Waves Foundation provides enough functionality to allow a Waves application
4
- # to run. At the bare minimum, this means creating configuration classes in the Configurations
5
- # namespace, as is done in the Simple foundation
6
- #
7
- # Typically, a Foundation will include several Layers, perform any necessary
8
- # configuration, and register the application with the Waves module
9
- module Foundations
10
-
11
- # The Simple foundation provides the bare minimum needed to run a Waves application.
12
- # It is intended for use as the basis of more fully-featured foundations, but you can
13
- # use it as a standalone where all the request processing is done directly in a
14
- # mapping lambda.
15
- module Simple
16
-
17
- # On inclusion in a module, the Simple foundation includes Waves::Layers::Simple and
18
- # registers the module as a Waves application.
19
- def self.included( app )
20
-
21
- app.instance_eval do
22
- include Waves::Layers::Simple
23
- end
24
-
25
- Waves << app
26
- end
27
- end
28
- end
29
- end
30
-
@@ -1,67 +0,0 @@
1
- module Waves
2
- module Helpers
3
- module AssetHelper
4
- # Returns an html image tag for the +source+. The +source+ can be a full
5
- # path or a file that exists in your public images directory. Note that
6
- # specifying a filename without the extension is now deprecated in Rails.
7
- # You can add html attributes using the +options+. The +options+ supports
8
- # two additional keys for convienence and conformance:
9
- #
10
- # * <tt>:alt</tt> - If no alt text is given, the file name part of the
11
- # +source+ is used (capitalized and without the extension)
12
- # * <tt>:size</tt> - Supplied as "{Width}x{Height}", so "30x45" becomes
13
- # width="30" and height="45". <tt>:size</tt> will be ignored if the
14
- # value is not in the correct format.
15
- #
16
- # image_tag("icon.png") # =>
17
- # <img src="/images/icon.png" alt="Icon" />
18
- # image_tag("icon.png", :size => "16x10", :alt => "Edit Entry") # =>
19
- # <img src="/images/icon.png" width="16" height="10" alt="Edit Entry" />
20
- # image_tag("/icons/icon.gif", :size => "16x16") # =>
21
- # <img src="/icons/icon.gif" width="16" height="16" alt="Icon" />
22
- def image_tag(source, options = {})
23
- options.symbolize_keys!
24
-
25
- options[:src] = image_path(source)
26
- options[:alt] ||= File.basename(options[:src], '.*').split('.').first.capitalize
27
-
28
- if options[:size]
29
- options[:width], options[:height] = options[:size].split("x") if options[:size] =~ %r{^\d+x\d+$}
30
- options.delete(:size)
31
- end
32
-
33
- tag("img", options)
34
- end
35
-
36
- # Computes the path to an image asset in the public images directory.
37
- # Full paths from the document root will be passed through.
38
- # Used internally by image_tag to build the image path. Passing
39
- # a filename without an extension is deprecated.
40
- #
41
- # image_path("edit.png") # => /images/edit.png
42
- # image_path("icons/edit.png") # => /images/icons/edit.png
43
- # image_path("/icons/edit.png") # => /icons/edit.png
44
- def image_path(source)
45
- compute_public_path(source, 'images', 'png')
46
- end
47
-
48
- private
49
- def compute_public_path(source, dir, ext)
50
- source = source.dup
51
- source << ".#{ext}" if File.extname(source).blank?
52
- unless source =~ %r{^[-a-z]+://}
53
- source = "/#{dir}/#{source}" unless source[0] == ?/
54
- asset_id = rails_asset_id(source)
55
- source << '?' + asset_id if defined?(RAILS_ROOT) && !asset_id.blank?
56
- # source = "#{ActionController::Base.asset_host}#{@controller.request.relative_url_root}#{source}"
57
- end
58
- source
59
- end
60
-
61
- def rails_asset_id(source)
62
- ENV["WAVES_ASSET_ID"] || File.mtime("public/#{source}").to_i.to_s rescue ""
63
- end
64
-
65
- end
66
- end
67
- end
@@ -1,66 +0,0 @@
1
- module Waves
2
-
3
- # Helper methods can be defined for any view template by simply defining them within the default Helper module in <tt>helpers/default.rb</tt> of the generated application. Helpers specific to a particular View class can be explicitly defined by creating a helper module that corresponds to the View class. For examples, for the +User+ View class, you would define a helper module in <tt>user.rb</tt> named +User+.
4
- #
5
- # The default helper class initially includes a wide-variety of helpers, including helpers for layouts, Textile formatting, rendering forms, and nested views, as well as helpers for accessing the request and response objects. More helpers will be added in future releases, but in many cases, there is no need to include all of them in your application.
6
- module Helpers
7
-
8
- # Common helpers are helpers that are needed for just about any Web page. For example,
9
- # each page will likely have a layout and a doctype.
10
-
11
- module Common
12
-
13
- DOCTYPES = {
14
- :html3 => "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n",
15
- :html4_transitional =>
16
- "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" " <<
17
- "\"http://www.w3.org/TR/html4/loose.dtd\">\n",
18
- :html4_strict =>
19
- "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" " <<
20
- "\"http://www.w3.org/TR/html4/strict.dtd\">\n",
21
- :html4_frameset =>
22
- "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" " <<
23
- "\"http://www.w3.org/TR/html4/frameset.dtd\">\n",
24
- :xhtml1_transitional =>
25
- "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" " <<
26
- "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n",
27
- :xhtml1_strict =>
28
- "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" " <<
29
- "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n",
30
- :xhtml1_frameset =>
31
- "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" " <<
32
- "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n",
33
- :xhtml2 => "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n"
34
- }
35
-
36
- # Invokes a layout view (i.e., a view from the layouts template directory), using
37
- # the assigns parameter to define instance variables for the view. The block is
38
- # evaluated and also passed into the view as the +layout_content+ instance variable.
39
- #
40
- # You can define a layout just by creating a template and then calling the
41
- # +layout_content+ accessor when you want to embed the caller's content.
42
- #
43
- # == Example
44
- #
45
- # doctype :html4_transitional
46
- # html do
47
- # title @title # passed as an assigns parameter
48
- # end
49
- # body do
50
- # layout_content
51
- # end
52
- #
53
- def layout( name, assigns = {}, &block )
54
- assigns[ :layout_content ] = capture(&block)
55
- self << Waves.application.views[:layouts].process( request ) do
56
- send( name, assigns )
57
- end
58
- end
59
-
60
- # The doctype method simply generates a valid DOCTYPE declaration for your page.
61
- # Valid options are defined in the +DOCTYPES+ constant.
62
- def doctype(type) ; self << DOCTYPES[type||:html4_strict] ; end
63
-
64
- end
65
- end
66
- end
@@ -1,13 +0,0 @@
1
- module Waves
2
- module Helpers
3
- module Default
4
- attr_reader :request, :content
5
- include Waves::ResponseMixin
6
- include Waves::Helpers::Common
7
- include Waves::Helpers::Formatting
8
- include Waves::Helpers::Model
9
- include Waves::Helpers::View
10
- include Waves::Helpers::Form
11
- end
12
- end
13
- end
@@ -1,25 +0,0 @@
1
- module Waves
2
- module Helpers
3
- module NumberHelper
4
-
5
- # Formats a +number+ with grouped thousands using +delimiter+. You
6
- # can customize the format in the +options+ hash.
7
- # * <tt>:delimiter</tt> - Sets the thousands delimiter, defaults to ","
8
- # * <tt>:separator</tt> - Sets the separator between the units, defaults to "."
9
- #
10
- # number_with_delimiter(12345678) => 12,345,678
11
- # number_with_delimiter(12345678.05) => 12,345,678.05
12
- # number_with_delimiter(12345678, :delimiter => ".") => 12.345.678
13
- def number_with_delimiter(number, delimiter=",", separator=".")
14
- begin
15
- parts = number.to_s.split(separator)
16
- parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
17
- parts.join separator
18
- rescue
19
- number
20
- end
21
- end
22
-
23
- end
24
- end
25
- end
@@ -1,58 +0,0 @@
1
- module Waves
2
- module Helpers
3
- module TagHelper
4
-
5
- ESCAPE_TABLE = { '&'=>'&amp;', '<'=>'&lt;', '>'=>'&gt;', '"'=>'&quot;', "'"=>'&#039;', }
6
- def h(value)
7
- value.to_s.gsub(/[&<>"]/) { |s| ESCAPE_TABLE[s] }
8
- end
9
-
10
- # Returns an empty HTML tag of type +name+ which by default is XHTML
11
- # compliant. Setting +open+ to true will create an open tag compatible
12
- # with HTML 4.0 and below. Add HTML attributes by passing an attributes
13
- # hash to +options+. For attributes with no value like (disabled and
14
- # readonly), give it a value of true in the +options+ hash. You can use
15
- # symbols or strings for the attribute names.
16
- #
17
- # tag("br")
18
- # # => <br />
19
- # tag("br", nil, true)
20
- # # => <br>
21
- # tag("input", { :type => 'text', :disabled => true })
22
- # # => <input type="text" disabled="disabled" />
23
- def tag(name, options = nil, open = false)
24
- "<#{name}#{tag_options(options) if options}" + (open ? ">" : " />")
25
- end
26
-
27
- # Returns the escaped +html+ without affecting existing escaped entities.
28
- #
29
- # escape_once("1 > 2 &amp; 3")
30
- # # => "1 &lt; 2 &amp; 3"
31
- def escape_once(html)
32
- fix_double_escape(h(html.to_s))
33
- end
34
-
35
- private
36
-
37
- def tag_options(options)
38
- cleaned_options = convert_booleans(options.stringify_keys.reject {|key, value| value.nil?})
39
- ' ' + cleaned_options.map {|key, value| %(#{key}="#{escape_once(value)}")}.sort * ' ' unless cleaned_options.empty?
40
- end
41
-
42
- def convert_booleans(options)
43
- %w( disabled readonly multiple ).each { |a| boolean_attribute(options, a) }
44
- options
45
- end
46
-
47
- def boolean_attribute(options, attribute)
48
- options[attribute] ? options[attribute] = attribute : options.delete(attribute)
49
- end
50
-
51
- # Fix double-escaped entities, such as &amp;amp;, &amp;#123;, etc.
52
- def fix_double_escape(escaped)
53
- escaped.gsub(/&amp;([a-z]+|(#\d+));/i) { "&#{$1};" }
54
- end
55
-
56
- end
57
- end
58
- end