ramaze 0.3.9.1 → 2023.01.06

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 (781) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/README.md +125 -0
  4. data/Rakefile +13 -186
  5. data/bin/ramaze +4 -149
  6. data/examples/app/auth/layout/auth.xhtml +25 -0
  7. data/examples/app/auth/start.rb +25 -0
  8. data/examples/app/auth/view/index.xhtml +4 -0
  9. data/examples/app/auth/view/login.xhtml +20 -0
  10. data/examples/app/auth/view/secret.xhtml +1 -0
  11. data/examples/app/blog/app.rb +23 -0
  12. data/examples/app/blog/config.ru +19 -0
  13. data/examples/app/blog/controller/init.rb +30 -0
  14. data/examples/app/blog/controller/posts.rb +223 -0
  15. data/examples/app/blog/controller/users.rb +152 -0
  16. data/examples/app/blog/layout/default.xhtml +61 -0
  17. data/examples/app/blog/migrations/01_create_schema.rb +50 -0
  18. data/examples/app/blog/model/comment.rb +42 -0
  19. data/examples/app/blog/model/init.rb +44 -0
  20. data/examples/app/blog/model/post.rb +33 -0
  21. data/examples/app/blog/model/user.rb +100 -0
  22. data/examples/app/blog/public/css/grid.css +107 -0
  23. data/examples/app/blog/public/css/layout.css +203 -0
  24. data/examples/app/blog/public/css/reset.css +123 -0
  25. data/examples/app/blog/public/css/text.css +109 -0
  26. data/examples/app/blog/public/dispatch.fcgi +11 -0
  27. data/examples/app/blog/public/favicon.ico +0 -0
  28. data/examples/app/blog/public/images/bg.png +0 -0
  29. data/examples/app/blog/start.rb +20 -0
  30. data/examples/app/blog/view/feed.xhtml +23 -0
  31. data/examples/app/blog/view/form.xhtml +11 -0
  32. data/examples/app/blog/view/index.xhtml +44 -0
  33. data/examples/app/blog/view/users/form.xhtml +12 -0
  34. data/examples/app/blog/view/users/index.xhtml +30 -0
  35. data/examples/app/blog/view/users/login.xhtml +8 -0
  36. data/examples/app/blog/view/view.xhtml +68 -0
  37. data/examples/app/chat/layout/default.xhtml +13 -0
  38. data/examples/app/chat/model/history.rb +38 -0
  39. data/examples/app/chat/model/message.rb +7 -0
  40. data/examples/app/chat/public/css/chat.css +9 -0
  41. data/examples/app/chat/public/js/chat.js +28 -0
  42. data/{lib/proto → examples/app/chat}/public/js/jquery.js +75 -15
  43. data/examples/app/chat/start.rb +39 -0
  44. data/examples/app/chat/view/chat.xhtml +9 -0
  45. data/examples/app/chat/view/index.xhtml +7 -0
  46. data/examples/app/localization/locale/de.yaml +5 -0
  47. data/examples/app/localization/locale/en.yaml +5 -0
  48. data/examples/app/localization/locale/ja.yaml +5 -0
  49. data/examples/app/localization/start.rb +48 -0
  50. data/examples/app/todolist/controller/init.rb +11 -0
  51. data/examples/app/todolist/controller/task.rb +39 -0
  52. data/examples/app/todolist/layout/default.xhtml +14 -0
  53. data/examples/app/todolist/model/init.rb +14 -0
  54. data/examples/app/todolist/model/task.rb +39 -0
  55. data/examples/app/todolist/public/css/screen.css +63 -0
  56. data/examples/app/todolist/start.rb +7 -0
  57. data/examples/app/todolist/view/index.xhtml +29 -0
  58. data/examples/{upload → app/upload}/start.rb +7 -3
  59. data/examples/app/whywiki/spec/whywiki.rb +56 -0
  60. data/examples/{whywiki → app/whywiki}/start.rb +10 -9
  61. data/examples/{whywiki/template → app/whywiki/view}/edit.xhtml +2 -2
  62. data/examples/app/whywiki/view/show.xhtml +20 -0
  63. data/examples/{wikore → app/wikore}/spec/wikore.rb +7 -9
  64. data/examples/{wikore → app/wikore}/src/controller.rb +9 -11
  65. data/examples/{wikore → app/wikore}/src/model.rb +11 -13
  66. data/examples/app/wikore/start.rb +9 -0
  67. data/examples/{wiktacular/template/html_layout.xhtml → app/wiktacular/layout/application.xhtml} +1 -1
  68. data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_19-21-12.mkd +1 -1
  69. data/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +2 -0
  70. data/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +2 -0
  71. data/examples/app/wiktacular/mkd/main/current.mkd +2 -0
  72. data/examples/{wiktacular → app/wiktacular}/mkd/markdown/current.mkd +2 -2
  73. data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
  74. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-20_19-43-50.mkd +2 -2
  75. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-01.mkd +11 -11
  76. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-32.mkd +12 -12
  77. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-08.mkd +16 -16
  78. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-54.mkd +16 -16
  79. data/examples/{wiktacular → app/wiktacular}/mkd/testing/current.mkd +16 -16
  80. data/examples/{wiktacular → app/wiktacular}/spec/wiktacular.rb +39 -40
  81. data/examples/{wiktacular → app/wiktacular}/src/controller.rb +18 -18
  82. data/examples/{wiktacular → app/wiktacular}/src/model.rb +30 -14
  83. data/examples/{wiktacular → app/wiktacular}/start.rb +1 -1
  84. data/examples/{wiktacular/template → app/wiktacular/view}/edit.xhtml +2 -2
  85. data/examples/{wiktacular/template → app/wiktacular/view}/new.xhtml +1 -1
  86. data/examples/{element.rb → basic/element.rb} +5 -3
  87. data/examples/basic/gestalt.rb +26 -0
  88. data/examples/basic/hello.rb +14 -0
  89. data/examples/{layout.rb → basic/layout.rb} +2 -2
  90. data/examples/basic/linking.rb +29 -0
  91. data/examples/basic/partial.rb +26 -0
  92. data/examples/{simple.rb → basic/simple.rb} +9 -12
  93. data/examples/{caching.rb → helpers/cache.rb} +9 -7
  94. data/examples/helpers/paginate.rb +71 -0
  95. data/examples/helpers/rest.rb +28 -0
  96. data/examples/helpers/simple_captcha.rb +29 -0
  97. data/examples/{css.rb → misc/css.rb} +6 -12
  98. data/examples/misc/memleak_detector.rb +37 -0
  99. data/examples/misc/nagoro_element.rb +43 -0
  100. data/examples/{ramaise.rb → misc/ramaise.rb} +2 -2
  101. data/examples/misc/rapp.rb +56 -0
  102. data/examples/misc/sequel_scaffolding.rb +45 -0
  103. data/examples/misc/serve_directory.rb +6 -0
  104. data/examples/templates/template_erubis.rb +9 -10
  105. data/examples/templates/template_ezamar.rb +8 -7
  106. data/examples/templates/template_haml.rb +7 -8
  107. data/examples/templates/template_liquid.rb +20 -19
  108. data/examples/templates/template_markaby.rb +6 -7
  109. data/examples/templates/template_mustache.rb +70 -0
  110. data/examples/templates/template_nagoro.rb +6 -7
  111. data/examples/templates/template_redcloth.rb +8 -9
  112. data/examples/templates/template_remarkably.rb +8 -9
  113. data/examples/templates/template_tenjin.rb +10 -15
  114. data/examples/templates/{template → view}/external.haml +4 -4
  115. data/examples/templates/{template → view}/external.mab +4 -4
  116. data/examples/templates/view/external.mt +29 -0
  117. data/examples/templates/{template → view}/external.nag +4 -4
  118. data/examples/templates/{template → view}/external.redcloth +4 -4
  119. data/examples/templates/{template → view}/external.rem +4 -4
  120. data/examples/templates/{template → view}/external.rhtml +6 -6
  121. data/examples/templates/{template → view}/external.tenjin +4 -4
  122. data/examples/templates/{template → view}/external.zmr +6 -6
  123. data/guide/AUTHORS +80 -0
  124. data/guide/CHANGELOG +20210 -0
  125. data/guide/LICENSE +19 -0
  126. data/guide/_static/logo.png +0 -0
  127. data/guide/_static/logo.svg +49 -0
  128. data/guide/css/common.css +20 -0
  129. data/guide/general/cache.md +168 -0
  130. data/guide/general/configuration.md +169 -0
  131. data/guide/general/contributing.md +182 -0
  132. data/guide/general/controllers.md +210 -0
  133. data/guide/general/helpers.md +89 -0
  134. data/guide/general/installation.md +59 -0
  135. data/guide/general/logging.md +96 -0
  136. data/guide/general/middlewares.md +111 -0
  137. data/guide/general/models.md +79 -0
  138. data/{doc/readme_chunks/principles.txt → guide/general/principles.md} +15 -17
  139. data/guide/general/ramaze_command.md +110 -0
  140. data/guide/general/routes.md +82 -0
  141. data/guide/general/sessions.md +210 -0
  142. data/guide/general/special_thanks.md +69 -0
  143. data/guide/general/testing.md +228 -0
  144. data/guide/general/upgrading.md +85 -0
  145. data/guide/general/views.md +335 -0
  146. data/lib/proto/Gemfile +4 -0
  147. data/lib/proto/README.md +35 -0
  148. data/lib/proto/Rakefile +1 -0
  149. data/lib/proto/app.rb +9 -0
  150. data/lib/proto/config.ru +19 -0
  151. data/lib/proto/controller/init.rb +18 -0
  152. data/lib/proto/controller/main.rb +13 -10
  153. data/lib/proto/layout/default.xhtml +57 -0
  154. data/lib/proto/public/css/grid.css +107 -0
  155. data/lib/proto/public/css/layout.css +81 -0
  156. data/lib/proto/public/css/reset.css +123 -0
  157. data/lib/proto/public/css/text.css +109 -0
  158. data/lib/proto/public/favicon.ico +0 -0
  159. data/lib/proto/public/images/bg.png +0 -0
  160. data/lib/proto/spec/helper.rb +39 -0
  161. data/lib/proto/task/ramaze.rake +57 -0
  162. data/lib/proto/view/index.xhtml +36 -25
  163. data/lib/ramaze/app.rb +198 -0
  164. data/lib/ramaze/bin/create.rb +92 -0
  165. data/lib/ramaze/bin/runner.rb +127 -0
  166. data/lib/ramaze/cache/lru.rb +88 -0
  167. data/lib/ramaze/cache/memcache.rb +219 -0
  168. data/lib/ramaze/cache/moneta.rb +143 -0
  169. data/lib/ramaze/cache/redis.rb +163 -0
  170. data/lib/ramaze/cache/sequel.rb +373 -0
  171. data/lib/ramaze/cache.rb +42 -82
  172. data/lib/ramaze/controller/default.rb +25 -0
  173. data/lib/ramaze/controller.rb +184 -224
  174. data/lib/ramaze/current.rb +17 -68
  175. data/lib/ramaze/default_middleware.rb +24 -0
  176. data/lib/ramaze/files.rb +59 -0
  177. data/lib/ramaze/gestalt.rb +95 -63
  178. data/lib/ramaze/helper/auth.rb +107 -107
  179. data/lib/ramaze/helper/bench.rb +51 -0
  180. data/lib/ramaze/helper/blue_form.rb +683 -0
  181. data/lib/ramaze/helper/cache.rb +108 -130
  182. data/lib/ramaze/helper/csrf.rb +191 -0
  183. data/lib/ramaze/helper/email.rb +116 -0
  184. data/lib/ramaze/helper/erector.rb +113 -0
  185. data/lib/ramaze/helper/flash.rb +42 -39
  186. data/lib/ramaze/helper/formatting.rb +200 -35
  187. data/lib/ramaze/helper/gestalt.rb +49 -0
  188. data/lib/ramaze/helper/gravatar.rb +75 -0
  189. data/lib/ramaze/helper/identity.rb +93 -68
  190. data/lib/ramaze/helper/layout.rb +128 -0
  191. data/lib/ramaze/helper/link.rb +52 -119
  192. data/lib/ramaze/helper/localize.rb +143 -0
  193. data/lib/ramaze/helper/markaby.rb +26 -24
  194. data/lib/ramaze/helper/maruku.rb +15 -6
  195. data/lib/ramaze/helper/paginate.rb +315 -0
  196. data/lib/ramaze/helper/remarkably.rb +14 -0
  197. data/lib/ramaze/helper/request_accessor.rb +20 -0
  198. data/lib/ramaze/helper/send_file.rb +34 -0
  199. data/lib/ramaze/helper/simple_captcha.rb +61 -0
  200. data/lib/ramaze/helper/stack.rb +72 -62
  201. data/lib/ramaze/helper/tagz.rb +13 -12
  202. data/lib/ramaze/helper/thread.rb +25 -0
  203. data/lib/ramaze/helper/upload.rb +525 -0
  204. data/lib/ramaze/helper/user.rb +260 -39
  205. data/lib/ramaze/helper/xhtml.rb +122 -0
  206. data/lib/ramaze/helper.rb +8 -79
  207. data/lib/ramaze/log/hub.rb +41 -32
  208. data/lib/ramaze/log/informer.rb +128 -104
  209. data/lib/ramaze/log/logger.rb +25 -15
  210. data/lib/ramaze/log/logging.rb +46 -27
  211. data/lib/ramaze/log/rotatinginformer.rb +237 -0
  212. data/lib/ramaze/log/syslog.rb +57 -31
  213. data/lib/ramaze/log.rb +16 -15
  214. data/lib/ramaze/reloader/watch_inotify.rb +84 -0
  215. data/lib/ramaze/reloader/watch_stat.rb +58 -0
  216. data/lib/ramaze/reloader.rb +212 -0
  217. data/lib/ramaze/request.rb +126 -0
  218. data/lib/ramaze/response.rb +67 -0
  219. data/lib/ramaze/snippets/object/__dir__.rb +25 -0
  220. data/lib/ramaze/snippets/ramaze/deprecated.rb +23 -0
  221. data/lib/ramaze/snippets/string/camel_case.rb +17 -14
  222. data/lib/ramaze/snippets/string/color.rb +27 -24
  223. data/lib/ramaze/snippets/string/esc.rb +25 -25
  224. data/lib/ramaze/snippets/string/snake_case.rb +16 -13
  225. data/lib/ramaze/snippets/string/unindent.rb +24 -11
  226. data/lib/ramaze/snippets.rb +21 -6
  227. data/lib/ramaze/spec/bacon.rb +44 -0
  228. data/lib/ramaze/spec/helper/bacon.rb +4 -4
  229. data/lib/ramaze/spec/helper/pretty_output.rb +9 -1
  230. data/lib/ramaze/spec/helper/snippets.rb +11 -1
  231. data/lib/ramaze/spec/helper/template_examples.rb +22 -0
  232. data/lib/ramaze/version.rb +4 -13
  233. data/lib/ramaze/view/erector.rb +116 -0
  234. data/lib/ramaze/view/erubis.rb +26 -0
  235. data/lib/ramaze/view/ezamar.rb +27 -0
  236. data/lib/ramaze/view/gestalt.rb +20 -0
  237. data/lib/ramaze/view/haml.rb +27 -0
  238. data/lib/ramaze/view/liquid.rb +99 -0
  239. data/lib/ramaze/view/lokar.rb +18 -0
  240. data/lib/ramaze/view/mustache.rb +46 -0
  241. data/lib/ramaze/view/nagoro/render_partial.rb +32 -0
  242. data/lib/ramaze/view/nagoro.rb +44 -0
  243. data/lib/ramaze/view/remarkably.rb +22 -0
  244. data/lib/ramaze/view/sass.rb +22 -0
  245. data/lib/ramaze/view/slim.rb +43 -0
  246. data/lib/ramaze/view/slippers.rb +51 -0
  247. data/lib/ramaze/view/tagz.rb +67 -0
  248. data/lib/ramaze/view/tenjin.rb +32 -0
  249. data/lib/ramaze/view.rb +35 -0
  250. data/lib/ramaze.rb +60 -100
  251. data/lib/vendor/route_exceptions.rb +42 -0
  252. data/ramaze.gemspec +61 -0
  253. data/spec/examples/caching.rb +5 -8
  254. data/spec/examples/css.rb +3 -4
  255. data/spec/examples/element.rb +4 -4
  256. data/spec/examples/hello.rb +4 -5
  257. data/spec/examples/linking.rb +3 -4
  258. data/spec/examples/misc/sequel_scaffolding.rb +18 -0
  259. data/spec/examples/simple.rb +3 -8
  260. data/spec/examples/templates/template_erubis.rb +8 -18
  261. data/spec/examples/templates/template_ezamar.rb +9 -19
  262. data/spec/examples/templates/template_haml.rb +8 -20
  263. data/spec/examples/templates/template_liquid.rb +8 -24
  264. data/spec/examples/templates/template_markaby.rb +10 -19
  265. data/spec/examples/templates/template_mustache.rb +13 -0
  266. data/spec/examples/templates/template_nagoro.rb +13 -0
  267. data/spec/examples/templates/template_remarkably.rb +8 -18
  268. data/spec/examples/templates/template_tenjin.rb +8 -23
  269. data/spec/examples/todolist.rb +33 -0
  270. data/spec/helper.rb +14 -3
  271. data/spec/ramaze/action/render.rb +9 -17
  272. data/spec/ramaze/action/view/other_wrapper.erb +1 -0
  273. data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
  274. data/spec/ramaze/app/location.rb +43 -0
  275. data/spec/ramaze/app.rb +50 -0
  276. data/spec/ramaze/bin/app/config.ru +11 -0
  277. data/spec/ramaze/bin/create.rb +28 -0
  278. data/spec/ramaze/bin/runner.rb +30 -0
  279. data/spec/ramaze/cache/lru.rb +48 -0
  280. data/spec/ramaze/cache/memcache.rb +69 -0
  281. data/spec/ramaze/cache/moneta.rb +53 -0
  282. data/spec/ramaze/cache/redis.rb +58 -0
  283. data/spec/ramaze/cache/sequel.rb +60 -0
  284. data/spec/ramaze/controller/actionless_templates.rb +16 -12
  285. data/spec/ramaze/controller/lonely_mapping.rb +18 -0
  286. data/spec/ramaze/controller/mapping.rb +63 -0
  287. data/spec/ramaze/controller/provide_inheritance.rb +40 -0
  288. data/spec/ramaze/controller/resolve.rb +9 -11
  289. data/spec/ramaze/controller/subclass.rb +22 -7
  290. data/spec/ramaze/controller/template_resolving.rb +23 -61
  291. data/spec/ramaze/controller/view/bar.xhtml +1 -0
  292. data/spec/ramaze/controller/view/base/another.xhtml +1 -0
  293. data/spec/ramaze/dispatcher/directory.rb +61 -33
  294. data/spec/ramaze/dispatcher/file.rb +65 -47
  295. data/spec/ramaze/error.rb +54 -64
  296. data/spec/ramaze/files/public_1/plain.txt +1 -0
  297. data/spec/ramaze/files/public_2/rich.txt +1 -0
  298. data/spec/ramaze/files.rb +30 -0
  299. data/spec/ramaze/gestalt.rb +28 -21
  300. data/spec/ramaze/helper/auth.rb +47 -29
  301. data/spec/ramaze/helper/bench.rb +21 -0
  302. data/spec/ramaze/helper/blue_form.rb +807 -0
  303. data/spec/ramaze/helper/cache.rb +65 -84
  304. data/spec/ramaze/helper/csrf.rb +64 -0
  305. data/spec/ramaze/helper/email.rb +69 -0
  306. data/spec/ramaze/helper/flash.rb +22 -101
  307. data/spec/ramaze/helper/formatting.rb +100 -6
  308. data/spec/ramaze/helper/gestalt.rb +18 -0
  309. data/spec/ramaze/helper/gravatar.rb +43 -0
  310. data/spec/ramaze/helper/layout/alternative.xhtml +5 -0
  311. data/spec/ramaze/helper/layout/default.xhtml +5 -0
  312. data/spec/ramaze/helper/layout.rb +109 -0
  313. data/spec/ramaze/helper/link.rb +48 -102
  314. data/spec/ramaze/helper/localize.rb +65 -0
  315. data/spec/ramaze/helper/maruku.rb +22 -0
  316. data/spec/ramaze/helper/paginate.rb +304 -0
  317. data/spec/ramaze/helper/request_accessor.rb +22 -0
  318. data/spec/ramaze/helper/simple_captcha.rb +45 -0
  319. data/spec/ramaze/helper/stack.rb +54 -41
  320. data/spec/ramaze/helper/upload.rb +150 -0
  321. data/spec/ramaze/helper/uploads/text_1.txt +1 -0
  322. data/spec/ramaze/helper/uploads/text_2.txt +1 -0
  323. data/spec/ramaze/helper/user.rb +63 -20
  324. data/spec/ramaze/helper/xhtml.rb +54 -0
  325. data/spec/ramaze/log/informer.rb +30 -28
  326. data/spec/ramaze/log/logging.rb +66 -0
  327. data/spec/ramaze/log/syslog.rb +89 -4
  328. data/spec/ramaze/params.rb +12 -16
  329. data/spec/ramaze/request.rb +51 -160
  330. data/spec/ramaze/rewrite/file.css +1 -0
  331. data/spec/ramaze/session/lru.rb +58 -0
  332. data/spec/ramaze/session/memcache.rb +66 -0
  333. data/spec/ramaze/session/redis.rb +63 -0
  334. data/spec/ramaze/session/sequel.rb +62 -0
  335. data/spec/ramaze/view/erector/external_view.erector +5 -0
  336. data/spec/ramaze/view/erector/index.erector +5 -0
  337. data/spec/ramaze/view/erector/layout.erector +13 -0
  338. data/spec/ramaze/view/erector/tables.erector +23 -0
  339. data/spec/ramaze/view/erector/view.erector +6 -0
  340. data/spec/ramaze/view/erector.rb +68 -0
  341. data/spec/ramaze/view/erubis/external.rhtml +8 -0
  342. data/spec/ramaze/view/erubis/sum.rhtml +1 -0
  343. data/spec/ramaze/view/erubis.rb +73 -0
  344. data/spec/ramaze/view/ezamar/external.zmr +8 -0
  345. data/spec/ramaze/view/ezamar/sum.zmr +1 -0
  346. data/spec/ramaze/view/ezamar.rb +73 -0
  347. data/spec/ramaze/view/gestalt/external.ges +8 -0
  348. data/spec/ramaze/view/gestalt.rb +94 -0
  349. data/spec/ramaze/view/haml/external.haml +5 -0
  350. data/spec/ramaze/view/haml/sum.haml +2 -0
  351. data/spec/ramaze/view/haml.rb +114 -0
  352. data/spec/ramaze/view/liquid/external.liquid +8 -0
  353. data/spec/ramaze/view/liquid/sum.liquid +1 -0
  354. data/spec/ramaze/view/liquid.rb +73 -0
  355. data/spec/ramaze/view/lokar/external.lok +8 -0
  356. data/spec/ramaze/view/lokar/sum.lok +1 -0
  357. data/spec/ramaze/view/lokar.rb +78 -0
  358. data/spec/ramaze/view/mustache/external.mt +8 -0
  359. data/spec/ramaze/view/mustache/sum.mt +1 -0
  360. data/spec/ramaze/view/mustache.rb +77 -0
  361. data/spec/ramaze/view/nagoro/external.nag +8 -0
  362. data/spec/ramaze/view/nagoro/sum.nag +1 -0
  363. data/spec/ramaze/view/nagoro.rb +78 -0
  364. data/spec/ramaze/view/remarkably.rb +49 -0
  365. data/spec/ramaze/view/sass.rb +73 -0
  366. data/spec/ramaze/view/slim/external.slim +5 -0
  367. data/spec/ramaze/view/slim/external_vars.slim +5 -0
  368. data/spec/ramaze/view/slim.rb +49 -0
  369. data/spec/ramaze/view/slippers/external.st +8 -0
  370. data/spec/ramaze/view/slippers/sum.st +1 -0
  371. data/spec/ramaze/view/slippers.rb +49 -0
  372. data/spec/ramaze/{template → view}/tagz.rb +20 -31
  373. data/spec/ramaze/view/tenjin/external.rbhtml +8 -0
  374. data/spec/ramaze/view/tenjin/sum.rbhtml +1 -0
  375. data/spec/ramaze/view/tenjin.rb +57 -0
  376. data/spec/ramaze/view.rb +36 -0
  377. data/spec/snippets/object/__dir__.rb +17 -0
  378. data/spec/snippets/ramaze/lru_hash.rb +88 -0
  379. data/spec/snippets/string/camel_case.rb +4 -1
  380. data/spec/snippets/string/color.rb +4 -1
  381. data/spec/snippets/string/snake_case.rb +4 -1
  382. data/spec/snippets/string/unindent.rb +10 -1
  383. data/tasks/authors.rake +17 -0
  384. data/tasks/bacon.rake +81 -0
  385. data/tasks/changelog.rake +20 -0
  386. data/tasks/gems.rake +15 -0
  387. data/tasks/release.rake +38 -0
  388. data/tasks/todo.rake +31 -0
  389. data/tasks/yard.rake +13 -0
  390. metadata +813 -714
  391. data/doc/AUTHORS +0 -25
  392. data/doc/CHANGELOG +0 -5757
  393. data/doc/COPYING +0 -56
  394. data/doc/FAQ +0 -92
  395. data/doc/GPL +0 -339
  396. data/doc/INSTALL +0 -34
  397. data/doc/LEGAL +0 -26
  398. data/doc/ProjectInfo +0 -53
  399. data/doc/README +0 -435
  400. data/doc/TODO +0 -29
  401. data/doc/meta/announcement.txt +0 -126
  402. data/doc/meta/configuration.txt +0 -162
  403. data/doc/meta/internals.txt +0 -278
  404. data/doc/meta/users.kml +0 -64
  405. data/doc/migrate/1110_to_1111.txt +0 -131
  406. data/doc/readme_chunks/appendix.txt +0 -10
  407. data/doc/readme_chunks/examples.txt +0 -38
  408. data/doc/readme_chunks/features.txt +0 -148
  409. data/doc/readme_chunks/getting_help.txt +0 -5
  410. data/doc/readme_chunks/getting_started.txt +0 -18
  411. data/doc/readme_chunks/installing.txt +0 -46
  412. data/doc/readme_chunks/introduction.txt +0 -18
  413. data/doc/readme_chunks/thanks.txt +0 -59
  414. data/doc/tutorial/todolist.html +0 -816
  415. data/doc/tutorial/todolist.mkd +0 -736
  416. data/examples/auth/auth.rb +0 -54
  417. data/examples/auth/template/layout.haml +0 -20
  418. data/examples/auth/template/login.haml +0 -16
  419. data/examples/blog/README +0 -3
  420. data/examples/blog/controller/main.rb +0 -29
  421. data/examples/blog/model/entry.rb +0 -30
  422. data/examples/blog/public/styles/blog.css +0 -132
  423. data/examples/blog/spec/blog.rb +0 -87
  424. data/examples/blog/start.rb +0 -7
  425. data/examples/blog/view/edit.xhtml +0 -17
  426. data/examples/blog/view/index.xhtml +0 -17
  427. data/examples/blog/view/layout.xhtml +0 -11
  428. data/examples/blog/view/new.xhtml +0 -16
  429. data/examples/hello.rb +0 -15
  430. data/examples/linking.rb +0 -29
  431. data/examples/memleak_detector.rb +0 -32
  432. data/examples/nitro_form.rb +0 -23
  433. data/examples/rammit/spec/rammit.rb +0 -30
  434. data/examples/rammit/src/controller/main.rb +0 -3
  435. data/examples/rammit/src/controller/page.rb +0 -16
  436. data/examples/rammit/src/model.rb +0 -33
  437. data/examples/rammit/start.rb +0 -8
  438. data/examples/rammit/template/index.xhtml +0 -14
  439. data/examples/rammit/template/page/view.xhtml +0 -4
  440. data/examples/rapaste/Rakefile +0 -35
  441. data/examples/rapaste/controller/paste.rb +0 -94
  442. data/examples/rapaste/model/paste.rb +0 -55
  443. data/examples/rapaste/public/css/active4d.css +0 -114
  444. data/examples/rapaste/public/css/all_hallows_eve.css +0 -72
  445. data/examples/rapaste/public/css/amy.css +0 -147
  446. data/examples/rapaste/public/css/blackboard.css +0 -88
  447. data/examples/rapaste/public/css/brilliance_black.css +0 -605
  448. data/examples/rapaste/public/css/brilliance_dull.css +0 -599
  449. data/examples/rapaste/public/css/cobalt.css +0 -149
  450. data/examples/rapaste/public/css/dawn.css +0 -121
  451. data/examples/rapaste/public/css/display.css +0 -197
  452. data/examples/rapaste/public/css/eiffel.css +0 -121
  453. data/examples/rapaste/public/css/espresso_libre.css +0 -109
  454. data/examples/rapaste/public/css/idle.css +0 -62
  455. data/examples/rapaste/public/css/iplastic.css +0 -80
  456. data/examples/rapaste/public/css/lazy.css +0 -73
  457. data/examples/rapaste/public/css/mac_classic.css +0 -123
  458. data/examples/rapaste/public/css/magicwb_amiga.css +0 -104
  459. data/examples/rapaste/public/css/pastels_on_dark.css +0 -188
  460. data/examples/rapaste/public/css/slush_poppies.css +0 -85
  461. data/examples/rapaste/public/css/spacecadet.css +0 -51
  462. data/examples/rapaste/public/css/sunburst.css +0 -180
  463. data/examples/rapaste/public/css/twilight.css +0 -137
  464. data/examples/rapaste/public/css/zenburnesque.css +0 -91
  465. data/examples/rapaste/public/js/jquery.js +0 -11
  466. data/examples/rapaste/spec/rapaste.rb +0 -49
  467. data/examples/rapaste/start.rb +0 -24
  468. data/examples/rapaste/view/copy.xhtml +0 -10
  469. data/examples/rapaste/view/index.xhtml +0 -9
  470. data/examples/rapaste/view/layout.xhtml +0 -25
  471. data/examples/rapaste/view/list.xhtml +0 -29
  472. data/examples/rapaste/view/search.xhtml +0 -41
  473. data/examples/rapaste/view/view.xhtml +0 -37
  474. data/examples/simple_auth.rb +0 -23
  475. data/examples/sourceview/public/coderay.css +0 -104
  476. data/examples/sourceview/public/images/file.gif +0 -0
  477. data/examples/sourceview/public/images/folder.gif +0 -0
  478. data/examples/sourceview/public/images/tv-collapsable-last.gif +0 -0
  479. data/examples/sourceview/public/images/tv-collapsable.gif +0 -0
  480. data/examples/sourceview/public/images/tv-expandable-last.gif +0 -0
  481. data/examples/sourceview/public/images/tv-expandable.gif +0 -0
  482. data/examples/sourceview/public/images/tv-item-last.gif +0 -0
  483. data/examples/sourceview/public/images/tv-item.gif +0 -0
  484. data/examples/sourceview/public/jquery.js +0 -11
  485. data/examples/sourceview/public/jquery.treeview.css +0 -48
  486. data/examples/sourceview/public/jquery.treeview.js +0 -223
  487. data/examples/sourceview/public/sourceview.js +0 -52
  488. data/examples/sourceview/sourceview.rb +0 -77
  489. data/examples/sourceview/template/index.haml +0 -59
  490. data/examples/templates/template/external.amrita +0 -19
  491. data/examples/templates/template/external.xsl +0 -57
  492. data/examples/templates/template_amrita2.rb +0 -74
  493. data/examples/templates/template_xslt.rb +0 -49
  494. data/examples/todolist/README +0 -1
  495. data/examples/todolist/public/js/jquery.js +0 -1923
  496. data/examples/todolist/public/ramaze.png +0 -0
  497. data/examples/todolist/spec/todolist.rb +0 -132
  498. data/examples/todolist/src/controller/main.rb +0 -70
  499. data/examples/todolist/src/element/page.rb +0 -31
  500. data/examples/todolist/src/model.rb +0 -14
  501. data/examples/todolist/start.rb +0 -11
  502. data/examples/todolist/template/index.xhtml +0 -17
  503. data/examples/todolist/template/new.xhtml +0 -7
  504. data/examples/whywiki/spec/whywiki.rb +0 -58
  505. data/examples/whywiki/template/show.xhtml +0 -18
  506. data/examples/wikore/start.rb +0 -9
  507. data/examples/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +0 -2
  508. data/examples/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +0 -2
  509. data/examples/wiktacular/mkd/main/current.mkd +0 -2
  510. data/examples/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +0 -2
  511. data/lib/proto/public/css/ramaze_error.css +0 -90
  512. data/lib/proto/public/dispatch.fcgi +0 -11
  513. data/lib/proto/public/ramaze.png +0 -0
  514. data/lib/proto/spec/main.rb +0 -24
  515. data/lib/proto/start.rb +0 -8
  516. data/lib/proto/start.ru +0 -8
  517. data/lib/proto/view/error.xhtml +0 -64
  518. data/lib/proto/view/page.xhtml +0 -15
  519. data/lib/ramaze/action/render.rb +0 -163
  520. data/lib/ramaze/action.rb +0 -136
  521. data/lib/ramaze/adapter/base.rb +0 -59
  522. data/lib/ramaze/adapter/cgi.rb +0 -24
  523. data/lib/ramaze/adapter/ebb.rb +0 -32
  524. data/lib/ramaze/adapter/evented_mongrel.rb +0 -7
  525. data/lib/ramaze/adapter/fcgi.rb +0 -24
  526. data/lib/ramaze/adapter/lsws.rb +0 -23
  527. data/lib/ramaze/adapter/mongrel.rb +0 -25
  528. data/lib/ramaze/adapter/scgi.rb +0 -22
  529. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +0 -7
  530. data/lib/ramaze/adapter/thin.rb +0 -22
  531. data/lib/ramaze/adapter/webrick.rb +0 -52
  532. data/lib/ramaze/adapter.rb +0 -101
  533. data/lib/ramaze/cache/memcached.rb +0 -70
  534. data/lib/ramaze/cache/memory.rb +0 -6
  535. data/lib/ramaze/cache/yaml_store.rb +0 -68
  536. data/lib/ramaze/contrib/auto_params/get_args.rb +0 -57
  537. data/lib/ramaze/contrib/auto_params.rb +0 -135
  538. data/lib/ramaze/contrib/email.rb +0 -84
  539. data/lib/ramaze/contrib/facebook/facebook.rb +0 -171
  540. data/lib/ramaze/contrib/facebook.rb +0 -23
  541. data/lib/ramaze/contrib/file_cache.rb +0 -65
  542. data/lib/ramaze/contrib/gettext/mo.rb +0 -155
  543. data/lib/ramaze/contrib/gettext/parser.rb +0 -46
  544. data/lib/ramaze/contrib/gettext/po.rb +0 -109
  545. data/lib/ramaze/contrib/gettext.rb +0 -113
  546. data/lib/ramaze/contrib/gzip_filter.rb +0 -56
  547. data/lib/ramaze/contrib/profiling.rb +0 -36
  548. data/lib/ramaze/contrib/route.rb +0 -22
  549. data/lib/ramaze/contrib/sequel/fill.rb +0 -12
  550. data/lib/ramaze/contrib/sequel_cache.rb +0 -92
  551. data/lib/ramaze/contrib.rb +0 -82
  552. data/lib/ramaze/controller/error.rb +0 -46
  553. data/lib/ramaze/controller/main.rb +0 -2
  554. data/lib/ramaze/controller/resolve.rb +0 -234
  555. data/lib/ramaze/current/request.rb +0 -181
  556. data/lib/ramaze/current/response.rb +0 -19
  557. data/lib/ramaze/current/session/flash.rb +0 -67
  558. data/lib/ramaze/current/session/hash.rb +0 -65
  559. data/lib/ramaze/current/session.rb +0 -153
  560. data/lib/ramaze/dispatcher/action.rb +0 -40
  561. data/lib/ramaze/dispatcher/directory.rb +0 -116
  562. data/lib/ramaze/dispatcher/error.rb +0 -108
  563. data/lib/ramaze/dispatcher/file.rb +0 -87
  564. data/lib/ramaze/dispatcher.rb +0 -124
  565. data/lib/ramaze/error.rb +0 -24
  566. data/lib/ramaze/global/dsl.rb +0 -39
  567. data/lib/ramaze/global/globalstruct.rb +0 -147
  568. data/lib/ramaze/global.rb +0 -116
  569. data/lib/ramaze/helper/aspect.rb +0 -100
  570. data/lib/ramaze/helper/cgi.rb +0 -43
  571. data/lib/ramaze/helper/inform.rb +0 -40
  572. data/lib/ramaze/helper/nitroform.rb +0 -14
  573. data/lib/ramaze/helper/pager.rb +0 -366
  574. data/lib/ramaze/helper/partial.rb +0 -96
  575. data/lib/ramaze/helper/redirect.rb +0 -73
  576. data/lib/ramaze/helper/sendfile.rb +0 -18
  577. data/lib/ramaze/helper/sequel.rb +0 -52
  578. data/lib/ramaze/inform.rb +0 -4
  579. data/lib/ramaze/log/analogger.rb +0 -37
  580. data/lib/ramaze/log/growl.rb +0 -35
  581. data/lib/ramaze/log/knotify.rb +0 -25
  582. data/lib/ramaze/log/xosd.rb +0 -88
  583. data/lib/ramaze/route.rb +0 -84
  584. data/lib/ramaze/snippets/array/put_within.rb +0 -37
  585. data/lib/ramaze/snippets/binding/locals.rb +0 -13
  586. data/lib/ramaze/snippets/dictionary.rb +0 -504
  587. data/lib/ramaze/snippets/divide.rb +0 -20
  588. data/lib/ramaze/snippets/kernel/__dir__.rb +0 -23
  589. data/lib/ramaze/snippets/kernel/acquire.rb +0 -39
  590. data/lib/ramaze/snippets/kernel/aquire.rb +0 -1
  591. data/lib/ramaze/snippets/kernel/constant.rb +0 -26
  592. data/lib/ramaze/snippets/kernel/pretty_inspect.rb +0 -15
  593. data/lib/ramaze/snippets/metaid.rb +0 -17
  594. data/lib/ramaze/snippets/numeric/filesize_format.rb +0 -19
  595. data/lib/ramaze/snippets/object/pretty.rb +0 -6
  596. data/lib/ramaze/snippets/object/scope.rb +0 -11
  597. data/lib/ramaze/snippets/object/thread_accessor.rb +0 -5
  598. data/lib/ramaze/snippets/object/traits.rb +0 -76
  599. data/lib/ramaze/snippets/ordered_set.rb +0 -36
  600. data/lib/ramaze/snippets/proc/locals.rb +0 -11
  601. data/lib/ramaze/snippets/ramaze/caller_info.rb +0 -30
  602. data/lib/ramaze/snippets/ramaze/caller_lines.rb +0 -51
  603. data/lib/ramaze/snippets/ramaze/thread_accessor.rb +0 -44
  604. data/lib/ramaze/snippets/string/each.rb +0 -8
  605. data/lib/ramaze/snippets/string/ord.rb +0 -15
  606. data/lib/ramaze/snippets/string/start_with.rb +0 -7
  607. data/lib/ramaze/snippets/struct/fill.rb +0 -23
  608. data/lib/ramaze/snippets/struct/values_at.rb +0 -23
  609. data/lib/ramaze/snippets/symbol/to_proc.rb +0 -24
  610. data/lib/ramaze/snippets/thread/into.rb +0 -18
  611. data/lib/ramaze/sourcereload.rb +0 -169
  612. data/lib/ramaze/spec/helper/browser.rb +0 -88
  613. data/lib/ramaze/spec/helper/mock_http.rb +0 -69
  614. data/lib/ramaze/spec/helper/requester.rb +0 -49
  615. data/lib/ramaze/spec/helper/simple_http.rb +0 -434
  616. data/lib/ramaze/spec/helper.rb +0 -122
  617. data/lib/ramaze/spec.rb +0 -1
  618. data/lib/ramaze/store/default.rb +0 -109
  619. data/lib/ramaze/template/amrita2.rb +0 -44
  620. data/lib/ramaze/template/builder.rb +0 -28
  621. data/lib/ramaze/template/erubis.rb +0 -35
  622. data/lib/ramaze/template/ezamar/element.rb +0 -169
  623. data/lib/ramaze/template/ezamar/engine.rb +0 -76
  624. data/lib/ramaze/template/ezamar/morpher.rb +0 -135
  625. data/lib/ramaze/template/ezamar/render_partial.rb +0 -31
  626. data/lib/ramaze/template/ezamar.rb +0 -42
  627. data/lib/ramaze/template/haml.rb +0 -37
  628. data/lib/ramaze/template/liquid.rb +0 -36
  629. data/lib/ramaze/template/markaby.rb +0 -52
  630. data/lib/ramaze/template/nagoro.rb +0 -51
  631. data/lib/ramaze/template/none.rb +0 -14
  632. data/lib/ramaze/template/redcloth.rb +0 -24
  633. data/lib/ramaze/template/remarkably.rb +0 -38
  634. data/lib/ramaze/template/sass.rb +0 -37
  635. data/lib/ramaze/template/tagz.rb +0 -79
  636. data/lib/ramaze/template/tenjin.rb +0 -34
  637. data/lib/ramaze/template/xslt.rb +0 -96
  638. data/lib/ramaze/template.rb +0 -81
  639. data/lib/ramaze/tool/create.rb +0 -74
  640. data/lib/ramaze/tool/localize.rb +0 -162
  641. data/lib/ramaze/tool/mime.rb +0 -25
  642. data/lib/ramaze/tool/mime_types.yaml +0 -615
  643. data/lib/ramaze/tool/record.rb +0 -6
  644. data/lib/ramaze/tool.rb +0 -9
  645. data/lib/ramaze/trinity.rb +0 -13
  646. data/lib/vendor/bacon.rb +0 -323
  647. data/rake_tasks/conf.rake +0 -73
  648. data/rake_tasks/coverage.rake +0 -46
  649. data/rake_tasks/darcs.rake +0 -5
  650. data/rake_tasks/gem.rake +0 -43
  651. data/rake_tasks/maintenance.rake +0 -384
  652. data/rake_tasks/spec.rake +0 -62
  653. data/spec/contrib/auto_params.rb +0 -121
  654. data/spec/contrib/profiling.rb +0 -26
  655. data/spec/contrib/route.rb +0 -36
  656. data/spec/contrib/sequel/fill.rb +0 -47
  657. data/spec/examples/simple_auth.rb +0 -32
  658. data/spec/examples/templates/template_amrita2.rb +0 -16
  659. data/spec/examples/templates/template_redcloth.rb +0 -28
  660. data/spec/ramaze/action/basics.rb +0 -36
  661. data/spec/ramaze/action/cache.rb +0 -43
  662. data/spec/ramaze/action/layout.rb +0 -190
  663. data/spec/ramaze/adapter/mongrel.rb +0 -12
  664. data/spec/ramaze/adapter/record.rb +0 -31
  665. data/spec/ramaze/adapter/webrick.rb +0 -12
  666. data/spec/ramaze/adapter.rb +0 -22
  667. data/spec/ramaze/cache.rb +0 -73
  668. data/spec/ramaze/controller.rb +0 -177
  669. data/spec/ramaze/current/request.rb +0 -30
  670. data/spec/ramaze/current/session.rb +0 -97
  671. data/spec/ramaze/dispatcher.rb +0 -31
  672. data/spec/ramaze/element.rb +0 -107
  673. data/spec/ramaze/helper/aspect.rb +0 -92
  674. data/spec/ramaze/helper/cgi.rb +0 -43
  675. data/spec/ramaze/helper/file.rb +0 -18
  676. data/spec/ramaze/helper/pager.rb +0 -99
  677. data/spec/ramaze/helper/partial.rb +0 -76
  678. data/spec/ramaze/helper/redirect.rb +0 -112
  679. data/spec/ramaze/localize.rb +0 -67
  680. data/spec/ramaze/morpher.rb +0 -111
  681. data/spec/ramaze/public/error404.xhtml +0 -1
  682. data/spec/ramaze/request/mongrel.rb +0 -9
  683. data/spec/ramaze/request/thin.rb +0 -9
  684. data/spec/ramaze/request/webrick.rb +0 -5
  685. data/spec/ramaze/route.rb +0 -130
  686. data/spec/ramaze/session.rb +0 -94
  687. data/spec/ramaze/store/default.rb +0 -71
  688. data/spec/ramaze/template/amrita2/external.amrita +0 -6
  689. data/spec/ramaze/template/amrita2/sum.amrita +0 -1
  690. data/spec/ramaze/template/amrita2.rb +0 -50
  691. data/spec/ramaze/template/builder/external.rxml +0 -3
  692. data/spec/ramaze/template/builder.rb +0 -55
  693. data/spec/ramaze/template/erubis/sum.rhtml +0 -1
  694. data/spec/ramaze/template/erubis.rb +0 -41
  695. data/spec/ramaze/template/ezamar/another/long/action.zmr +0 -1
  696. data/spec/ramaze/template/ezamar/combined.zmr +0 -1
  697. data/spec/ramaze/template/ezamar/file_only.zmr +0 -1
  698. data/spec/ramaze/template/ezamar/index.zmr +0 -1
  699. data/spec/ramaze/template/ezamar/nested.zmr +0 -1
  700. data/spec/ramaze/template/ezamar/other__index.xhtml +0 -1
  701. data/spec/ramaze/template/ezamar/some__long__action.zmr +0 -1
  702. data/spec/ramaze/template/ezamar/sum.zmr +0 -1
  703. data/spec/ramaze/template/ezamar.rb +0 -63
  704. data/spec/ramaze/template/haml/index.haml +0 -5
  705. data/spec/ramaze/template/haml/locals.haml +0 -2
  706. data/spec/ramaze/template/haml/with_vars.haml +0 -4
  707. data/spec/ramaze/template/haml.rb +0 -66
  708. data/spec/ramaze/template/liquid/index.liquid +0 -1
  709. data/spec/ramaze/template/liquid/products.liquid +0 -45
  710. data/spec/ramaze/template/liquid.rb +0 -99
  711. data/spec/ramaze/template/markaby/external.mab +0 -8
  712. data/spec/ramaze/template/markaby/sum.mab +0 -1
  713. data/spec/ramaze/template/markaby.rb +0 -61
  714. data/spec/ramaze/template/nagoro/another/long/action.nag +0 -1
  715. data/spec/ramaze/template/nagoro/combined.nag +0 -1
  716. data/spec/ramaze/template/nagoro/file_only.nag +0 -1
  717. data/spec/ramaze/template/nagoro/index.nag +0 -1
  718. data/spec/ramaze/template/nagoro/nested.nag +0 -1
  719. data/spec/ramaze/template/nagoro/some__long__action.nag +0 -1
  720. data/spec/ramaze/template/nagoro/sum.nag +0 -1
  721. data/spec/ramaze/template/nagoro.rb +0 -64
  722. data/spec/ramaze/template/redcloth/external.redcloth +0 -1
  723. data/spec/ramaze/template/redcloth.rb +0 -38
  724. data/spec/ramaze/template/remarkably.rb +0 -58
  725. data/spec/ramaze/template/sass.rb +0 -69
  726. data/spec/ramaze/template/tenjin/external.tenjin +0 -1
  727. data/spec/ramaze/template/tenjin.rb +0 -49
  728. data/spec/ramaze/template/xslt/concat_words.xsl +0 -16
  729. data/spec/ramaze/template/xslt/index.xsl +0 -14
  730. data/spec/ramaze/template/xslt/products.xsl +0 -32
  731. data/spec/ramaze/template/xslt/ruby_version.xsl +0 -14
  732. data/spec/ramaze/template/xslt.rb +0 -90
  733. data/spec/ramaze/template.rb +0 -128
  734. data/spec/snippets/array/put_within.rb +0 -33
  735. data/spec/snippets/divide.rb +0 -19
  736. data/spec/snippets/kernel/__dir__.rb +0 -8
  737. data/spec/snippets/kernel/acquire.rb +0 -71
  738. data/spec/snippets/kernel/constant.rb +0 -23
  739. data/spec/snippets/numeric/filesize_format.rb +0 -12
  740. data/spec/snippets/ordered_set.rb +0 -63
  741. data/spec/snippets/ramaze/caller_info.rb +0 -39
  742. data/spec/snippets/ramaze/caller_lines.rb +0 -30
  743. data/spec/snippets/struct/fill.rb +0 -26
  744. data/spec/snippets/struct/values_at.rb +0 -44
  745. data/spec/snippets/symbol/to_proc.rb +0 -13
  746. data/spec/snippets/thread/into.rb +0 -20
  747. /data/examples/{todolist → app/todolist}/public/favicon.ico +0 -0
  748. /data/examples/{upload → app/upload}/view/index.xhtml +0 -0
  749. /data/examples/{wikore/template → app/wikore/view}/index.xhtml +0 -0
  750. /data/examples/{wiktacular → app/wiktacular}/README +0 -0
  751. /data/examples/{wiktacular → app/wiktacular}/mkd/link/2007-07-20_19-45-51.mkd +0 -0
  752. /data/examples/{wiktacular → app/wiktacular}/mkd/link/current.mkd +0 -0
  753. /data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_16-31-33.mkd +0 -0
  754. /data/examples/{wiktacular → app/wiktacular}/public/favicon.ico +0 -0
  755. /data/examples/{wiktacular → app/wiktacular}/public/screen.css +0 -0
  756. /data/examples/{wiktacular/template → app/wiktacular/view}/index.xhtml +0 -0
  757. /data/examples/{identity.rb → helpers/identity.rb} +0 -0
  758. /data/examples/{facebook.rb → misc/facebook.rb} +0 -0
  759. /data/examples/templates/{template → view}/external.liquid +0 -0
  760. /data/spec/ramaze/action/{template → view}/bar.xhtml +0 -0
  761. /data/spec/ramaze/action/{template → view}/instancevars/layout.xhtml +0 -0
  762. /data/spec/ramaze/action/{template → view}/other_wrapper.xhtml +0 -0
  763. /data/spec/ramaze/action/{template → view}/single_wrapper.xhtml +0 -0
  764. /data/spec/ramaze/action/{template/sub/sub_wrapper.xhtml → view/sub/sub_wrapper.erb} +0 -0
  765. /data/spec/ramaze/controller/{template → view}/greet.xhtml +0 -0
  766. /data/spec/ramaze/controller/{template → view}/list.xhtml +0 -0
  767. /data/spec/ramaze/controller/{template → view}/other/greet/other.xhtml +0 -0
  768. /data/spec/ramaze/controller/{template → view}/other_wrapper.xhtml +0 -0
  769. /data/spec/ramaze/helper/{template → view}/locals.xhtml +0 -0
  770. /data/spec/ramaze/helper/{template → view}/loop.xhtml +0 -0
  771. /data/spec/ramaze/helper/{template → view}/num.xhtml +0 -0
  772. /data/spec/ramaze/helper/{template → view}/partial.xhtml +0 -0
  773. /data/spec/ramaze/helper/{template → view}/recursive.xhtml +0 -0
  774. /data/spec/ramaze/helper/{template → view}/recursive_local_ivars.xhtml +0 -0
  775. /data/spec/ramaze/helper/{template → view}/recursive_locals.xhtml +0 -0
  776. /data/spec/ramaze/helper/{template → view}/test_template.xhtml +0 -0
  777. /data/spec/ramaze/{template → view}/remarkably/external.rem +0 -0
  778. /data/spec/ramaze/{template → view}/remarkably/sum.rem +0 -0
  779. /data/spec/ramaze/{template → view}/sass/file.css.sass +0 -0
  780. /data/spec/ramaze/{template → view}/tagz/external.tagz +0 -0
  781. /data/spec/ramaze/{template → view}/tagz/sum.tagz +0 -0
