manveru-ramaze 2009.01 → 2009.04

Sign up to get free protection for your applications and to get access to all the features.
Files changed (540) hide show
  1. data/.mailmap +25 -0
  2. data/CHANGELOG +16750 -0
  3. data/MANIFEST +485 -0
  4. data/README.markdown +0 -5
  5. data/Rakefile +79 -222
  6. data/bin/ramaze +275 -52
  7. data/doc/AUTHORS +36 -28
  8. data/doc/FAQ +1 -1
  9. data/doc/tutorial/todolist.html +1415 -742
  10. data/doc/tutorial/todolist.txt +939 -0
  11. data/examples/app/auth/layout/auth.xhtml +25 -0
  12. data/examples/app/auth/start.rb +23 -0
  13. data/examples/app/auth/view/index.xhtml +4 -0
  14. data/examples/app/auth/view/login.xhtml +20 -0
  15. data/examples/app/auth/view/secret.xhtml +1 -0
  16. data/examples/app/blog/app.rb +69 -0
  17. data/{lib/proto/start.ru → examples/app/blog/config.ru} +8 -7
  18. data/examples/app/blog/controller/comment.rb +45 -0
  19. data/examples/app/blog/controller/entry.rb +85 -0
  20. data/examples/app/blog/controller/init.rb +86 -0
  21. data/examples/app/blog/controller/main.rb +16 -25
  22. data/examples/app/blog/controller/tag.rb +9 -0
  23. data/examples/app/blog/layout/default.nag +31 -0
  24. data/examples/app/blog/model/comment.rb +58 -0
  25. data/examples/app/blog/model/entry.rb +81 -22
  26. data/examples/app/blog/model/init.rb +15 -0
  27. data/examples/app/blog/model/tag.rb +36 -0
  28. data/examples/app/blog/public/css/screen.css +273 -0
  29. data/examples/app/blog/start.rb +3 -5
  30. data/examples/app/blog/view/comment/form.nag +10 -0
  31. data/examples/app/blog/view/comment/show.nag +16 -0
  32. data/examples/app/blog/view/entry/edit.nag +14 -0
  33. data/examples/app/blog/view/entry/feed.atom.nag +8 -0
  34. data/examples/app/blog/view/entry/feed.rss.nag +7 -0
  35. data/examples/app/blog/view/entry/index.nag +7 -0
  36. data/examples/app/blog/view/entry/new.nag +13 -0
  37. data/examples/app/blog/view/entry/show.nag +36 -0
  38. data/examples/app/blog/view/feed.atom.nag +18 -0
  39. data/examples/app/blog/view/feed.rss.nag +25 -0
  40. data/examples/app/blog/view/index.nag +6 -0
  41. data/examples/app/blog/view/tag/index.nag +5 -0
  42. data/examples/app/chat/{view/layout.xhtml → layout/default.nag} +1 -1
  43. data/examples/app/chat/model/history.rb +13 -11
  44. data/examples/app/chat/public/css/chat.css +9 -13
  45. data/examples/app/chat/public/js/chat.js +6 -0
  46. data/examples/app/chat/start.rb +16 -17
  47. data/examples/app/chat/view/{chat.xhtml → chat.nag} +0 -0
  48. data/examples/app/chat/view/{index.xhtml → index.nag} +0 -0
  49. data/examples/app/sourceview/{sourceview.rb → start.rb} +36 -34
  50. data/examples/app/sourceview/{template → view}/index.haml +0 -0
  51. data/examples/app/todolist/controller/init.rb +10 -0
  52. data/examples/app/todolist/controller/task.rb +39 -0
  53. data/examples/app/todolist/layout/default.xhtml +14 -0
  54. data/examples/app/todolist/model/init.rb +14 -0
  55. data/examples/app/todolist/model/task.rb +39 -0
  56. data/examples/app/todolist/public/css/screen.css +63 -0
  57. data/examples/app/todolist/start.rb +6 -6
  58. data/examples/app/todolist/view/index.xhtml +29 -0
  59. data/examples/app/wikore/spec/wikore.rb +4 -6
  60. data/examples/app/wikore/src/controller.rb +9 -11
  61. data/examples/app/wikore/src/model.rb +7 -10
  62. data/examples/app/wikore/start.rb +1 -1
  63. data/examples/app/wikore/{template → view}/index.xhtml +0 -0
  64. data/examples/basic/element.rb +5 -3
  65. data/examples/basic/gestalt.rb +1 -2
  66. data/examples/basic/hello.rb +3 -4
  67. data/examples/basic/layout.rb +2 -2
  68. data/examples/basic/linking.rb +7 -7
  69. data/examples/basic/partial.rb +3 -5
  70. data/examples/basic/simple.rb +1 -5
  71. data/examples/helpers/cache.rb +5 -5
  72. data/examples/helpers/httpdigest.rb +31 -32
  73. data/examples/misc/memleak_detector.rb +17 -12
  74. data/examples/misc/rapp.rb +28 -17
  75. data/examples/misc/serve_directory.rb +6 -0
  76. data/examples/templates/template_erubis.rb +9 -10
  77. data/examples/templates/template_ezamar.rb +8 -7
  78. data/examples/templates/template_haml.rb +6 -7
  79. data/examples/templates/template_liquid.rb +20 -19
  80. data/examples/templates/template_markaby.rb +2 -3
  81. data/examples/templates/template_nagoro.rb +6 -7
  82. data/examples/templates/template_redcloth.rb +8 -9
  83. data/examples/templates/template_remarkably.rb +7 -8
  84. data/examples/templates/template_tenjin.rb +6 -7
  85. data/examples/templates/{template → view}/external.haml +4 -4
  86. data/examples/templates/{template → view}/external.liquid +0 -0
  87. data/examples/templates/{template → view}/external.mab +0 -0
  88. data/examples/templates/{template → view}/external.nag +4 -4
  89. data/examples/templates/{template → view}/external.redcloth +4 -4
  90. data/examples/templates/{template → view}/external.rem +4 -4
  91. data/examples/templates/{template → view}/external.rhtml +6 -6
  92. data/examples/templates/{template → view}/external.tenjin +4 -4
  93. data/examples/templates/{template → view}/external.zmr +6 -6
  94. data/lib/proto/app.rb +15 -0
  95. data/lib/proto/config.ru +16 -0
  96. data/lib/proto/controller/init.rb +2 -2
  97. data/lib/proto/{view/page.xhtml → layout/default.xhtml} +1 -4
  98. data/lib/proto/public/css/screen.css +30 -0
  99. data/lib/proto/public/js/jquery.js +2121 -1294
  100. data/lib/proto/spec/main.rb +11 -15
  101. data/lib/proto/start.rb +6 -10
  102. data/lib/proto/view/index.xhtml +34 -27
  103. data/lib/ramaze/app.rb +124 -0
  104. data/lib/ramaze/cache/localmemcache.rb +56 -0
  105. data/lib/ramaze/cache/memcache.rb +99 -0
  106. data/lib/ramaze/cache/sequel.rb +67 -0
  107. data/lib/ramaze/cache.rb +9 -104
  108. data/lib/ramaze/contrib/app_graph.rb +64 -0
  109. data/lib/ramaze/contrib/email.rb +2 -0
  110. data/lib/ramaze/contrib/gzip_filter.rb +1 -69
  111. data/lib/ramaze/contrib/rest.rb +20 -15
  112. data/lib/ramaze/contrib/sequel/create_join.rb +1 -0
  113. data/lib/ramaze/contrib/sequel/form_field.rb +4 -4
  114. data/lib/ramaze/contrib/sequel/image.rb +9 -11
  115. data/lib/ramaze/contrib/sequel/relation.rb +21 -5
  116. data/lib/ramaze/controller/default.rb +12 -0
  117. data/lib/ramaze/controller.rb +63 -257
  118. data/lib/ramaze/current.rb +3 -106
  119. data/lib/ramaze/files.rb +24 -0
  120. data/lib/ramaze/gestalt.rb +6 -1
  121. data/lib/ramaze/helper/auth.rb +68 -104
  122. data/lib/ramaze/helper/bench.rb +0 -2
  123. data/lib/ramaze/helper/cache.rb +71 -120
  124. data/lib/ramaze/helper/disqus.rb +26 -0
  125. data/lib/ramaze/helper/flash.rb +32 -29
  126. data/lib/ramaze/helper/form.rb +83 -252
  127. data/lib/ramaze/helper/formatting.rb +32 -5
  128. data/lib/ramaze/helper/gestalt.rb +1 -1
  129. data/lib/ramaze/helper/gravatar.rb +66 -19
  130. data/lib/ramaze/helper/httpdigest.rb +75 -66
  131. data/lib/ramaze/helper/link.rb +62 -109
  132. data/lib/ramaze/helper/localize.rb +138 -0
  133. data/lib/ramaze/helper/markaby.rb +1 -1
  134. data/lib/ramaze/helper/maruku.rb +10 -3
  135. data/lib/ramaze/helper/pager.rb +2 -1
  136. data/lib/ramaze/helper/paginate.rb +17 -9
  137. data/lib/ramaze/helper/partial.rb +86 -91
  138. data/lib/ramaze/helper/remarkably.rb +14 -0
  139. data/lib/ramaze/helper/request_accessor.rb +16 -0
  140. data/lib/ramaze/helper/sequel_form.rb +284 -0
  141. data/lib/ramaze/helper/simple_captcha.rb +46 -16
  142. data/lib/ramaze/helper/stack.rb +64 -66
  143. data/lib/ramaze/helper/user.rb +141 -22
  144. data/lib/ramaze/helper/xhtml.rb +27 -16
  145. data/lib/ramaze/helper.rb +6 -81
  146. data/lib/ramaze/log/analogger.rb +1 -2
  147. data/lib/ramaze/log/informer.rb +1 -0
  148. data/lib/ramaze/log/logging.rb +2 -8
  149. data/lib/ramaze/log.rb +19 -7
  150. data/lib/ramaze/middleware_compiler.rb +13 -0
  151. data/lib/ramaze/plugin.rb +69 -0
  152. data/lib/ramaze/reloader.rb +6 -4
  153. data/lib/ramaze/request.rb +118 -0
  154. data/lib/ramaze/{current/response.rb → response.rb} +9 -12
  155. data/lib/ramaze/setup.rb +93 -33
  156. data/lib/ramaze/snippets/ramaze/deprecated.rb +3 -1
  157. data/lib/ramaze/snippets/{dictionary.rb → ramaze/dictionary.rb} +0 -104
  158. data/lib/ramaze/spec/helper/bacon.rb +4 -3
  159. data/lib/ramaze/spec/helper/snippets.rb +3 -1
  160. data/lib/ramaze/spec/helper/template_examples.rb +29 -0
  161. data/lib/ramaze/spec.rb +34 -1
  162. data/lib/ramaze/tool/create.rb +1 -1
  163. data/lib/ramaze/version.rb +1 -4
  164. data/lib/ramaze/view/erubis.rb +23 -0
  165. data/lib/ramaze/view/ezamar.rb +23 -0
  166. data/lib/ramaze/view/haml.rb +16 -0
  167. data/lib/ramaze/view/liquid.rb +100 -0
  168. data/lib/ramaze/view/maruku.rb +14 -0
  169. data/lib/ramaze/view/nagoro/render_partial.rb +32 -0
  170. data/lib/ramaze/view/nagoro.rb +44 -0
  171. data/lib/ramaze/view/redcloth.rb +21 -0
  172. data/lib/ramaze/view/remarkably.rb +21 -0
  173. data/lib/ramaze/view/sass.rb +21 -0
  174. data/lib/ramaze/view/tagz.rb +63 -0
  175. data/lib/ramaze/view/tenjin.rb +29 -0
  176. data/lib/ramaze/view.rb +48 -0
  177. data/lib/ramaze.rb +78 -129
  178. data/lib/vendor/etag.rb +20 -0
  179. data/lib/vendor/route_exceptions.rb +48 -0
  180. data/ramaze.gemspec +38 -605
  181. data/spec/contrib/rest.rb +28 -0
  182. data/spec/examples/caching.rb +1 -2
  183. data/spec/examples/css.rb +1 -2
  184. data/spec/examples/element.rb +1 -2
  185. data/spec/examples/hello.rb +2 -3
  186. data/spec/examples/helpers/httpdigest.rb +64 -0
  187. data/spec/examples/linking.rb +1 -2
  188. data/spec/examples/simple.rb +1 -6
  189. data/spec/examples/templates/template_erubis.rb +3 -17
  190. data/spec/examples/templates/template_ezamar.rb +3 -18
  191. data/spec/examples/templates/template_haml.rb +3 -17
  192. data/spec/examples/templates/template_liquid.rb +3 -23
  193. data/spec/examples/templates/template_markaby.rb +6 -19
  194. data/spec/examples/templates/template_nagoro.rb +9 -0
  195. data/spec/examples/templates/template_redcloth.rb +3 -22
  196. data/spec/examples/templates/template_remarkably.rb +3 -17
  197. data/spec/examples/templates/template_tenjin.rb +3 -22
  198. data/spec/helper.rb +10 -3
  199. data/spec/ramaze/action/render.rb +5 -15
  200. data/spec/ramaze/action/view/other_wrapper.erb +1 -0
  201. data/spec/ramaze/action/view/sub/sub_wrapper.erb +1 -0
  202. data/spec/ramaze/app.rb +47 -0
  203. data/spec/ramaze/cache/localmemcache.rb +49 -0
  204. data/spec/ramaze/cache/memcache.rb +54 -0
  205. data/spec/ramaze/cache/sequel.rb +51 -0
  206. data/spec/ramaze/controller/actionless_templates.rb +14 -10
  207. data/spec/ramaze/controller/mapping.rb +57 -0
  208. data/spec/ramaze/controller/provide_inheritance.rb +47 -0
  209. data/spec/ramaze/controller/resolve.rb +7 -9
  210. data/spec/ramaze/controller/subclass.rb +13 -13
  211. data/spec/ramaze/controller/template_resolving.rb +21 -57
  212. data/spec/ramaze/dispatcher/directory.rb +38 -24
  213. data/spec/ramaze/dispatcher/file.rb +55 -44
  214. data/spec/ramaze/error.rb +56 -62
  215. data/spec/ramaze/files/public_1/plain.txt +1 -0
  216. data/spec/ramaze/files/public_2/rich.txt +1 -0
  217. data/spec/ramaze/files.rb +29 -0
  218. data/spec/ramaze/gestalt.rb +2 -4
  219. data/spec/ramaze/helper/auth.rb +41 -24
  220. data/spec/ramaze/helper/bench.rb +17 -0
  221. data/spec/ramaze/helper/cache.rb +65 -101
  222. data/spec/ramaze/helper/flash.rb +20 -112
  223. data/spec/ramaze/helper/form.rb +336 -98
  224. data/spec/ramaze/helper/formatting.rb +66 -9
  225. data/spec/ramaze/helper/gestalt.rb +15 -0
  226. data/spec/ramaze/helper/gravatar.rb +40 -0
  227. data/spec/ramaze/helper/httpdigest.rb +144 -0
  228. data/spec/ramaze/helper/link.rb +25 -100
  229. data/spec/ramaze/helper/localize.rb +60 -0
  230. data/spec/ramaze/helper/maruku.rb +19 -0
  231. data/spec/ramaze/helper/pager.rb +13 -16
  232. data/spec/ramaze/helper/paginate.rb +68 -0
  233. data/spec/ramaze/helper/request_accessor.rb +19 -0
  234. data/spec/ramaze/helper/sequel_form.rb +89 -0
  235. data/spec/ramaze/helper/simple_captcha.rb +35 -12
  236. data/spec/ramaze/helper/stack.rb +52 -39
  237. data/spec/ramaze/helper/user.rb +39 -10
  238. data/spec/ramaze/helper/xhtml.rb +32 -0
  239. data/spec/ramaze/log/informer.rb +20 -19
  240. data/spec/ramaze/log/logging.rb +63 -0
  241. data/spec/ramaze/params.rb +8 -11
  242. data/spec/ramaze/request.rb +57 -181
  243. data/spec/ramaze/view/erubis/external.rhtml +8 -0
  244. data/spec/ramaze/view/erubis/sum.rhtml +1 -0
  245. data/spec/ramaze/view/erubis.rb +73 -0
  246. data/spec/ramaze/view/ezamar/external.zmr +8 -0
  247. data/spec/ramaze/view/ezamar/sum.zmr +1 -0
  248. data/spec/ramaze/view/ezamar.rb +73 -0
  249. data/spec/ramaze/view/haml/external.haml +5 -0
  250. data/spec/ramaze/view/haml/sum.haml +2 -0
  251. data/spec/ramaze/view/haml.rb +86 -0
  252. data/spec/ramaze/view/liquid/external.liquid +8 -0
  253. data/spec/ramaze/view/liquid/sum.liquid +1 -0
  254. data/spec/ramaze/view/liquid.rb +73 -0
  255. data/spec/ramaze/view/nagoro/external.nag +8 -0
  256. data/spec/ramaze/view/nagoro/sum.nag +1 -0
  257. data/spec/ramaze/view/nagoro.rb +73 -0
  258. data/spec/ramaze/view/redcloth/external.redcloth +8 -0
  259. data/spec/ramaze/view/redcloth.rb +66 -0
  260. data/spec/ramaze/{template → view}/remarkably/external.rem +0 -0
  261. data/spec/ramaze/{template → view}/remarkably/sum.rem +0 -0
  262. data/spec/ramaze/view/remarkably.rb +49 -0
  263. data/spec/ramaze/{template → view}/sass/file.css.sass +0 -0
  264. data/spec/ramaze/view/sass.rb +73 -0
  265. data/spec/ramaze/{template → view}/tagz/external.tagz +0 -0
  266. data/spec/ramaze/{template → view}/tagz/sum.tagz +0 -0
  267. data/spec/ramaze/{template → view}/tagz.rb +18 -29
  268. data/spec/ramaze/view/tenjin/external.rbhtml +8 -0
  269. data/spec/ramaze/view/tenjin/sum.rbhtml +1 -0
  270. data/spec/ramaze/view/tenjin.rb +57 -0
  271. data/spec/ramaze/view.rb +36 -0
  272. data/spec/snippets/ramaze/dictionary.rb +110 -0
  273. data/spec/snippets/ramaze/struct.rb +12 -0
  274. data/spec/snippets/thread/into.rb +3 -14
  275. data/tasks/authors.rake +30 -0
  276. data/tasks/bacon.rake +66 -0
  277. data/tasks/changelog.rake +18 -0
  278. data/tasks/copyright.rake +21 -0
  279. data/tasks/gem.rake +22 -0
  280. data/tasks/gem_installer.rake +76 -0
  281. data/{rake_tasks → tasks}/git.rake +10 -5
  282. data/tasks/grancher.rake +12 -0
  283. data/tasks/install_dependencies.rake +6 -0
  284. data/tasks/jquery.rake +15 -0
  285. data/tasks/manifest.rake +4 -0
  286. data/{rake_tasks/metric.rake → tasks/metric_changes.rake} +6 -6
  287. data/tasks/rcov.rake +23 -0
  288. data/tasks/release.rake +51 -0
  289. data/tasks/reversion.rake +8 -0
  290. data/tasks/setup.rake +24 -0
  291. data/tasks/todo.rake +29 -0
  292. data/tasks/traits.rake +21 -0
  293. data/tasks/yard.rake +4 -0
  294. metadata +188 -285
  295. data/benchmark/suite/template_amrita2.rb +0 -17
  296. data/doc/readme_chunks/appendix.txt +0 -10
  297. data/doc/readme_chunks/examples.txt +0 -38
  298. data/doc/readme_chunks/features.txt +0 -148
  299. data/doc/readme_chunks/getting_help.txt +0 -5
  300. data/doc/readme_chunks/getting_started.txt +0 -18
  301. data/doc/readme_chunks/installing.txt +0 -92
  302. data/doc/readme_chunks/introduction.txt +0 -18
  303. data/doc/readme_chunks/principles.txt +0 -56
  304. data/doc/readme_chunks/thanks.txt +0 -59
  305. data/examples/app/auth/auth.rb +0 -54
  306. data/examples/app/auth/template/layout.haml +0 -20
  307. data/examples/app/auth/template/login.haml +0 -16
  308. data/examples/app/blog/public/styles/blog.css +0 -132
  309. data/examples/app/blog/view/edit.xhtml +0 -17
  310. data/examples/app/blog/view/index.xhtml +0 -17
  311. data/examples/app/blog/view/layout.xhtml +0 -11
  312. data/examples/app/blog/view/new.xhtml +0 -16
  313. data/examples/app/rapaste/Rakefile +0 -34
  314. data/examples/app/rapaste/controller/paste.rb +0 -101
  315. data/examples/app/rapaste/model/paste.rb +0 -58
  316. data/examples/app/rapaste/public/css/active4d.css +0 -114
  317. data/examples/app/rapaste/public/css/all_hallows_eve.css +0 -72
  318. data/examples/app/rapaste/public/css/amy.css +0 -147
  319. data/examples/app/rapaste/public/css/blackboard.css +0 -88
  320. data/examples/app/rapaste/public/css/brilliance_black.css +0 -605
  321. data/examples/app/rapaste/public/css/brilliance_dull.css +0 -599
  322. data/examples/app/rapaste/public/css/cobalt.css +0 -149
  323. data/examples/app/rapaste/public/css/dawn.css +0 -121
  324. data/examples/app/rapaste/public/css/display.css +0 -197
  325. data/examples/app/rapaste/public/css/eiffel.css +0 -121
  326. data/examples/app/rapaste/public/css/espresso_libre.css +0 -109
  327. data/examples/app/rapaste/public/css/idle.css +0 -62
  328. data/examples/app/rapaste/public/css/iplastic.css +0 -80
  329. data/examples/app/rapaste/public/css/lazy.css +0 -73
  330. data/examples/app/rapaste/public/css/mac_classic.css +0 -123
  331. data/examples/app/rapaste/public/css/magicwb_amiga.css +0 -104
  332. data/examples/app/rapaste/public/css/pastels_on_dark.css +0 -188
  333. data/examples/app/rapaste/public/css/slush_poppies.css +0 -85
  334. data/examples/app/rapaste/public/css/spacecadet.css +0 -51
  335. data/examples/app/rapaste/public/css/sunburst.css +0 -180
  336. data/examples/app/rapaste/public/css/twilight.css +0 -137
  337. data/examples/app/rapaste/public/css/zenburnesque.css +0 -91
  338. data/examples/app/rapaste/public/js/jquery.js +0 -11
  339. data/examples/app/rapaste/spec/rapaste.rb +0 -51
  340. data/examples/app/rapaste/start.rb +0 -25
  341. data/examples/app/rapaste/view/copy.xhtml +0 -10
  342. data/examples/app/rapaste/view/index.xhtml +0 -9
  343. data/examples/app/rapaste/view/layout.xhtml +0 -25
  344. data/examples/app/rapaste/view/list.xhtml +0 -29
  345. data/examples/app/rapaste/view/search.xhtml +0 -41
  346. data/examples/app/rapaste/view/view.xhtml +0 -40
  347. data/examples/app/todolist/README +0 -1
  348. data/examples/app/todolist/public/js/jquery.js +0 -1923
  349. data/examples/app/todolist/public/ramaze.png +0 -0
  350. data/examples/app/todolist/spec/todolist.rb +0 -132
  351. data/examples/app/todolist/src/controller/main.rb +0 -70
  352. data/examples/app/todolist/src/element/page.rb +0 -31
  353. data/examples/app/todolist/src/model.rb +0 -14
  354. data/examples/app/todolist/template/index.xhtml +0 -17
  355. data/examples/app/todolist/template/new.xhtml +0 -7
  356. data/examples/helpers/provide.rb +0 -23
  357. data/examples/misc/simple_auth.rb +0 -35
  358. data/examples/templates/template/external.amrita +0 -19
  359. data/examples/templates/template/external.xsl +0 -57
  360. data/examples/templates/template_amrita2.rb +0 -74
  361. data/examples/templates/template_xslt.rb +0 -49
  362. data/lib/proto/public/css/ramaze_error.css +0 -90
  363. data/lib/proto/view/error.xhtml +0 -64
  364. data/lib/ramaze/action/render.rb +0 -192
  365. data/lib/ramaze/action.rb +0 -159
  366. data/lib/ramaze/adapter/base.rb +0 -128
  367. data/lib/ramaze/adapter/cgi.rb +0 -20
  368. data/lib/ramaze/adapter/ebb.rb +0 -18
  369. data/lib/ramaze/adapter/evented_mongrel.rb +0 -7
  370. data/lib/ramaze/adapter/fake.rb +0 -12
  371. data/lib/ramaze/adapter/fcgi.rb +0 -18
  372. data/lib/ramaze/adapter/lsws.rb +0 -19
  373. data/lib/ramaze/adapter/mongrel.rb +0 -21
  374. data/lib/ramaze/adapter/scgi.rb +0 -18
  375. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +0 -7
  376. data/lib/ramaze/adapter/thin.rb +0 -17
  377. data/lib/ramaze/adapter/webrick.rb +0 -43
  378. data/lib/ramaze/adapter.rb +0 -97
  379. data/lib/ramaze/cache/file.rb +0 -71
  380. data/lib/ramaze/cache/memcached.rb +0 -69
  381. data/lib/ramaze/cache/memory.rb +0 -6
  382. data/lib/ramaze/cache/yaml_store.rb +0 -68
  383. data/lib/ramaze/contrib/file_cache.rb +0 -3
  384. data/lib/ramaze/contrib/gems.rb +0 -78
  385. data/lib/ramaze/contrib/sequel/fill.rb +0 -12
  386. data/lib/ramaze/contrib/sequel_cache.rb +0 -92
  387. data/lib/ramaze/contrib.rb +0 -82
  388. data/lib/ramaze/controller/error.rb +0 -46
  389. data/lib/ramaze/controller/main.rb +0 -2
  390. data/lib/ramaze/controller/resolve.rb +0 -278
  391. data/lib/ramaze/current/request.rb +0 -222
  392. data/lib/ramaze/current/session/flash.rb +0 -87
  393. data/lib/ramaze/current/session/hash.rb +0 -62
  394. data/lib/ramaze/current/session.rb +0 -179
  395. data/lib/ramaze/dispatcher/action.rb +0 -50
  396. data/lib/ramaze/dispatcher/directory.rb +0 -119
  397. data/lib/ramaze/dispatcher/error.rb +0 -108
  398. data/lib/ramaze/dispatcher/file.rb +0 -100
  399. data/lib/ramaze/dispatcher.rb +0 -145
  400. data/lib/ramaze/error.rb +0 -24
  401. data/lib/ramaze/helper/aspect.rb +0 -106
  402. data/lib/ramaze/helper/cgi.rb +0 -39
  403. data/lib/ramaze/helper/redirect.rb +0 -100
  404. data/lib/ramaze/helper/rest.rb +0 -43
  405. data/lib/ramaze/helper/sendfile.rb +0 -16
  406. data/lib/ramaze/option/dsl.rb +0 -45
  407. data/lib/ramaze/option/holder.rb +0 -131
  408. data/lib/ramaze/option/merger.rb +0 -108
  409. data/lib/ramaze/option.rb +0 -156
  410. data/lib/ramaze/route.rb +0 -97
  411. data/lib/ramaze/snippets/object/traits.rb +0 -76
  412. data/lib/ramaze/snippets/ramaze/caller_info.rb +0 -30
  413. data/lib/ramaze/snippets/ramaze/caller_lines.rb +0 -51
  414. data/lib/ramaze/snippets/ramaze/state.rb +0 -86
  415. data/lib/ramaze/snippets/string/each.rb +0 -19
  416. data/lib/ramaze/spec/helper/browser.rb +0 -88
  417. data/lib/ramaze/spec/helper/mock_http.rb +0 -64
  418. data/lib/ramaze/spec/helper/requester.rb +0 -63
  419. data/lib/ramaze/spec/helper/simple_http.rb +0 -434
  420. data/lib/ramaze/spec/helper.rb +0 -135
  421. data/lib/ramaze/store/default.rb +0 -109
  422. data/lib/ramaze/template/amrita2.rb +0 -45
  423. data/lib/ramaze/template/builder.rb +0 -28
  424. data/lib/ramaze/template/erubis.rb +0 -41
  425. data/lib/ramaze/template/ezamar/element.rb +0 -169
  426. data/lib/ramaze/template/ezamar/engine.rb +0 -76
  427. data/lib/ramaze/template/ezamar/morpher.rb +0 -135
  428. data/lib/ramaze/template/ezamar/render_partial.rb +0 -39
  429. data/lib/ramaze/template/ezamar/textpow.syntax +0 -34
  430. data/lib/ramaze/template/ezamar.rb +0 -42
  431. data/lib/ramaze/template/haml.rb +0 -37
  432. data/lib/ramaze/template/liquid.rb +0 -36
  433. data/lib/ramaze/template/markaby.rb +0 -52
  434. data/lib/ramaze/template/maruku.rb +0 -34
  435. data/lib/ramaze/template/nagoro.rb +0 -52
  436. data/lib/ramaze/template/none.rb +0 -14
  437. data/lib/ramaze/template/redcloth.rb +0 -25
  438. data/lib/ramaze/template/remarkably.rb +0 -38
  439. data/lib/ramaze/template/sass.rb +0 -37
  440. data/lib/ramaze/template/tagz.rb +0 -79
  441. data/lib/ramaze/template/tenjin.rb +0 -74
  442. data/lib/ramaze/template/xslt.rb +0 -100
  443. data/lib/ramaze/template.rb +0 -87
  444. data/lib/ramaze/tool/daemonize.rb +0 -37
  445. data/lib/ramaze/tool/localize.rb +0 -202
  446. data/lib/ramaze/tool/mime.rb +0 -35
  447. data/lib/ramaze/tool/mime_types.yaml +0 -615
  448. data/lib/ramaze/tool/record.rb +0 -6
  449. data/lib/ramaze/tool.rb +0 -9
  450. data/lib/ramaze/trinity.rb +0 -16
  451. data/lib/vendor/bacon.rb +0 -323
  452. data/rake_tasks/conf.rake +0 -71
  453. data/rake_tasks/coverage.rake +0 -45
  454. data/rake_tasks/gem.rake +0 -74
  455. data/rake_tasks/maintenance.rake +0 -386
  456. data/rake_tasks/release.rake +0 -76
  457. data/rake_tasks/spec.rake +0 -61
  458. data/spec/contrib/profiling.rb +0 -29
  459. data/spec/contrib/sequel/fill.rb +0 -47
  460. data/spec/examples/simple_auth.rb +0 -32
  461. data/spec/examples/templates/template_amrita2.rb +0 -16
  462. data/spec/ramaze/action/basics.rb +0 -36
  463. data/spec/ramaze/action/cache.rb +0 -87
  464. data/spec/ramaze/action/file_cache.rb +0 -70
  465. data/spec/ramaze/action/layout.rb +0 -190
  466. data/spec/ramaze/adapter/ebb.rb +0 -12
  467. data/spec/ramaze/adapter/mongrel.rb +0 -12
  468. data/spec/ramaze/adapter/record.rb +0 -31
  469. data/spec/ramaze/adapter/webrick.rb +0 -12
  470. data/spec/ramaze/adapter.rb +0 -49
  471. data/spec/ramaze/cache.rb +0 -140
  472. data/spec/ramaze/controller.rb +0 -180
  473. data/spec/ramaze/current/request.rb +0 -30
  474. data/spec/ramaze/current/session.rb +0 -97
  475. data/spec/ramaze/dispatcher.rb +0 -31
  476. data/spec/ramaze/element.rb +0 -107
  477. data/spec/ramaze/helper/aspect.rb +0 -101
  478. data/spec/ramaze/helper/cgi.rb +0 -43
  479. data/spec/ramaze/helper/file.rb +0 -18
  480. data/spec/ramaze/helper/partial.rb +0 -88
  481. data/spec/ramaze/helper/redirect.rb +0 -112
  482. data/spec/ramaze/localize.rb +0 -89
  483. data/spec/ramaze/morpher.rb +0 -111
  484. data/spec/ramaze/public/error404.xhtml +0 -1
  485. data/spec/ramaze/request/ebb.rb +0 -9
  486. data/spec/ramaze/request/mongrel.rb +0 -9
  487. data/spec/ramaze/request/thin.rb +0 -9
  488. data/spec/ramaze/request/webrick.rb +0 -5
  489. data/spec/ramaze/rewrite.rb +0 -36
  490. data/spec/ramaze/route.rb +0 -131
  491. data/spec/ramaze/session.rb +0 -94
  492. data/spec/ramaze/store/default.rb +0 -71
  493. data/spec/ramaze/template/amrita2/external.amrita +0 -6
  494. data/spec/ramaze/template/amrita2/sum.amrita +0 -1
  495. data/spec/ramaze/template/amrita2.rb +0 -50
  496. data/spec/ramaze/template/builder/external.rxml +0 -3
  497. data/spec/ramaze/template/builder.rb +0 -51
  498. data/spec/ramaze/template/erubis/sum.rhtml +0 -1
  499. data/spec/ramaze/template/erubis.rb +0 -41
  500. data/spec/ramaze/template/ezamar/another/long/action.zmr +0 -1
  501. data/spec/ramaze/template/ezamar/combined.zmr +0 -1
  502. data/spec/ramaze/template/ezamar/file_only.zmr +0 -1
  503. data/spec/ramaze/template/ezamar/index.zmr +0 -1
  504. data/spec/ramaze/template/ezamar/nested.zmr +0 -1
  505. data/spec/ramaze/template/ezamar/other__index.xhtml +0 -1
  506. data/spec/ramaze/template/ezamar/some__long__action.zmr +0 -1
  507. data/spec/ramaze/template/ezamar/sum.zmr +0 -1
  508. data/spec/ramaze/template/ezamar.rb +0 -63
  509. data/spec/ramaze/template/haml/index.haml +0 -5
  510. data/spec/ramaze/template/haml/locals.haml +0 -2
  511. data/spec/ramaze/template/haml/with_vars.haml +0 -4
  512. data/spec/ramaze/template/haml.rb +0 -66
  513. data/spec/ramaze/template/liquid/index.liquid +0 -1
  514. data/spec/ramaze/template/liquid/products.liquid +0 -45
  515. data/spec/ramaze/template/liquid.rb +0 -99
  516. data/spec/ramaze/template/markaby/external.mab +0 -8
  517. data/spec/ramaze/template/markaby/sum.mab +0 -1
  518. data/spec/ramaze/template/markaby.rb +0 -61
  519. data/spec/ramaze/template/nagoro/another/long/action.nag +0 -1
  520. data/spec/ramaze/template/nagoro/combined.nag +0 -1
  521. data/spec/ramaze/template/nagoro/file_only.nag +0 -1
  522. data/spec/ramaze/template/nagoro/index.nag +0 -1
  523. data/spec/ramaze/template/nagoro/nested.nag +0 -1
  524. data/spec/ramaze/template/nagoro/some__long__action.nag +0 -1
  525. data/spec/ramaze/template/nagoro/sum.nag +0 -1
  526. data/spec/ramaze/template/nagoro.rb +0 -64
  527. data/spec/ramaze/template/redcloth/external.redcloth +0 -1
  528. data/spec/ramaze/template/redcloth.rb +0 -38
  529. data/spec/ramaze/template/remarkably.rb +0 -58
  530. data/spec/ramaze/template/sass.rb +0 -69
  531. data/spec/ramaze/template/tenjin/external.tenjin +0 -1
  532. data/spec/ramaze/template/tenjin.rb +0 -47
  533. data/spec/ramaze/template/xslt/concat_words.xsl +0 -16
  534. data/spec/ramaze/template/xslt/index.xsl +0 -14
  535. data/spec/ramaze/template/xslt/products.xsl +0 -32
  536. data/spec/ramaze/template/xslt/ruby_version.xsl +0 -14
  537. data/spec/ramaze/template/xslt.rb +0 -90
  538. data/spec/ramaze/template.rb +0 -128
  539. data/spec/snippets/ramaze/caller_info.rb +0 -39
  540. data/spec/snippets/ramaze/caller_lines.rb +0 -30
@@ -1,69 +1 @@
1
- # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
3
-
4
- # gzip_filter.rb
5
- #
6
- # Use this to compress "large" pages with gzip. All major browsers support
7
- # gzipped pages.
8
- # This filter brought to you by your friends in #ramaze:
9
- # Pistos, manveru, rikur and Kashia.
10
- #
11
- # Usage, in start.rb:
12
- #
13
- # require 'ramaze/contrib/gzip_filter'
14
- # Ramaze::Dispatcher::Action::FILTER << Ramaze::Filter::Gzip
15
- #
16
- # Setting options (at any point in your code):
17
- #
18
- # Ramaze::Filter::Gzip.trait(
19
- # :threshold => 1024,
20
- # :content_type => /^text\/.+/
21
- # )
22
-
23
- require 'zlib'
24
-
25
- module Ramaze
26
- module Filter
27
- class Gzip
28
-
29
- trait :enabled => true,
30
- :content_type => /^text\/.+/,
31
- :threshold => 32768 # bytes
32
-
33
- class << self
34
-
35
- include Ramaze::Trinity
36
-
37
- # Enables being plugged into Dispatcher::Action::FILTER
38
-
39
- def call( response, options = {} )
40
- return response unless trait[ :enabled ]
41
- return response unless body = response.body
42
- return response if body.respond_to?( :read )
43
-
44
- accepts = request.env[ 'HTTP_ACCEPT_ENCODING' ]
45
- return response if accepts.nil? || ( accepts !~ /(x-gzip|gzip)/ )
46
-
47
- acceptable_size = body.size >= trait[ :threshold ]
48
- acceptable_type = response.content_type =~ trait[:content_type]
49
-
50
- if acceptable_type and acceptable_size
51
- output = StringIO.new
52
- def output.close
53
- # Zlib closes the file handle, so we want to circumvent this
54
- rewind
55
- end
56
- gz = Zlib::GzipWriter.new( output )
57
- gz.write( body )
58
- gz.close
59
-
60
- response.body = output.string
61
- response.header[ 'Content-encoding' ] = 'gzip'
62
- end
63
-
64
- response
65
- end
66
- end
67
- end
68
- end
69
- end
1
+ Ramaze.deprecated('contrib/gzip_filter.rb', 'Rack::Deflater')
@@ -1,17 +1,22 @@
1
- Ramaze::Rewrite['REST dispatch'] = lambda do |path, request|
2
- path << '/' unless path[-1] == '/'
1
+ # Use this together with the Rack::MethodOverride middleware for best
2
+ # behaviour.
3
+ #
4
+ # See spec/contrib/rest.rb for usage.
3
5
 