@@ -0,0 +1,807 @@
1
+ require File.expand_path('../../../../spec/helper', __FILE__)
2
+ require 'ramaze/helper/blue_form'
3
+
4
+ describe BF = Ramaze::Helper::BlueForm do
5
+ extend BF
6
+
7
+ # Generate some dummy data
8
+ @data = Class.new do
9
+ attr_reader :username
10
+ attr_reader :password
11
+ attr_reader :assigned
12
+ attr_reader :assigned_hash
13
+ attr_reader :message
14
+ attr_reader :servers_hash
15
+ attr_reader :servers_array
16
+ attr_accessor :errors
17
+
18
+ def initialize
19
+ @username = 'mrfoo'
20
+ @password = 'super-secret-password'
21
+ @assigned = ['bacon', 'steak']
22
+ @assigned_hash= {'Bacon' => 'bacon', 'Steak' => 'steak'}
23
+ @message = 'Hello, textarea!'
24
+ @servers_hash = {
25
+ :webrick => 'WEBrick',
26
+ :mongrel => 'Mongrel',
27
+ :thin => 'Thin',
28
+ }
29
+ @servers_array = ['WEBrick', 'Mongrel', 'Thin']
30
+ end
31
+ end.new
32
+
33
+ # very strange comparision, sort all characters and compare, so we don't have
34
+ # order issues.
35
+ def assert(expected, output)
36
+ left = expected.to_s.gsub(/\s+/, ' ').gsub(/>\s+</, '><').strip
37
+ right = output.to_s.gsub(/\s+/, ' ').gsub(/>\s+</, '><').strip
38
+ left.scan(/./).sort.should == right.scan(/./).sort
39
+ end
40
+
41
+ # ------------------------------------------------
42
+ # Basic forms
43
+
44
+ it 'Make a basic form' do
45
+ out = form_for(@data, :method => :post)
46
+ assert(<<-FORM, out)
47
+ <form method="post"></form>
48
+ FORM
49
+ end
50
+
51
+ it 'Make a form with the method and action attributes specified' do
52
+ out = form_for(@data, :method => :post, :action => '/')
53
+ assert(<<-FORM, out)
54
+ <form method="post" action="/"></form>
55
+ FORM
56
+ end
57
+
58
+ it 'Make a form with a method, action and a name attribute' do
59
+ out = form_for(@data, :method => :post, :action => '/', :name => :spec)
60
+ assert(<<-FORM, out)
61
+ <form method="post" action="/" name="spec">
62
+ </form>
63
+ FORM
64
+ end
65
+
66
+ it 'Make a form with a class and an ID' do
67
+ out = form_for(@data, :class => :foo, :id => :bar)
68
+ assert(<<-FORM, out)
69
+ <form class="foo" id="bar">
70
+ </form>
71
+ FORM
72
+ end
73
+
74
+ it 'Make a form with a fieldset and a legend' do
75
+ out = form_for(@data, :method => :get) do |f|
76
+ f.fieldset do
77
+ f.legend('The Form')
78
+ end
79
+ end
80
+
81
+ assert(<<-FORM, out)
82
+ <form method="get">
83
+ <fieldset>
84
+ <legend>The Form</legend>
85
+ </fieldset>
86
+ </form>
87
+ FORM
88
+ end
89
+
90
+ # ------------------------------------------------
91
+ # Text fields
92
+
93
+ it 'Make a form with input_text(label, value)' do
94
+ out = form_for(@data, :method => :get) do |f|
95
+ f.input_text 'Username', :username
96
+ end
97
+
98
+ assert(<<-FORM, out)
99
+ <form method="get">
100
+ <p>
101
+ <label for="form_username">Username</label>
102
+ <input type="text" name="username" id="form_username" value="mrfoo" />
103
+ </p>
104
+ </form>
105
+ FORM
106
+ end
107
+
108
+ it 'Make a form with input_text(username, label, value)' do
109
+ out = form_for(@data, :method => :get) do |f|
110
+ f.input_text 'Username', :username, :value => 'mrboo'
111
+ end
112
+
113
+ assert(<<-FORM, out)
114
+ <form method="get">
115
+ <p>
116
+ <label for="form_username">Username</label>
117
+ <input type="text" name="username" id="form_username" value="mrboo" />
118
+ </p>
119
+ </form>
120
+ FORM
121
+ end
122
+
123
+ it 'Make a form with input_text(label, name, size, id)' do
124
+ out = form_for(@data, :method => :get) do |f|
125
+ f.input_text 'Username', :username, :size => 10, :id => 'my_id'
126
+ end
127
+
128
+ assert(<<-FORM, out)
129
+ <form method="get">
130
+ <p>
131
+ <label for="my_id">Username</label>
132
+ <input size="10" type="text" name="username" id="my_id" value="mrfoo" />
133
+ </p>
134
+ </form>
135
+ FORM
136
+ end
137
+
138
+ # ------------------------------------------------
139
+ # Password fields
140
+
141
+ it 'Make a form with input_password(label, name)' do
142
+ out = form_for(nil , :method => :get) do |f|
143
+ f.input_password 'Password', :password
144
+ end
145
+
146
+ assert(<<-FORM, out)
147
+ <form method="get">
148
+ <p>
149
+ <label for="form_password">Password</label>
150
+ <input type="password" name="password" id="form_password" />
151
+ </p>
152
+ </form>
153
+ FORM
154
+ end
155
+
156
+ it 'Make a form with input_password(label, name, value, class)' do
157
+ out = form_for(@data, :method => :get) do |f|
158
+ f.input_password 'Password', :password, :value => 'super-secret-password', :class => 'password_class'
159
+ end
160
+
161
+ assert(<<-FORM, out)
162
+ <form method="get">
163
+ <p>
164
+ <label for="form_password">Password</label>
165
+ <input class="password_class" type="password" name="password" id="form_password" value="super-secret-password" />
166
+ </p>
167
+ </form>
168
+ FORM
169
+ end
170
+
171
+ # ------------------------------------------------
172
+ # Submit buttons
173
+
174
+ it 'Make a form with input_submit()' do
175
+ out = form_for(@data, :method => :get) do |f|
176
+ f.input_submit
177
+ end
178
+
179
+ assert(<<-FORM, out)
180
+ <form method="get">
181
+ <p>
182
+ <input type="submit" />
183
+ </p>
184
+ </form>
185
+ FORM
186
+ end
187
+
188
+ it 'Make a form with input_submit(value)' do
189
+ out = form_for(@data, :method => :get) do |f|
190
+ f.input_submit 'Send'
191
+ end
192
+
193
+ assert(<<-FORM, out)
194
+ <form method="get">
195
+ <p>
196
+ <input type="submit" value="Send" />
197
+ </p>
198
+ </form>
199
+ FORM
200
+ end
201
+
202
+ # ------------------------------------------------
203
+ # Checkboxes
204
+
205
+ it 'Make a form with input_checkbox(label, name)' do
206
+ out = form_for(@data, :method => :get) do |f|
207
+ f.input_checkbox 'Assigned', :assigned
208
+ end
209
+
210
+ assert(<<-FORM, out)
211
+ <form method="get">
212
+ <p>
213
+ <label for="form_assigned_0">Assigned</label>
214
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_0" value="bacon" /> bacon</span>
215
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_1" value="steak" /> steak</span>
216
+ </p>
217
+ </form>
218
+ FORM
219
+ end
220
+
221
+ it 'Make a form with input_checkbox(label, name, checked)' do
222
+ out = form_for(@data, :method => :get) do |f|
223
+ f.input_checkbox 'Assigned', :assigned, 'bacon'
224
+ end
225
+
226
+ assert(<<-FORM, out)
227
+ <form method="get">
228
+ <p>
229
+ <label for="form_assigned_0">Assigned</label>
230
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_0" checked="checked" value="bacon" /> bacon</span>
231
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_1" value="steak" /> steak</span>
232
+ </p>
233
+ </form>
234
+ FORM
235
+ end
236
+
237
+ it 'Make a form with input_checkbox(label, name, checked, values, default)' do
238
+ out = form_for(@data, :method => :get) do |f|
239
+ f.input_checkbox 'Assigned', :assigned, 'boo', :values => ['boo']
240
+ end
241
+
242
+ assert(<<-FORM, out)
243
+ <form method="get">
244
+ <p>
245
+ <label for="form_assigned_0">Assigned</label>
246
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_0" checked="checked" value="boo" /> boo</span>
247
+ </p>
248
+ </form>
249
+ FORM
250
+ end
251
+
252
+ it 'Make a form with input_checkbox and check multiple values using an array' do
253
+ out = form_for(@data, :method => :get) do |f|
254
+ f.input_checkbox 'Assigned', :assigned, ['boo'], :values => ['boo', 'foo']
255
+ end
256
+
257
+ assert(<<-FORM, out)
258
+ <form method="get">
259
+ <p>
260
+ <label for="form_assigned_0">Assigned</label>
261
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_0" checked="checked" value="boo" /> boo</span>
262
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_1" value="foo" /> foo</span>
263
+ </p>
264
+ </form>
265
+ FORM
266
+ end
267
+
268
+ it 'Make a form with input_checkbox and check multiple values using a hash' do
269
+ out = form_for(@data, :method => :get) do |f|
270
+ f.input_checkbox 'Assigned', :assigned, ['boo'], :values => {'Boo' => 'boo'}
271
+ end
272
+
273
+ assert(<<-FORM, out)
274
+ <form method="get">
275
+ <p>
276
+ <label for="form_assigned_0">Assigned</label>
277
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_0" checked="checked" value="boo" /> Boo</span>
278
+ </p>
279
+ </form>
280
+ FORM
281
+ end
282
+
283
+ it 'Make a form with input_checkbox(label, name) but hide the value of the checkbox' do
284
+ out = form_for(@data, :method => :get) do |f|
285
+ f.input_checkbox 'Assigned', :assigned, nil, :show_value => false
286
+ end
287
+
288
+ assert(<<-FORM, out)
289
+ <form method="get">
290
+ <p>
291
+ <label for="form_assigned_0">Assigned</label>
292
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_0" value="bacon" /></span>
293
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_1" value="steak" /></span>
294
+ </p>
295
+ </form>
296
+ FORM
297
+ end
298
+
299
+ it 'Make a form with input_checkbox(label, name) but hide thelabel' do
300
+ out = form_for(@data, :method => :get) do |f|
301
+ f.input_checkbox 'Assigned', :assigned, nil, :show_label => false
302
+ end
303
+
304
+ assert(<<-FORM, out)
305
+ <form method="get">
306
+ <p>
307
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_0" value="bacon" /> bacon</span>
308
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_1" value="steak" /> steak</span>
309
+ </p>
310
+ </form>
311
+ FORM
312
+ end
313
+
314
+ # ------------------------------------------------
315
+ # Checkboxes using a hash
316
+
317
+ it 'Make a form with input_checkbox(label, name) using a hash' do
318
+ out = form_for(@data, :method => :get) do |f|
319
+ f.input_checkbox 'Assigned', :assigned_hash
320
+ end
321
+
322
+ assert(<<-FORM, out)
323
+ <form method="get">
324
+ <p>
325
+ <label for="form_assigned_hash_0">Assigned</label>
326
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned_hash[]" id="form_assigned_hash_0" value="bacon" /> Bacon</span>
327
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned_hash[]" id="form_assigned_hash_1" value="steak" /> Steak</span>
328
+ </p>
329
+ </form>
330
+ FORM
331
+ end
332
+
333
+ it 'Make a form with input_checkbox(label, name, checked) using a hash' do
334
+ out = form_for(@data, :method => :get) do |f|
335
+ f.input_checkbox 'Assigned', :assigned_hash, 'bacon'
336
+ end
337
+
338
+ assert(<<-FORM, out)
339
+ <form method="get">
340
+ <p>
341
+ <label for="form_assigned_hash_0">Assigned</label>
342
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned_hash[]" id="form_assigned_hash_0" checked="checked" value="bacon" /> Bacon</span>
343
+ <span class="checkbox_wrap"><input type="checkbox" name="assigned_hash[]" id="form_assigned_hash_1" value="steak" /> Steak</span>
344
+ </p>
345
+ </form>
346
+ FORM
347
+ end
348
+
349
+ # ------------------------------------------------
350
+ # Radio buttons
351
+
352
+ it 'Make a form with input_radio(label, name)' do
353
+ out = form_for(@data, :method => :get) do |f|
354
+ f.input_radio 'Assigned', :assigned
355
+ end
356
+
357
+ assert(<<-FORM, out)
358
+ <form method="get">
359
+ <p>
360
+ <label for="form_assigned_0">Assigned</label>
361
+ <span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_0" value="bacon" /> bacon</span>
362
+ <span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_1" value="steak" /> steak</span>
363
+ </p>
364
+ </form>
365
+ FORM
366
+ end
367
+
368
+ it 'Make a form with input_radio(label, name, checked)' do
369
+ out = form_for(@data, :method => :get) do |f|
370
+ f.input_radio 'Assigned', :assigned, 'bacon'
371
+ end
372
+
373
+ assert(<<-FORM, out)
374
+ <form method="get">
375
+ <p>
376
+ <label for="form_assigned_0">Assigned</label>
377
+ <span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_0" checked="checked" value="bacon" /> bacon</span>
378
+ <span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_1" value="steak" /> steak</span>
379
+ </p>
380
+ </form>
381
+ FORM
382
+ end
383
+
384
+ it 'Make a form with input_radio(label, name, checked, values, default)' do
385
+ out = form_for(@data, :method => :get) do |f|
386
+ f.input_radio 'Assigned', :assigned, 'boo', :values => ['boo']
387
+ end
388
+
389
+ assert(<<-FORM, out)
390
+ <form method="get">
391
+ <p>
392
+ <label for="form_assigned_0">Assigned</label>
393
+ <span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_0" checked="checked" value="boo" /> boo</span>
394
+ </p>
395
+ </form>
396
+ FORM
397
+ end
398
+
399
+ it 'Make a form with input_radio(label, name) but hide the value' do
400
+ out = form_for(@data, :method => :get) do |f|
401
+ f.input_radio 'Assigned', :assigned, nil, :show_value => false
402
+ end
403
+
404
+ assert(<<-FORM, out)
405
+ <form method="get">
406
+ <p>
407
+ <label for="form_assigned_0">Assigned</label>
408
+ <span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_0" value="bacon" /></span>
409
+ <span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_1" value="steak" /></span>
410
+ </p>
411
+ </form>
412
+ FORM
413
+ end
414
+
415
+ it 'Make a form with input_radio(label, name) but hide the label' do
416
+ out = form_for(@data, :method => :get) do |f|
417
+ f.input_radio 'Assigned', :assigned, nil, :show_label => false
418
+ end
419
+
420
+ assert(<<-FORM, out)
421
+ <form method="get">
422
+ <p>
423
+ <span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_0" value="bacon" /> bacon</span>
424
+ <span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_1" value="steak" /> steak</span>
425
+ </p>
426
+ </form>
427
+ FORM
428
+ end
429
+
430
+
431
+ # ------------------------------------------------
432
+ # Radio buttons using a hash
433
+
434
+ it 'Make a form with input_radio(label, name) using a hash' do
435
+ out = form_for(@data, :method => :get) do |f|
436
+ f.input_radio 'Assigned', :assigned_hash
437
+ end
438
+
439
+ assert(<<-FORM, out)
440
+ <form method="get">
441
+ <p>
442
+ <label for="form_assigned_hash_0">Assigned</label>
443
+ <span class="radio_wrap"><input type="radio" name="assigned_hash" id="form_assigned_hash_0" value="bacon" /> Bacon</span>
444
+ <span class="radio_wrap"><input type="radio" name="assigned_hash" id="form_assigned_hash_1" value="steak" /> Steak</span>
445
+ </p>
446
+ </form>
447
+ FORM
448
+ end
449
+
450
+ it 'Make a form with input_radio(label, name, checked) using a hash' do
451
+ out = form_for(@data, :method => :get) do |f|
452
+ f.input_radio 'Assigned', :assigned_hash, 'bacon'
453
+ end
454
+
455
+ assert(<<-FORM, out)
456
+ <form method="get">
457
+ <p>
458
+ <label for="form_assigned_hash_0">Assigned</label>
459
+ <span class="radio_wrap"><input type="radio" name="assigned_hash" id="form_assigned_hash_0" checked="checked" value="bacon" /> Bacon</span>
460
+ <span class="radio_wrap"><input type="radio" name="assigned_hash" id="form_assigned_hash_1" value="steak" /> Steak</span>
461
+ </p>
462
+ </form>
463
+ FORM
464
+ end
465
+
466
+ # ------------------------------------------------
467
+ # File uploading
468
+
469
+ it 'Make a form with input_file(label, name)' do
470
+ out = form_for(@data, :method => :get) do |f|
471
+ f.input_file 'File', :file
472
+ end
473
+
474
+ assert(<<-FORM, out)
475
+ <form method="get">
476
+ <p>
477
+ <label for="form_file">File</label>
478
+ <input type="file" name="file" id="form_file" />
479
+ </p>
480
+ </form>
481
+ FORM
482
+ end
483
+
484
+ it 'Make a form with input_file(label, name)' do
485
+ out = form_for(@data, :method => :get) do |f|
486
+ f.input_file 'File', :file, :id => 'awesome_file'
487
+ end
488
+
489
+ assert(<<-FORM, out)
490
+ <form method="get">
491
+ <p>
492
+ <label for="awesome_file">File</label>
493
+ <input type="file" name="file" id="awesome_file" />
494
+ </p>
495
+ </form>
496
+ FORM
497
+ end
498
+
499
+ # ------------------------------------------------
500
+ # Hidden fields
501
+
502
+ it 'Make a form with input_hidden(name, value)' do
503
+ out = form_for(@data, :method => :get) do |f|
504
+ f.input_hidden :username, 'Bob Ross'
505
+ end
506
+
507
+ assert(<<-FORM, out)
508
+ <form method="get">
509
+ <input type="hidden" name="username" value="Bob Ross" />
510
+ </form>
511
+ FORM
512
+ end
513
+
514
+ it 'Make a form with input_hidden(name, value, id)' do
515
+ out = form_for(@data, :method => :get) do |f|
516
+ f.input_hidden :username, 'Bob Ross', :id => 'test'
517
+ end
518
+
519
+ assert(<<-FORM, out)
520
+ <form method="get">
521
+ <input type="hidden" name="username" value="Bob Ross" id="test" />
522
+ </form>
523
+ FORM
524
+ end
525
+
526
+ # ------------------------------------------------
527
+ # Textarea elements
528
+
529
+ it 'Make a form with textarea(label, name)' do
530
+ out = form_for(@data, :method => :get) do |f|
531
+ f.textarea 'Message', :message
532
+ end
533
+
534
+ assert(<<-FORM, out)
535
+ <form method="get">
536
+ <p>
537
+ <label for="form_message">Message</label>
538
+ <textarea name="message" id="form_message">Hello, textarea!</textarea>
539
+ </p>
540
+ </form>
541
+ FORM
542
+ end
543
+
544
+ it 'Make a form with textarea(label, name, value)' do
545
+ out = form_for(@data, :method => :get) do |f|
546
+ f.textarea 'Message', :message, :value => 'stuff'
547
+ end
548
+
549
+ assert(<<-FORM, out)
550
+ <form method="get">
551
+ <p>
552
+ <label for="form_message">Message</label>
553
+ <textarea name="message" id="form_message">stuff</textarea>
554
+ </p>
555
+ </form>
556
+ FORM
557
+ end
558
+
559
+ # ------------------------------------------------
560
+ # Select elements
561
+
562
+ it 'Make a form with select(label, name) from a hash' do
563
+ out = form_for(@data, :method => :get) do |f|
564
+ f.select 'Server', :servers_hash
565
+ end
566
+
567
+ assert(<<-FORM, out)
568
+ <form method="get">
569
+ <p>
570
+ <label for="form_servers_hash">Server</label>
571
+ <select id="form_servers_hash" size="3" name="servers_hash">
572
+ <option value="webrick">WEBrick</option>
573
+ <option value="mongrel">Mongrel</option>
574
+ <option value="thin">Thin</option>
575
+ </select>
576
+ </p>
577
+ </form>
578
+ FORM
579
+ end
580
+
581
+ it 'Make a form with select(label, name, selected) from a hash' do
582
+ out = form_for(@data, :method => :get) do |f|
583
+ f.select 'Server', :servers_hash, :selected => :mongrel
584
+ end
585
+
586
+ assert(<<-FORM, out)
587
+ <form method="get">
588
+ <p>
589
+ <label for="form_servers_hash">Server</label>
590
+ <select id="form_servers_hash" size="3" name="servers_hash">
591
+ <option value="webrick">WEBrick</option>
592
+ <option value="mongrel" selected="selected">Mongrel</option>
593
+ <option value="thin">Thin</option>
594
+ </select>
595
+ </p>
596
+ </form>
597
+ FORM
598
+ end
599
+
600
+ it 'Make a form with select(label, name) from an array' do
601
+ out = form_for(@data, :method => :get) do |f|
602
+ f.select 'Server', :servers_array
603
+ end
604
+
605
+ assert(<<-FORM, out)
606
+ <form method="get">
607
+ <p>
608
+ <label for="form_servers_array">Server</label>
609
+ <select id="form_servers_array" size="3" name="servers_array">
610
+ <option value="WEBrick">WEBrick</option>
611
+ <option value="Mongrel">Mongrel</option>
612
+ <option value="Thin">Thin</option>
613
+ </select>
614
+ </p>
615
+ </form>
616
+ FORM
617
+ end
618
+
619
+ it 'Make a form with select(label, name, selected) from an array' do
620
+ out = form_for(@data, :method => :get) do |f|
621
+ f.select 'Server', :servers_array, :selected => 'Mongrel'
622
+ end
623
+
624
+ assert(<<-FORM, out)
625
+ <form method="get">
626
+ <p>
627
+ <label for="form_servers_array">Server</label>
628
+ <select id="form_servers_array" size="3" name="servers_array">
629
+ <option value="WEBrick">WEBrick</option>
630
+ <option value="Mongrel" selected="selected">Mongrel</option>
631
+ <option value="Thin">Thin</option>
632
+ </select>
633
+ </p>
634
+ </form>
635
+ FORM
636
+ end
637
+
638
+ # ------------------------------------------------
639
+ # Select elements with custom values
640
+
641
+ it 'Make a form with select(label, name) from a hash using custom values' do
642
+ out = form_for(@data, :method => :get) do |f|
643
+ f.select 'People', :people_hash, :values => {:chuck => 'Chuck', :bob => 'Bob'}
644
+ end
645
+
646
+ assert(<<-FORM, out)
647
+ <form method="get">
648
+ <p>
649
+ <label for="form_people_hash">People</label>
650
+ <select id="form_people_hash" size="2" name="people_hash">
651
+ <option value="chuck">Chuck</option>
652
+ <option value="bob">Bob</option>
653
+ </select>
654
+ </p>
655
+ </form>
656
+ FORM
657
+ end
658
+
659
+ it 'Make a form with select(label, name, selected) from a hash using custom values' do
660
+ out = form_for(@data, :method => :get) do |f|
661
+ f.select 'People', :people_hash, :values => {:chuck => 'Chuck', :bob => 'Bob'}, :selected => :chuck
662
+ end
663
+
664
+ assert(<<-FORM, out)
665
+ <form method="get">
666
+ <p>
667
+ <label for="form_people_hash">People</label>
668
+ <select id="form_people_hash" size="2" name="people_hash">
669
+ <option value="chuck" selected="selected">Chuck</option>
670
+ <option value="bob">Bob</option>
671
+ </select>
672
+ </p>
673
+ </form>
674
+ FORM
675
+ end
676
+
677
+ it 'Make a form with select(label, name) from an array using custom values' do
678
+ out = form_for(@data, :method => :get) do |f|
679
+ f.select 'People', :people_array, :values => ['Chuck', 'Bob']
680
+ end
681
+
682
+ assert(<<-FORM, out)
683
+ <form method="get">
684
+ <p>
685
+ <label for="form_people_array">People</label>
686
+ <select id="form_people_array" size="2" name="people_array">
687
+ <option value="Chuck">Chuck</option>
688
+ <option value="Bob">Bob</option>
689
+ </select>
690
+ </p>
691
+ </form>
692
+ FORM
693
+ end
694
+
695
+ it 'Make a form with select(label, name, selected) from an array using custom values' do
696
+ out = form_for(@data, :method => :get) do |f|
697
+ f.select 'People', :people_array, :values => ['Chuck', 'Bob'], :selected => 'Chuck'
698
+ end
699
+
700
+ assert(<<-FORM, out)
701
+ <form method="get">
702
+ <p>
703
+ <label for="form_people_array">People</label>
704
+ <select id="form_people_array" size="2" name="people_array">
705
+ <option value="Chuck" selected="selected">Chuck</option>
706
+ <option value="Bob">Bob</option>
707
+ </select>
708
+ </p>
709
+ </form>
710
+ FORM
711
+ end
712
+
713
+ it 'Make a form with multiple select(label, name) from a hash' do
714
+ out = form_for(@data, :method => :get) do |f|
715
+ f.select 'Server', :servers_hash, :multiple => :multiple
716
+ end
717
+
718
+ assert(<<-FORM, out)
719
+ <form method="get">
720
+ <p>
721
+ <label for="form_servers_hash">Server</label>
722
+ <select id="form_servers_hash" size="3" name="servers_hash[]" multiple="multiple">
723
+ <option value="webrick">WEBrick</option>
724
+ <option value="mongrel">Mongrel</option>
725
+ <option value="thin">Thin</option>
726
+ </select>
727
+ </p>
728
+ </form>
729
+ FORM
730
+ end
731
+
732
+ it 'Make a form with multiple select(label, name, selected) from a hash' do
733
+ out = form_for(@data, :method => :get) do |f|
734
+ f.select 'Server', :servers_hash, :multiple => :multiple, :selected => :webrick
735
+ end
736
+
737
+ assert(<<-FORM, out)
738
+ <form method="get">
739
+ <p>
740
+ <label for="form_servers_hash">Server</label>
741
+ <select id="form_servers_hash" size="3" name="servers_hash[]" multiple="multiple">
742
+ <option value="webrick" selected="selected">WEBrick</option>
743
+ <option value="mongrel">Mongrel</option>
744
+ <option value="thin">Thin</option>
745
+ </select>
746
+ </p>
747
+ </form>
748
+ FORM
749
+ end
750
+
751
+ it 'Make a form with multiple select(label, name, selected) from a hash' do
752
+ out = form_for(@data, :method => :get) do |f|
753
+ f.select 'Server', :servers_hash, :multiple => :multiple, :selected => [:webrick, :mongrel]
754
+ end
755
+
756
+ assert(<<-FORM, out)
757
+ <form method="get">
758
+ <p>
759
+ <label for="form_servers_hash">Server</label>
760
+ <select id="form_servers_hash" size="3" name="servers_hash[]" multiple="multiple">
761
+ <option value="webrick" selected="selected">WEBrick</option>
762
+ <option value="mongrel" selected="selected">Mongrel</option>
763
+ <option value="thin">Thin</option>
764
+ </select>
765
+ </p>
766
+ </form>
767
+ FORM
768
+ end
769
+
770
+ # ------------------------------------------------
771
+ # Error messages
772
+
773
+ it 'Insert an error message' do
774
+ form_error :username, 'May not be empty'
775
+ out = form_for(@data, :method => :get) do |f|
776
+ f.input_text 'Username', :username
777
+ end
778
+
779
+ assert(<<-FORM, out)
780
+ <form method="get">
781
+ <p>
782
+ <label for="form_username">Username <span class="error">May not be empty</span></label>
783
+ <input type="text" name="username" id="form_username" value="mrfoo" />
784
+ </p>
785
+ </form>
786
+ FORM
787
+ end
788
+
789
+ it 'Retrieve all errors messages from the model' do
790
+ @data.errors = {:username => "May not be empty"}
791
+ form_errors_from_model(@data)
792
+
793
+ out = form_for(@data, :method => :get) do |f|
794
+ f.input_text 'Username', :username
795
+ end
796
+
797
+ assert(<<-FORM, out)
798
+ <form method="get">
799
+ <p>
800
+ <label for="form_username">Username <span class="error">May not be empty</span></label>
801
+ <input type="text" name="username" id="form_username" value="mrfoo" />
802
+ </p>
803
+ </form>
804
+ FORM
805
+ end
806
+
807
+ end