4
- method = if request.request_method == 'POST' and request.params.has_key?('method')
5
- request.params['method'].upcase
6
- else
7
- request.request_method
8
- end
9
-
10
- case method
11
- when 'GET' then path << 'show/'
12
- when 'POST' then path << 'create/'
13
- when 'PUT' then path << 'update/'
14
- when 'DELETE' then path << 'destroy/'
15
- else path
16
- end
6
+ module Ramaze
7
+ # Don't use one option per method, we don't want to turn request_method into
8
+ # a symbol, together with MethodOverride this could lead to a memory leak.
9
+ options.o "REST rewrite mapping",
10
+ :rest_rewrite, { 'GET' => 'show',
11
+ 'POST' => 'create',
12
+ 'PUT' => 'update',
13
+ 'DELETE' => 'destroy'}
14
+
15
+ Rewrite['REST dispatch'] = lambda{|path, request|
16
+ if suffix = Ramaze.options[:rest_rewrite][request.request_method]
17
+ "#{path}/#{suffix}".squeeze('/')
18
+ else
19
+ path
20
+ end
21
+ }
17
22
  end
@@ -1,4 +1,5 @@
1
1
  require 'sequel'
2
+ require 'sequel/extensions/inflector'
2
3
 
3
4
  module Sequel
4
5
  class Model
@@ -94,14 +94,14 @@ class FormField
94
94
  select(gestalt)
95
95
  else
96
96
  case db_type
97
- when 'varchar', 'integer'
97
+ when /varchar|integer/
98
98
  input(gestalt)
99
- when 'boolean'
99
+ when /boolean/
100
100
  checkbox(gestalt)
101
- when 'string'
101
+ when /string/
102
102
  textarea(gestalt)
103
103
  else
104
- raise "Unsupported type: (#{db_type || hint} : #{field})"
104
+ raise("Unsupported type: (%p : %p)" % [db_type || hint, field])
105
105
  end
106
106
  end
107
107
  end
@@ -7,7 +7,7 @@
7
7
  # Usage:
8
8
  # class Avatar < Sequel::Model
9
9
  # IMAGE = {
10
- # # specifies belongs_to, will create relation and foreign key
10
+ # # specifies many_to_one, will create relation and foreign key
11
11
  #
12
12
  # :owner => :User,
13
13
  #
@@ -51,8 +51,8 @@
51
51
  module SequelImage
52
52
  def self.included(model)
53
53
  args = model::IMAGE
54
- set_foreign_key = args[:foreign_key] || "#{args[:owner]}_id".downcase.to_sym
55
- set_belongs_to = args[:belongs_to] || args[:owner].to_s.downcase.to_sym
54
+ set_foreign_key = args[:foreign_key] || "#{args[:owner]}_id".downcase.to_sym
55
+ set_many_to_one = args[:many_to_one] || args[:owner].to_s.downcase.to_sym
56
56
 
57
57
  # Define schema
58
58
  model.set_schema do
@@ -68,21 +68,19 @@ module SequelImage
68
68
  end
69
69
 
70
70
  # Define Relations
71
- model.belongs_to set_belongs_to
71
+ model.many_to_one set_many_to_one
72
72
 
73
73
  # Define Hooks
74
- model.send(:hooks).clear
75
-
76
- model.before_create do
74
+ model.before_create :generate_thumbnails do
77
75
  generate_thumbnails
78
76
  self.created_at = Time.now
79
77
  end
80
78
 
81
- model.before_save do
79
+ model.before_save :update_time do
82
80
  self.updated_at = Time.now
83
81
  end
84
82
 
85
- model.before_destroy do
83
+ model.before_destroy :cleanup do
86
84
  cleanup if conf[:cleanup]
87
85
  end
88
86
 
@@ -110,7 +108,7 @@ module SequelImage
110
108
  tempfile = file[:tempfile]
111
109
  raise ArgumentError, 'Empty tempfile' if tempfile.size == 0
112
110
 
113
- ext = Ramaze::Tool::MIME.ext_for(type)
111
+ ext = Rack::Mime::MIME_TYPES.invert[type]
114
112
  image.mime = type
115
113
  target_name = image.next_name(File.basename(filename, File.extname(filename)), ext)
116
114
  target_path = File.join(image.public_root, image.path, target_name)
@@ -150,7 +148,7 @@ module SequelImage
150
148
  end
151
149
 
152
150
  def public_root
153
- Ramaze::Global.public_root
151
+ Ramaze.options.roots.first
154
152
  end
155
153
 
156
154
  def filename(size)
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  # Pretty DSL to express Sequel relations
5
5
  #
@@ -43,7 +43,8 @@ module SequelRelation
43
43
  end
44
44
  end
45
45
 
46
- return # remove this line for debugging
46
+ =begin
47
+ # uncomment for debugging
47
48
 
48
49
  pp TODO
49
50
 
@@ -54,6 +55,7 @@ module SequelRelation
54
55
  puts " #{reflection[:type]} => #{key}"
55
56
  end
56
57
  end
58
+ =end
57
59
  end
58
60
 
59
61
  def the(left_model, &block)
@@ -63,20 +65,34 @@ module SequelRelation
63
65
  end
64
66
 
65
67
  def belongs_to(model)
66
- todo :belongs_to, model.to_s.downcase.to_sym
68
+ todo :many_to_one, singular_sym(model), :class => model
67
69
  end
68
70
 
69
71
  def has_many(model)
70
72
  todo :create_join, model
71
- todo :many_to_many, model.to_s.downcase.pluralize.to_sym
73
+ todo :many_to_many, plural_sym(model), :class => model
72
74
  end
73
75
 
74
76
  def has_one(model)
75
- todo :belongs_to, model.to_s.downcase.to_sym
77
+ todo :many_to_one, singular_sym(model), :class => model
76
78
  end
77
79
 
78
80
  def todo(method, *args)
79
81
  TODO[@left] << [method, *args]
80
82
  end
83
+
84
+ private
85
+
86
+ def plural_sym(obj)
87
+ basename(obj).pluralize.to_sym
88
+ end
89
+
90
+ def singular_sym(obj)
91
+ basename(obj).to_sym
92
+ end
93
+
94
+ def basename(obj)
95
+ obj.to_s.split('::').last.downcase
96
+ end
81
97
  end
82
98
  end
@@ -0,0 +1,12 @@
1
+ module Ramaze
2
+ Log.debug "Default controller invoked"
3
+
4
+ class DefaultController < Ramaze::Controller
5
+ map '/'
6
+
7
+ def lobster
8
+ require 'rack/lobster'
9
+ respond Rack::Lobster::LobsterString
10
+ end
11
+ end
12
+ end
@@ -1,288 +1,94 @@
1
- # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
- require 'ramaze/helper'
5
- require 'ramaze/template'
6
- require 'ramaze/action'
7
-
8
- require 'ramaze/controller/resolve'
9
- require 'ramaze/controller/error'
10
-
11
4
  module Ramaze
12
-
13
- # The Controller is responsible for combining and rendering actions.
14
-
15
5
  class Controller
16
- include Helper::Methods
17
-
18
- helper :redirect, :link, :sendfile, :flash, :cgi, :partial
19
-
20
- # Whether or not to map this controller on startup automatically
21
-
22
- trait[:automap] ||= true
23
-
24
- # Place to map the Controller to, this is something like '/' or '/foo'
25
-
26
- trait[:map] ||= nil
27
-
28
- # Caches patterns for the given path.
29
-
30
- trait :pattern_cache => Hash.new{|h,k| h[k] = Controller.pattern_for(k) }
31
-
32
- class << self
33
- # When Controller is subclassed the resulting class is placed in
34
- # Global.controllers and a new trait :actions_cached is set on it.
35
-
36
- def inherited controller
37
- controller.trait :actions_cached => {}
38
- Global.controllers << controller
39
- if map = controller.mapping
40
- Log.dev("mapping #{map} => #{controller}")
41
- Global.mapping[map] ||= controller
42
- end
43
- end
44
-
45
- # called from Ramaze.startup, adds Cache.actions and Cache.patterns, walks
46
- # all controllers subclassed so far and adds them to the Global.mapping if
47
- # they are not assigned yet.
48
-
49
- def startup options = {}
50
- Log.dev("found Controllers: #{Global.controllers.inspect}")
51
-
52
- check_path("Public root: '%s' doesn't exist", Global.public_root)
53
- check_path("View root: '%s' doesn't exist", Global.view_root)
54
-
55
- require 'ramaze/controller/main' if Global.mapping.empty?
56
-
57
- Log.debug("mapped Controllers: #{Global.mapping.inspect}")
58
- end
59
-
60
- # checks paths for existance and logs a warning if it doesn't exist yet.
61
-
62
- def check_path(message, *paths)
63
- paths.each do |path|
64
- Log.warn(message % path) unless File.directory?(path)
65
- end
66
- end
67
-
68
- # if trait[:automap] is set and controller is not in Global.mapping yet
69
- # this will build a new default mapping-point, MainController is put
70
- # at '/' by default. For other Class names, String#snake_case is called,
71
- # e.g. FooBarController is mapped at '/foo_bar'.
72
-
73
- def mapping
74
- global_mapping = Global.mapping.invert[self]
75
-
76
- return global_mapping if global_mapping
6
+ include Innate::Traited
7
+ include Innate::Node
77
8
 
78
- if ancestral_trait[:automap] && self.to_s !~ /#<Class:/
79
- name = self.to_s.gsub('Controller', '').gsub('::', '/').clone
80
- return if name.empty?
81
- name == 'Main' ? '/' : "/#{name.snake_case}"
82
- end
83
- end
84
-
85
- # Map Controller to the given syms or strings.
86
- # Replaces old mappings.
87
- # If you want to _add_ a mapping, just modify Global.mapping.
88
-
89
- def map(*syms)
90
- Global.mapping.delete_if{|k,v| v == self}
91
-
92
- syms.compact.each do |sym|
93
- Global.mapping[sym.to_s] = self
94
- end
95
- end
9
+ # we are no mapped node
10
+ Innate::Node::NODE_LIST.delete(self)
96
11
 
97
- # Returns the Controller at a mapped path.
12
+ # call our setup method one startup
13
+ Ramaze.options.setup << self
98
14
 
99
- def at(mapping)
100
- Global.mapping[mapping.to_s]
101
- end
15
+ CONTROLLER_LIST = Set.new
102
16
 
103
- # Define a layout for all actions on this controller
104
- #
105
- # Example:
106
- # class Foo < Ramaze::Controller
107
- # layout :foo
108
- # end
109
- #
110
- # This defines the action :foo to be layout of the controller and will
111
- # render the layout after any other action has been rendered, assigns
112
- # @content to the result of the action and then goes on rendering
113
- # the layout-action where @content may or may not be used, returning
114
- # whatever the layout returns.
17
+ trait :app => :pristine
18
+ trait :skip_controller_map => false
115
19
 
116
- def layout(*meth_or_hash)
117
- if meth_or_hash.empty?
118
- trait[:layout] ||= ( ancestral_trait[:layout] || {:all => nil, :deny => Set.new} ).dup
119
- else
120
- meth_or_hash = meth_or_hash.first
121
- if meth_or_hash.respond_to?(:to_hash)
122
- meth_or_hash.each do |layout_name, *actions|
123
- actions.flatten.each do |action|
124
- layout[action.to_s] = layout_name
125
- end
126
- end
127
- else
128
- layout[:all] = meth_or_hash
129
- end
130
- end
131
- end
20
+ def self.inherited(into)
21
+ Innate::Node.included(into)
22
+ CONTROLLER_LIST << into
23
+ into.trait :skip_node_map => true
24
+ end
132
25
 
133
- # Deny layout for passed names of actions.
134
- # Name should be name of the method or template without extension, as
135
- # String or Symbol
136
- #
137
- # Usage:
138
- # class MainController < Ramaze::Controller
139
- # deny_layout :atom
140
- #
141
- # def atom
142
- # "I won't have layout"
143
- # end
144
- # end
26
+ def self.setup
27
+ require 'ramaze/controller/default' if CONTROLLER_LIST.empty?
145
28
 
146
- def deny_layout(*actions)
147
- actions.each do |action|
148
- layout[:deny] << action.to_s
29
+ CONTROLLER_LIST.each do |controller|
30
+ unless controller.ancestral_trait[:provide_set]
31
+ controller.engine(:Etanni)
32
+ controller.trait(:provide_set => false)
149
33
  end
34
+ next if controller.trait[:skip_controller_map]
35
+ controller.map(generate_mapping(controller.name))
150
36
  end
37
+ end
151
38
 
152
- # Define a view_root for Controller, returns the current view_root
153
- # if no argument is given.
154
- # Runs every given path through Controller::check_path
155
-
156
- def view_root *args
157
- return @view_root if args.empty?
158
-
159
- check_path("#{self}.view_root: '%s' doesn't exist", *args)
160
- @view_root = args.flatten
161
- end
39
+ def self.engine(name)
40
+ provide(:html, name.to_sym)
41
+ end
162
42
 
163
- # This is used for template rerouting, takes action, optionally a
164
- # controller and action to route to.
165
- #
166
- # Usage:
167
- # class MainController
168
- # template :index, OtherController, :list
169
- # template :foo, :bar
170
- # template :bar, :file => '/absolute/path'
171
- # template :baz, :file => 'relative/path'
172
- # template :abc, :controller => OtherController
173
- # template :xyz, :controller => OtherController, :action => 'list'
174
- #
175
- # def index
176
- # 'will use template from OtherController#list'
177
- # end
178
- #
179
- # def foo
180
- # 'will use template from self#bar'
181
- # end
182
- #
183
- # def bar
184
- # 'will use template from /absolute/path'
185
- # end
186
- #
187
- # def baz
188
- # 'will use template from relative/path'
189
- # end
190
- #
191
- # def abc
192
- # 'will use template from OtherController#index'
193
- # end
194
- #
195
- # def xyz
196
- # 'will use template from OtherController#list'
197
- # end
198
- # end
43
+ def self.mapping
44
+ Ramaze.to(self)
45
+ end
199
46
 
200
- def template(this, *argv)
201
- case argv.first
202
- when Hash
203
- options, *ignored = argv
204
- controller = options[:controller] || options['controller']
205
- action = options[:action] || options['action']
206
- file = options[:file] || options['file']
207
- info = {}
208
- if file
209
- file = file.to_s
210
- unless Pathname(file).absolute?
211
- root = [view_root || Global.view_root].flatten.first
212
- file = File.join(root, file)
213
- end
214
- info[:file] = file
215
- else
216
- controller ||= self
217
- action = (action || 'index').to_s
218
- info[:controller] = controller
219
- info[:action] = action
220
- end
221
- trait "#{this}_template" => info
222
- else
223
- # Only explicitly set the controller to use, if it was explicitly given.
224
- # This helps ensure that template mappings still work in subclasses
225
- # of this controller.
226
- first, second, *ignored = argv
227
- if second
228
- trait "#{this}_template" => {:controller => first, :action => second}
229
- else
230
- trait "#{this}_template" => {:action => first}
231
- end
232
- end
233
- end
47
+ IRREGULAR_MAPPING = {
48
+ 'Controller' => nil,
49
+ 'MainController' => '/'
50
+ }
234
51
 
235
- # This is a method to specify the templating engine for your controller.
236
- # It basically just is sugar for:
237
- # trait :engine => Haml
238
- #
239
- # Usage:
240
- # class MainController < Ramaze::Controller
241
- # engine :Haml
242
- # end
52
+ def self.generate_mapping(klass_name = self.name)
53
+ chunks = klass_name.split(/::/)
54
+ return if chunks.empty?
243
55
 
244
- def engine(name)
245
- name = Template.const_get(name)
246
- rescue NameError => ex
247
- Log.warn ex
248
- Log.warn "Try to use passed engine directly"
249
- ensure
250
- trait :engine => name
251
- end
56
+ last = chunks.last
57
+ return IRREGULAR_MAPPING[last] if IRREGULAR_MAPPING.key?(last)
252
58
 
253
- # Return Controller of current Action
59
+ last.sub!(/Controller$/, '')
60
+ '/' << chunks.map{|chunk| chunk.snake_case }.join('/')
61
+ end
254
62
 
255
- def current
256
- action = Action.current
257
- action.instance || action.controller
63
+ def self.map(location, app_name = nil)
64
+ if app_name
65
+ trait :app => app_name
66
+ else
67
+ app_name = ancestral_trait[:app]
258
68
  end
259
69
 
260
- # Entering point for Dispatcher, first Controller::resolve(path) and then
261
- # renders the resulting Action.
70
+ trait :skip_controller_map => true
262
71
 
263
- def handle path
264
- action = resolve(path)
265
- STATE[:controller] = action.controller
266
- action.render
267
- end
268
-
269
- # By default, returns all ancestors of current Controller that have
270
- # Ramaze::Controller as their ancestor. Optional argument parent
271
- # can be used return ancestors that have parent as an ancestor.
72
+ App.find_or_create(app_name).map(location, self)
73
+ end
272
74
 
273
- def relevant_ancestors(parent = Ramaze::Controller)
274
- ancestors.select do |anc|
275
- anc.ancestors.include?(parent)
276
- end
277
- end
75
+ def self.app
76
+ App[ancestral_trait[:app]]
278
77
  end
279
78
 
280
- private
79
+ def self.options
80
+ return unless app = self.app
81
+ app.options
82
+ end
281
83
 
282
- # Simplistic render, rerouting to Controller.handle(*args)
84
+ def self.template(*args)
85
+ Ramaze.deprecated('Controller::template', 'Controller::alias_view')
86
+ alias_view(*args)
87
+ end
283
88
 
284
- def render *args
285
- self.class.handle(*args)
89
+ def self.view_root(*locations)
90
+ Ramaze.deprecated('Controller::view_root', 'Controller::map_views')
91
+ map_views(*locations)
286
92
  end
287
93
  end
288
94
  end