Pistos-ramaze 2008.09

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 (588) hide show
  1. data/README.markdown +481 -0
  2. data/Rakefile +228 -0
  3. data/benchmark/results.txt +131 -0
  4. data/benchmark/run.rb +362 -0
  5. data/benchmark/suite/minimal.rb +13 -0
  6. data/benchmark/suite/no_informer.rb +9 -0
  7. data/benchmark/suite/no_sessions.rb +10 -0
  8. data/benchmark/suite/no_template.rb +9 -0
  9. data/benchmark/suite/simple.rb +7 -0
  10. data/benchmark/suite/template_amrita2.rb +17 -0
  11. data/benchmark/suite/template_builder.rb +12 -0
  12. data/benchmark/suite/template_erubis.rb +10 -0
  13. data/benchmark/suite/template_ezamar.rb +10 -0
  14. data/benchmark/suite/template_haml.rb +15 -0
  15. data/benchmark/suite/template_liquid.rb +13 -0
  16. data/benchmark/suite/template_markaby.rb +11 -0
  17. data/benchmark/suite/template_nagoro.rb +10 -0
  18. data/benchmark/suite/template_redcloth.rb +15 -0
  19. data/benchmark/suite/template_tenjin.rb +10 -0
  20. data/benchmark/test.rb +35 -0
  21. data/bin/ramaze +80 -0
  22. data/doc/AUTHORS +29 -0
  23. data/doc/CHANGELOG +19530 -0
  24. data/doc/COPYING +56 -0
  25. data/doc/FAQ +92 -0
  26. data/doc/GPL +339 -0
  27. data/doc/INSTALL +92 -0
  28. data/doc/LEGAL +26 -0
  29. data/doc/TODO +29 -0
  30. data/doc/meta/announcement.txt +99 -0
  31. data/doc/meta/configuration.txt +163 -0
  32. data/doc/meta/internals.txt +278 -0
  33. data/doc/meta/users.kml +64 -0
  34. data/doc/readme_chunks/appendix.txt +10 -0
  35. data/doc/readme_chunks/examples.txt +38 -0
  36. data/doc/readme_chunks/features.txt +148 -0
  37. data/doc/readme_chunks/getting_help.txt +5 -0
  38. data/doc/readme_chunks/getting_started.txt +18 -0
  39. data/doc/readme_chunks/installing.txt +92 -0
  40. data/doc/readme_chunks/introduction.txt +18 -0
  41. data/doc/readme_chunks/principles.txt +56 -0
  42. data/doc/readme_chunks/thanks.txt +59 -0
  43. data/doc/tutorial/todolist.html +742 -0
  44. data/doc/tutorial/todolist.mkd +787 -0
  45. data/examples/app/auth/auth.rb +54 -0
  46. data/examples/app/auth/template/layout.haml +20 -0
  47. data/examples/app/auth/template/login.haml +16 -0
  48. data/examples/app/blog/README +3 -0
  49. data/examples/app/blog/controller/main.rb +29 -0
  50. data/examples/app/blog/model/entry.rb +30 -0
  51. data/examples/app/blog/public/styles/blog.css +132 -0
  52. data/examples/app/blog/spec/blog.rb +87 -0
  53. data/examples/app/blog/start.rb +7 -0
  54. data/examples/app/blog/view/edit.xhtml +17 -0
  55. data/examples/app/blog/view/index.xhtml +17 -0
  56. data/examples/app/blog/view/layout.xhtml +11 -0
  57. data/examples/app/blog/view/new.xhtml +16 -0
  58. data/examples/app/chat/model/history.rb +36 -0
  59. data/examples/app/chat/model/message.rb +7 -0
  60. data/examples/app/chat/public/css/chat.css +13 -0
  61. data/examples/app/chat/public/js/chat.js +22 -0
  62. data/examples/app/chat/public/js/jquery.js +3436 -0
  63. data/examples/app/chat/start.rb +40 -0
  64. data/examples/app/chat/view/chat.xhtml +9 -0
  65. data/examples/app/chat/view/index.xhtml +7 -0
  66. data/examples/app/chat/view/layout.xhtml +13 -0
  67. data/examples/app/localization/start.rb +35 -0
  68. data/examples/app/rapaste/Rakefile +34 -0
  69. data/examples/app/rapaste/controller/paste.rb +101 -0
  70. data/examples/app/rapaste/model/paste.rb +58 -0
  71. data/examples/app/rapaste/public/css/active4d.css +114 -0
  72. data/examples/app/rapaste/public/css/all_hallows_eve.css +72 -0
  73. data/examples/app/rapaste/public/css/amy.css +147 -0
  74. data/examples/app/rapaste/public/css/blackboard.css +88 -0
  75. data/examples/app/rapaste/public/css/brilliance_black.css +605 -0
  76. data/examples/app/rapaste/public/css/brilliance_dull.css +599 -0
  77. data/examples/app/rapaste/public/css/cobalt.css +149 -0
  78. data/examples/app/rapaste/public/css/dawn.css +121 -0
  79. data/examples/app/rapaste/public/css/display.css +197 -0
  80. data/examples/app/rapaste/public/css/eiffel.css +121 -0
  81. data/examples/app/rapaste/public/css/espresso_libre.css +109 -0
  82. data/examples/app/rapaste/public/css/idle.css +62 -0
  83. data/examples/app/rapaste/public/css/iplastic.css +80 -0
  84. data/examples/app/rapaste/public/css/lazy.css +73 -0
  85. data/examples/app/rapaste/public/css/mac_classic.css +123 -0
  86. data/examples/app/rapaste/public/css/magicwb_amiga.css +104 -0
  87. data/examples/app/rapaste/public/css/pastels_on_dark.css +188 -0
  88. data/examples/app/rapaste/public/css/slush_poppies.css +85 -0
  89. data/examples/app/rapaste/public/css/spacecadet.css +51 -0
  90. data/examples/app/rapaste/public/css/sunburst.css +180 -0
  91. data/examples/app/rapaste/public/css/twilight.css +137 -0
  92. data/examples/app/rapaste/public/css/zenburnesque.css +91 -0
  93. data/examples/app/rapaste/public/js/jquery.js +11 -0
  94. data/examples/app/rapaste/spec/rapaste.rb +51 -0
  95. data/examples/app/rapaste/start.rb +25 -0
  96. data/examples/app/rapaste/view/copy.xhtml +10 -0
  97. data/examples/app/rapaste/view/index.xhtml +9 -0
  98. data/examples/app/rapaste/view/layout.xhtml +25 -0
  99. data/examples/app/rapaste/view/list.xhtml +29 -0
  100. data/examples/app/rapaste/view/search.xhtml +41 -0
  101. data/examples/app/rapaste/view/view.xhtml +37 -0
  102. data/examples/app/sourceview/public/coderay.css +104 -0
  103. data/examples/app/sourceview/public/images/file.gif +0 -0
  104. data/examples/app/sourceview/public/images/folder.gif +0 -0
  105. data/examples/app/sourceview/public/images/tv-collapsable-last.gif +0 -0
  106. data/examples/app/sourceview/public/images/tv-collapsable.gif +0 -0
  107. data/examples/app/sourceview/public/images/tv-expandable-last.gif +0 -0
  108. data/examples/app/sourceview/public/images/tv-expandable.gif +0 -0
  109. data/examples/app/sourceview/public/images/tv-item-last.gif +0 -0
  110. data/examples/app/sourceview/public/images/tv-item.gif +0 -0
  111. data/examples/app/sourceview/public/jquery.js +11 -0
  112. data/examples/app/sourceview/public/jquery.treeview.css +48 -0
  113. data/examples/app/sourceview/public/jquery.treeview.js +223 -0
  114. data/examples/app/sourceview/public/sourceview.js +52 -0
  115. data/examples/app/sourceview/sourceview.rb +77 -0
  116. data/examples/app/sourceview/template/index.haml +59 -0
  117. data/examples/app/todolist/README +1 -0
  118. data/examples/app/todolist/public/favicon.ico +0 -0
  119. data/examples/app/todolist/public/js/jquery.js +1923 -0
  120. data/examples/app/todolist/public/ramaze.png +0 -0
  121. data/examples/app/todolist/spec/todolist.rb +132 -0
  122. data/examples/app/todolist/src/controller/main.rb +70 -0
  123. data/examples/app/todolist/src/element/page.rb +31 -0
  124. data/examples/app/todolist/src/model.rb +14 -0
  125. data/examples/app/todolist/start.rb +11 -0
  126. data/examples/app/todolist/template/index.xhtml +17 -0
  127. data/examples/app/todolist/template/new.xhtml +7 -0
  128. data/examples/app/upload/start.rb +19 -0
  129. data/examples/app/upload/view/index.xhtml +25 -0
  130. data/examples/app/whywiki/spec/whywiki.rb +58 -0
  131. data/examples/app/whywiki/start.rb +46 -0
  132. data/examples/app/whywiki/template/edit.xhtml +14 -0
  133. data/examples/app/whywiki/template/show.xhtml +18 -0
  134. data/examples/app/wikore/spec/wikore.rb +111 -0
  135. data/examples/app/wikore/src/controller.rb +80 -0
  136. data/examples/app/wikore/src/model.rb +53 -0
  137. data/examples/app/wikore/start.rb +9 -0
  138. data/examples/app/wikore/template/index.xhtml +8 -0
  139. data/examples/app/wiktacular/README +2 -0
  140. data/examples/app/wiktacular/mkd/link/2007-07-20_19-45-51.mkd +1 -0
  141. data/examples/app/wiktacular/mkd/link/current.mkd +1 -0
  142. data/examples/app/wiktacular/mkd/main/2007-07-20_16-31-33.mkd +1 -0
  143. data/examples/app/wiktacular/mkd/main/2007-07-20_19-21-12.mkd +1 -0
  144. data/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +2 -0
  145. data/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +2 -0
  146. data/examples/app/wiktacular/mkd/main/current.mkd +2 -0
  147. data/examples/app/wiktacular/mkd/markdown/current.mkd +3 -0
  148. data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
  149. data/examples/app/wiktacular/mkd/testing/2007-07-20_19-43-50.mkd +3 -0
  150. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-01.mkd +11 -0
  151. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-32.mkd +13 -0
  152. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-08.mkd +17 -0
  153. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-54.mkd +17 -0
  154. data/examples/app/wiktacular/mkd/testing/current.mkd +17 -0
  155. data/examples/app/wiktacular/public/favicon.ico +0 -0
  156. data/examples/app/wiktacular/public/screen.css +72 -0
  157. data/examples/app/wiktacular/spec/wiktacular.rb +157 -0
  158. data/examples/app/wiktacular/src/controller.rb +55 -0
  159. data/examples/app/wiktacular/src/model.rb +102 -0
  160. data/examples/app/wiktacular/start.rb +8 -0
  161. data/examples/app/wiktacular/template/edit.xhtml +6 -0
  162. data/examples/app/wiktacular/template/html_layout.xhtml +27 -0
  163. data/examples/app/wiktacular/template/index.xhtml +9 -0
  164. data/examples/app/wiktacular/template/new.xhtml +6 -0
  165. data/examples/basic/element.rb +45 -0
  166. data/examples/basic/gestalt.rb +27 -0
  167. data/examples/basic/hello.rb +15 -0
  168. data/examples/basic/layout.rb +28 -0
  169. data/examples/basic/linking.rb +29 -0
  170. data/examples/basic/simple.rb +56 -0
  171. data/examples/helpers/cache.rb +31 -0
  172. data/examples/helpers/form_with_sequel.rb +24 -0
  173. data/examples/helpers/httpdigest.rb +50 -0
  174. data/examples/helpers/identity.rb +18 -0
  175. data/examples/helpers/nitro_form.rb +23 -0
  176. data/examples/helpers/paginate.rb +71 -0
  177. data/examples/helpers/provide.rb +23 -0
  178. data/examples/helpers/rest.rb +28 -0
  179. data/examples/helpers/simple_captcha.rb +29 -0
  180. data/examples/misc/css.rb +37 -0
  181. data/examples/misc/facebook.rb +159 -0
  182. data/examples/misc/memleak_detector.rb +32 -0
  183. data/examples/misc/nagoro_element.rb +43 -0
  184. data/examples/misc/ramaise.rb +132 -0
  185. data/examples/misc/rapp.rb +45 -0
  186. data/examples/misc/sequel_scaffolding.rb +34 -0
  187. data/examples/misc/simple_auth.rb +35 -0
  188. data/examples/templates/template/external.amrita +19 -0
  189. data/examples/templates/template/external.haml +22 -0
  190. data/examples/templates/template/external.liquid +28 -0
  191. data/examples/templates/template/external.mab +30 -0
  192. data/examples/templates/template/external.nag +28 -0
  193. data/examples/templates/template/external.redcloth +19 -0
  194. data/examples/templates/template/external.rem +30 -0
  195. data/examples/templates/template/external.rhtml +28 -0
  196. data/examples/templates/template/external.tenjin +28 -0
  197. data/examples/templates/template/external.xsl +57 -0
  198. data/examples/templates/template/external.zmr +28 -0
  199. data/examples/templates/template_amrita2.rb +74 -0
  200. data/examples/templates/template_erubis.rb +53 -0
  201. data/examples/templates/template_ezamar.rb +50 -0
  202. data/examples/templates/template_haml.rb +50 -0
  203. data/examples/templates/template_liquid.rb +65 -0
  204. data/examples/templates/template_markaby.rb +58 -0
  205. data/examples/templates/template_nagoro.rb +51 -0
  206. data/examples/templates/template_redcloth.rb +59 -0
  207. data/examples/templates/template_remarkably.rb +55 -0
  208. data/examples/templates/template_tenjin.rb +53 -0
  209. data/examples/templates/template_xslt.rb +49 -0
  210. data/lib/proto/controller/init.rb +10 -0
  211. data/lib/proto/controller/main.rb +20 -0
  212. data/lib/proto/model/init.rb +4 -0
  213. data/lib/proto/public/css/ramaze_error.css +90 -0
  214. data/lib/proto/public/dispatch.fcgi +11 -0
  215. data/lib/proto/public/favicon.ico +0 -0
  216. data/lib/proto/public/js/jquery.js +3549 -0
  217. data/lib/proto/public/ramaze.png +0 -0
  218. data/lib/proto/spec/main.rb +25 -0
  219. data/lib/proto/start.rb +8 -0
  220. data/lib/proto/start.ru +16 -0
  221. data/lib/proto/view/error.xhtml +64 -0
  222. data/lib/proto/view/index.xhtml +34 -0
  223. data/lib/proto/view/page.xhtml +27 -0
  224. data/lib/ramaze/action/render.rb +191 -0
  225. data/lib/ramaze/action.rb +153 -0
  226. data/lib/ramaze/adapter/base.rb +128 -0
  227. data/lib/ramaze/adapter/cgi.rb +20 -0
  228. data/lib/ramaze/adapter/ebb.rb +18 -0
  229. data/lib/ramaze/adapter/evented_mongrel.rb +7 -0
  230. data/lib/ramaze/adapter/fake.rb +12 -0
  231. data/lib/ramaze/adapter/fcgi.rb +18 -0
  232. data/lib/ramaze/adapter/lsws.rb +19 -0
  233. data/lib/ramaze/adapter/mongrel.rb +21 -0
  234. data/lib/ramaze/adapter/scgi.rb +18 -0
  235. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +7 -0
  236. data/lib/ramaze/adapter/thin.rb +17 -0
  237. data/lib/ramaze/adapter/webrick.rb +43 -0
  238. data/lib/ramaze/adapter.rb +97 -0
  239. data/lib/ramaze/cache/memcached.rb +69 -0
  240. data/lib/ramaze/cache/memory.rb +6 -0
  241. data/lib/ramaze/cache/yaml_store.rb +68 -0
  242. data/lib/ramaze/cache.rb +113 -0
  243. data/lib/ramaze/contrib/auto_params/get_args.rb +58 -0
  244. data/lib/ramaze/contrib/auto_params.rb +135 -0
  245. data/lib/ramaze/contrib/email.rb +84 -0
  246. data/lib/ramaze/contrib/facebook/facebook.rb +171 -0
  247. data/lib/ramaze/contrib/facebook.rb +23 -0
  248. data/lib/ramaze/contrib/file_cache.rb +65 -0
  249. data/lib/ramaze/contrib/gems.rb +78 -0
  250. data/lib/ramaze/contrib/gettext/mo.rb +155 -0
  251. data/lib/ramaze/contrib/gettext/parser.rb +46 -0
  252. data/lib/ramaze/contrib/gettext/po.rb +109 -0
  253. data/lib/ramaze/contrib/gettext.rb +113 -0
  254. data/lib/ramaze/contrib/gzip_filter.rb +69 -0
  255. data/lib/ramaze/contrib/maruku_uv.rb +59 -0
  256. data/lib/ramaze/contrib/profiling.rb +36 -0
  257. data/lib/ramaze/contrib/rest.rb +17 -0
  258. data/lib/ramaze/contrib/sequel/create_join.rb +25 -0
  259. data/lib/ramaze/contrib/sequel/fill.rb +12 -0
  260. data/lib/ramaze/contrib/sequel/form_field.rb +129 -0
  261. data/lib/ramaze/contrib/sequel/image.rb +198 -0
  262. data/lib/ramaze/contrib/sequel/relation.rb +82 -0
  263. data/lib/ramaze/contrib/sequel_cache.rb +92 -0
  264. data/lib/ramaze/contrib.rb +82 -0
  265. data/lib/ramaze/controller/error.rb +46 -0
  266. data/lib/ramaze/controller/main.rb +2 -0
  267. data/lib/ramaze/controller/resolve.rb +273 -0
  268. data/lib/ramaze/controller.rb +280 -0
  269. data/lib/ramaze/current/request.rb +205 -0
  270. data/lib/ramaze/current/response.rb +39 -0
  271. data/lib/ramaze/current/session/flash.rb +87 -0
  272. data/lib/ramaze/current/session/hash.rb +66 -0
  273. data/lib/ramaze/current/session.rb +181 -0
  274. data/lib/ramaze/current.rb +110 -0
  275. data/lib/ramaze/dispatcher/action.rb +48 -0
  276. data/lib/ramaze/dispatcher/directory.rb +119 -0
  277. data/lib/ramaze/dispatcher/error.rb +108 -0
  278. data/lib/ramaze/dispatcher/file.rb +95 -0
  279. data/lib/ramaze/dispatcher.rb +145 -0
  280. data/lib/ramaze/error.rb +24 -0
  281. data/lib/ramaze/gestalt.rb +124 -0
  282. data/lib/ramaze/helper/aspect.rb +106 -0
  283. data/lib/ramaze/helper/auth.rb +125 -0
  284. data/lib/ramaze/helper/cache.rb +140 -0
  285. data/lib/ramaze/helper/cgi.rb +39 -0
  286. data/lib/ramaze/helper/flash.rb +59 -0
  287. data/lib/ramaze/helper/form.rb +281 -0
  288. data/lib/ramaze/helper/formatting.rb +158 -0
  289. data/lib/ramaze/helper/gestalt.rb +15 -0
  290. data/lib/ramaze/helper/gravatar.rb +15 -0
  291. data/lib/ramaze/helper/httpdigest.rb +59 -0
  292. data/lib/ramaze/helper/identity.rb +119 -0
  293. data/lib/ramaze/helper/link.rb +122 -0
  294. data/lib/ramaze/helper/markaby.rb +31 -0
  295. data/lib/ramaze/helper/maruku.rb +7 -0
  296. data/lib/ramaze/helper/nitroform.rb +14 -0
  297. data/lib/ramaze/helper/pager.rb +366 -0
  298. data/lib/ramaze/helper/paginate.rb +234 -0
  299. data/lib/ramaze/helper/partial.rb +105 -0
  300. data/lib/ramaze/helper/redirect.rb +82 -0
  301. data/lib/ramaze/helper/rest.rb +43 -0
  302. data/lib/ramaze/helper/sendfile.rb +16 -0
  303. data/lib/ramaze/helper/sequel.rb +55 -0
  304. data/lib/ramaze/helper/simple_captcha.rb +31 -0
  305. data/lib/ramaze/helper/stack.rb +77 -0
  306. data/lib/ramaze/helper/tagz.rb +19 -0
  307. data/lib/ramaze/helper/thread.rb +17 -0
  308. data/lib/ramaze/helper/ultraviolet.rb +44 -0
  309. data/lib/ramaze/helper/user.rb +110 -0
  310. data/lib/ramaze/helper/xhtml.rb +23 -0
  311. data/lib/ramaze/helper.rb +79 -0
  312. data/lib/ramaze/log/analogger.rb +40 -0
  313. data/lib/ramaze/log/growl.rb +38 -0
  314. data/lib/ramaze/log/hub.rb +41 -0
  315. data/lib/ramaze/log/informer.rb +128 -0
  316. data/lib/ramaze/log/knotify.rb +28 -0
  317. data/lib/ramaze/log/logger.rb +26 -0
  318. data/lib/ramaze/log/logging.rb +89 -0
  319. data/lib/ramaze/log/syslog.rb +51 -0
  320. data/lib/ramaze/log/xosd.rb +92 -0
  321. data/lib/ramaze/log.rb +27 -0
  322. data/lib/ramaze/option/dsl.rb +45 -0
  323. data/lib/ramaze/option/holder.rb +131 -0
  324. data/lib/ramaze/option/merger.rb +108 -0
  325. data/lib/ramaze/option.rb +156 -0
  326. data/lib/ramaze/reloader.rb +186 -0
  327. data/lib/ramaze/route.rb +97 -0
  328. data/lib/ramaze/setup.rb +50 -0
  329. data/lib/ramaze/snippets/array/put_within.rb +44 -0
  330. data/lib/ramaze/snippets/binding/locals.rb +25 -0
  331. data/lib/ramaze/snippets/blankslate.rb +7 -0
  332. data/lib/ramaze/snippets/dictionary.rb +504 -0
  333. data/lib/ramaze/snippets/divide.rb +20 -0
  334. data/lib/ramaze/snippets/fiber.rb +63 -0
  335. data/lib/ramaze/snippets/kernel/constant.rb +41 -0
  336. data/lib/ramaze/snippets/kernel/pretty_inspect.rb +21 -0
  337. data/lib/ramaze/snippets/metaid.rb +17 -0
  338. data/lib/ramaze/snippets/numeric/filesize_format.rb +32 -0
  339. data/lib/ramaze/snippets/numeric/time.rb +63 -0
  340. data/lib/ramaze/snippets/object/__dir__.rb +29 -0
  341. data/lib/ramaze/snippets/object/acquire.rb +40 -0
  342. data/lib/ramaze/snippets/object/instance_variable_defined.rb +19 -0
  343. data/lib/ramaze/snippets/object/pretty.rb +16 -0
  344. data/lib/ramaze/snippets/object/scope.rb +18 -0
  345. data/lib/ramaze/snippets/object/traits.rb +76 -0
  346. data/lib/ramaze/snippets/ordered_set.rb +51 -0
  347. data/lib/ramaze/snippets/proc/locals.rb +19 -0
  348. data/lib/ramaze/snippets/ramaze/caller_info.rb +30 -0
  349. data/lib/ramaze/snippets/ramaze/caller_lines.rb +51 -0
  350. data/lib/ramaze/snippets/ramaze/deprecated.rb +20 -0
  351. data/lib/ramaze/snippets/ramaze/fiber.rb +24 -0
  352. data/lib/ramaze/snippets/ramaze/state.rb +86 -0
  353. data/lib/ramaze/snippets/ramaze/struct.rb +45 -0
  354. data/lib/ramaze/snippets/string/camel_case.rb +21 -0
  355. data/lib/ramaze/snippets/string/color.rb +31 -0
  356. data/lib/ramaze/snippets/string/each.rb +19 -0
  357. data/lib/ramaze/snippets/string/end_with.rb +20 -0
  358. data/lib/ramaze/snippets/string/esc.rb +34 -0
  359. data/lib/ramaze/snippets/string/ord.rb +21 -0
  360. data/lib/ramaze/snippets/string/snake_case.rb +21 -0
  361. data/lib/ramaze/snippets/string/start_with.rb +19 -0
  362. data/lib/ramaze/snippets/string/unindent.rb +28 -0
  363. data/lib/ramaze/snippets/thread/into.rb +18 -0
  364. data/lib/ramaze/snippets.rb +22 -0
  365. data/lib/ramaze/spec/helper/bacon.rb +7 -0
  366. data/lib/ramaze/spec/helper/browser.rb +88 -0
  367. data/lib/ramaze/spec/helper/mock_http.rb +63 -0
  368. data/lib/ramaze/spec/helper/pretty_output.rb +82 -0
  369. data/lib/ramaze/spec/helper/requester.rb +63 -0
  370. data/lib/ramaze/spec/helper/simple_http.rb +434 -0
  371. data/lib/ramaze/spec/helper/snippets.rb +14 -0
  372. data/lib/ramaze/spec/helper.rb +135 -0
  373. data/lib/ramaze/spec.rb +1 -0
  374. data/lib/ramaze/store/default.rb +109 -0
  375. data/lib/ramaze/template/amrita2.rb +45 -0
  376. data/lib/ramaze/template/builder.rb +28 -0
  377. data/lib/ramaze/template/erubis.rb +41 -0
  378. data/lib/ramaze/template/ezamar/element.rb +169 -0
  379. data/lib/ramaze/template/ezamar/engine.rb +76 -0
  380. data/lib/ramaze/template/ezamar/morpher.rb +135 -0
  381. data/lib/ramaze/template/ezamar/render_partial.rb +31 -0
  382. data/lib/ramaze/template/ezamar/textpow.syntax +34 -0
  383. data/lib/ramaze/template/ezamar.rb +42 -0
  384. data/lib/ramaze/template/haml.rb +37 -0
  385. data/lib/ramaze/template/liquid.rb +36 -0
  386. data/lib/ramaze/template/markaby.rb +52 -0
  387. data/lib/ramaze/template/maruku.rb +34 -0
  388. data/lib/ramaze/template/nagoro.rb +52 -0
  389. data/lib/ramaze/template/none.rb +14 -0
  390. data/lib/ramaze/template/redcloth.rb +25 -0
  391. data/lib/ramaze/template/remarkably.rb +38 -0
  392. data/lib/ramaze/template/sass.rb +37 -0
  393. data/lib/ramaze/template/tagz.rb +79 -0
  394. data/lib/ramaze/template/tenjin.rb +74 -0
  395. data/lib/ramaze/template/xslt.rb +100 -0
  396. data/lib/ramaze/template.rb +87 -0
  397. data/lib/ramaze/tool/create.rb +48 -0
  398. data/lib/ramaze/tool/daemonize.rb +37 -0
  399. data/lib/ramaze/tool/localize.rb +202 -0
  400. data/lib/ramaze/tool/mime.rb +35 -0
  401. data/lib/ramaze/tool/mime_types.yaml +615 -0
  402. data/lib/ramaze/tool/project_creator.rb +110 -0
  403. data/lib/ramaze/tool/record.rb +6 -0
  404. data/lib/ramaze/tool.rb +9 -0
  405. data/lib/ramaze/trinity.rb +16 -0
  406. data/lib/ramaze/version.rb +6 -0
  407. data/lib/ramaze.rb +133 -0
  408. data/lib/vendor/bacon.rb +323 -0
  409. data/rake_tasks/conf.rake +71 -0
  410. data/rake_tasks/coverage.rake +46 -0
  411. data/rake_tasks/gem.rake +74 -0
  412. data/rake_tasks/git.rake +41 -0
  413. data/rake_tasks/maintenance.rake +386 -0
  414. data/rake_tasks/metric.rake +24 -0
  415. data/rake_tasks/release.rake +76 -0
  416. data/rake_tasks/spec.rake +61 -0
  417. data/ramaze.gemspec +773 -0
  418. data/spec/contrib/auto_params.rb +121 -0
  419. data/spec/contrib/profiling.rb +29 -0
  420. data/spec/contrib/sequel/fill.rb +47 -0
  421. data/spec/examples/caching.rb +19 -0
  422. data/spec/examples/css.rb +15 -0
  423. data/spec/examples/element.rb +15 -0
  424. data/spec/examples/hello.rb +11 -0
  425. data/spec/examples/linking.rb +18 -0
  426. data/spec/examples/simple.rb +45 -0
  427. data/spec/examples/simple_auth.rb +32 -0
  428. data/spec/examples/templates/template_amrita2.rb +16 -0
  429. data/spec/examples/templates/template_erubis.rb +23 -0
  430. data/spec/examples/templates/template_ezamar.rb +23 -0
  431. data/spec/examples/templates/template_haml.rb +23 -0
  432. data/spec/examples/templates/template_liquid.rb +29 -0
  433. data/spec/examples/templates/template_markaby.rb +23 -0
  434. data/spec/examples/templates/template_redcloth.rb +28 -0
  435. data/spec/examples/templates/template_remarkably.rb +23 -0
  436. data/spec/examples/templates/template_tenjin.rb +28 -0
  437. data/spec/helper.rb +3 -0
  438. data/spec/ramaze/action/basics.rb +36 -0
  439. data/spec/ramaze/action/cache.rb +87 -0
  440. data/spec/ramaze/action/file_cache.rb +70 -0
  441. data/spec/ramaze/action/layout.rb +190 -0
  442. data/spec/ramaze/action/render.rb +31 -0
  443. data/spec/ramaze/action/view/bar.xhtml +1 -0
  444. data/spec/ramaze/action/view/instancevars/layout.xhtml +1 -0
  445. data/spec/ramaze/action/view/other_wrapper.xhtml +1 -0
  446. data/spec/ramaze/action/view/single_wrapper.xhtml +1 -0
  447. data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
  448. data/spec/ramaze/adapter/ebb.rb +12 -0
  449. data/spec/ramaze/adapter/mongrel.rb +12 -0
  450. data/spec/ramaze/adapter/record.rb +31 -0
  451. data/spec/ramaze/adapter/webrick.rb +12 -0
  452. data/spec/ramaze/adapter.rb +49 -0
  453. data/spec/ramaze/cache.rb +140 -0
  454. data/spec/ramaze/controller/actionless_templates.rb +32 -0
  455. data/spec/ramaze/controller/resolve.rb +32 -0
  456. data/spec/ramaze/controller/subclass.rb +36 -0
  457. data/spec/ramaze/controller/template_resolving.rb +113 -0
  458. data/spec/ramaze/controller/view/bar.xhtml +1 -0
  459. data/spec/ramaze/controller/view/base/another.xhtml +1 -0
  460. data/spec/ramaze/controller/view/greet.xhtml +1 -0
  461. data/spec/ramaze/controller/view/list.xhtml +1 -0
  462. data/spec/ramaze/controller/view/other/greet/other.xhtml +1 -0
  463. data/spec/ramaze/controller/view/other_wrapper.xhtml +1 -0
  464. data/spec/ramaze/controller.rb +180 -0
  465. data/spec/ramaze/current/request.rb +30 -0
  466. data/spec/ramaze/current/session.rb +97 -0
  467. data/spec/ramaze/dispatcher/directory.rb +55 -0
  468. data/spec/ramaze/dispatcher/file.rb +60 -0
  469. data/spec/ramaze/dispatcher/public/favicon.ico +0 -0
  470. data/spec/ramaze/dispatcher/public/file name.txt +1 -0
  471. data/spec/ramaze/dispatcher/public/test_download.css +141 -0
  472. data/spec/ramaze/dispatcher.rb +31 -0
  473. data/spec/ramaze/element.rb +107 -0
  474. data/spec/ramaze/error.rb +94 -0
  475. data/spec/ramaze/gestalt.rb +131 -0
  476. data/spec/ramaze/helper/aspect.rb +101 -0
  477. data/spec/ramaze/helper/auth.rb +66 -0
  478. data/spec/ramaze/helper/cache.rb +160 -0
  479. data/spec/ramaze/helper/cgi.rb +43 -0
  480. data/spec/ramaze/helper/file.rb +18 -0
  481. data/spec/ramaze/helper/flash.rb +133 -0
  482. data/spec/ramaze/helper/form.rb +118 -0
  483. data/spec/ramaze/helper/formatting.rb +54 -0
  484. data/spec/ramaze/helper/link.rb +124 -0
  485. data/spec/ramaze/helper/pager.rb +99 -0
  486. data/spec/ramaze/helper/partial.rb +88 -0
  487. data/spec/ramaze/helper/redirect.rb +112 -0
  488. data/spec/ramaze/helper/simple_captcha.rb +22 -0
  489. data/spec/ramaze/helper/stack.rb +73 -0
  490. data/spec/ramaze/helper/user.rb +43 -0
  491. data/spec/ramaze/helper/view/locals.xhtml +1 -0
  492. data/spec/ramaze/helper/view/loop.xhtml +4 -0
  493. data/spec/ramaze/helper/view/num.xhtml +1 -0
  494. data/spec/ramaze/helper/view/partial.xhtml +1 -0
  495. data/spec/ramaze/helper/view/recursive.xhtml +8 -0
  496. data/spec/ramaze/helper/view/recursive_local_ivars.xhtml +7 -0
  497. data/spec/ramaze/helper/view/recursive_locals.xhtml +7 -0
  498. data/spec/ramaze/helper/view/test_template.xhtml +1 -0
  499. data/spec/ramaze/localize.rb +89 -0
  500. data/spec/ramaze/log/informer.rb +72 -0
  501. data/spec/ramaze/log/syslog.rb +73 -0
  502. data/spec/ramaze/morpher.rb +111 -0
  503. data/spec/ramaze/params.rb +157 -0
  504. data/spec/ramaze/public/error404.xhtml +1 -0
  505. data/spec/ramaze/public/favicon.ico +0 -0
  506. data/spec/ramaze/public/ramaze.png +0 -0
  507. data/spec/ramaze/public/test_download.css +141 -0
  508. data/spec/ramaze/request/ebb.rb +9 -0
  509. data/spec/ramaze/request/mongrel.rb +9 -0
  510. data/spec/ramaze/request/thin.rb +9 -0
  511. data/spec/ramaze/request/webrick.rb +5 -0
  512. data/spec/ramaze/request.rb +185 -0
  513. data/spec/ramaze/rewrite/file.css +1 -0
  514. data/spec/ramaze/rewrite.rb +36 -0
  515. data/spec/ramaze/route.rb +131 -0
  516. data/spec/ramaze/session.rb +94 -0
  517. data/spec/ramaze/store/default.rb +71 -0
  518. data/spec/ramaze/struct.rb +47 -0
  519. data/spec/ramaze/template/amrita2/external.amrita +6 -0
  520. data/spec/ramaze/template/amrita2/sum.amrita +1 -0
  521. data/spec/ramaze/template/amrita2.rb +50 -0
  522. data/spec/ramaze/template/builder/external.rxml +3 -0
  523. data/spec/ramaze/template/builder.rb +51 -0
  524. data/spec/ramaze/template/erubis/sum.rhtml +1 -0
  525. data/spec/ramaze/template/erubis.rb +41 -0
  526. data/spec/ramaze/template/ezamar/another/long/action.zmr +1 -0
  527. data/spec/ramaze/template/ezamar/combined.zmr +1 -0
  528. data/spec/ramaze/template/ezamar/file_only.zmr +1 -0
  529. data/spec/ramaze/template/ezamar/index.zmr +1 -0
  530. data/spec/ramaze/template/ezamar/nested.zmr +1 -0
  531. data/spec/ramaze/template/ezamar/other__index.xhtml +1 -0
  532. data/spec/ramaze/template/ezamar/some__long__action.zmr +1 -0
  533. data/spec/ramaze/template/ezamar/sum.zmr +1 -0
  534. data/spec/ramaze/template/ezamar.rb +63 -0
  535. data/spec/ramaze/template/haml/index.haml +5 -0
  536. data/spec/ramaze/template/haml/locals.haml +2 -0
  537. data/spec/ramaze/template/haml/with_vars.haml +4 -0
  538. data/spec/ramaze/template/haml.rb +66 -0
  539. data/spec/ramaze/template/liquid/index.liquid +1 -0
  540. data/spec/ramaze/template/liquid/products.liquid +45 -0
  541. data/spec/ramaze/template/liquid.rb +99 -0
  542. data/spec/ramaze/template/markaby/external.mab +8 -0
  543. data/spec/ramaze/template/markaby/sum.mab +1 -0
  544. data/spec/ramaze/template/markaby.rb +61 -0
  545. data/spec/ramaze/template/nagoro/another/long/action.nag +1 -0
  546. data/spec/ramaze/template/nagoro/combined.nag +1 -0
  547. data/spec/ramaze/template/nagoro/file_only.nag +1 -0
  548. data/spec/ramaze/template/nagoro/index.nag +1 -0
  549. data/spec/ramaze/template/nagoro/nested.nag +1 -0
  550. data/spec/ramaze/template/nagoro/some__long__action.nag +1 -0
  551. data/spec/ramaze/template/nagoro/sum.nag +1 -0
  552. data/spec/ramaze/template/nagoro.rb +64 -0
  553. data/spec/ramaze/template/ramaze/external.test +1 -0
  554. data/spec/ramaze/template/redcloth/external.redcloth +1 -0
  555. data/spec/ramaze/template/redcloth.rb +38 -0
  556. data/spec/ramaze/template/remarkably/external.rem +8 -0
  557. data/spec/ramaze/template/remarkably/sum.rem +1 -0
  558. data/spec/ramaze/template/remarkably.rb +58 -0
  559. data/spec/ramaze/template/sass/file.css.sass +5 -0
  560. data/spec/ramaze/template/sass.rb +69 -0
  561. data/spec/ramaze/template/tagz/external.tagz +8 -0
  562. data/spec/ramaze/template/tagz/sum.tagz +1 -0
  563. data/spec/ramaze/template/tagz.rb +62 -0
  564. data/spec/ramaze/template/tenjin/external.tenjin +1 -0
  565. data/spec/ramaze/template/tenjin.rb +47 -0
  566. data/spec/ramaze/template/xslt/concat_words.xsl +16 -0
  567. data/spec/ramaze/template/xslt/index.xsl +14 -0
  568. data/spec/ramaze/template/xslt/products.xsl +32 -0
  569. data/spec/ramaze/template/xslt/ruby_version.xsl +14 -0
  570. data/spec/ramaze/template/xslt.rb +90 -0
  571. data/spec/ramaze/template.rb +128 -0
  572. data/spec/snippets/array/put_within.rb +33 -0
  573. data/spec/snippets/binding/locals.rb +9 -0
  574. data/spec/snippets/divide.rb +19 -0
  575. data/spec/snippets/kernel/constant.rb +23 -0
  576. data/spec/snippets/numeric/filesize_format.rb +12 -0
  577. data/spec/snippets/numeric/time.rb +12 -0
  578. data/spec/snippets/object/__dir__.rb +8 -0
  579. data/spec/snippets/object/acquire.rb +71 -0
  580. data/spec/snippets/ordered_set.rb +63 -0
  581. data/spec/snippets/ramaze/caller_info.rb +39 -0
  582. data/spec/snippets/ramaze/caller_lines.rb +30 -0
  583. data/spec/snippets/string/camel_case.rb +25 -0
  584. data/spec/snippets/string/color.rb +11 -0
  585. data/spec/snippets/string/snake_case.rb +24 -0
  586. data/spec/snippets/string/unindent.rb +43 -0
  587. data/spec/snippets/thread/into.rb +20 -0
  588. metadata +823 -0
@@ -0,0 +1,99 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'spec/helper'
5
+
6
+ spec_require 'hpricot'
7
+
8
+ module Og
9
+ class Mock
10
+ def initialize(*a); @a = a; end
11
+ def all(o) @a[(o[:offset]||0),o[:limit]] end
12
+ def count(*a) @a.size end
13
+ alias reload all
14
+ end
15
+ module Mixin; end
16
+ module Collection; end
17
+ end
18
+
19
+ class TCPagerController < Ramaze::Controller
20
+ map '/'
21
+ helper :pager
22
+
23
+ def page
24
+ stuff = [1, 2, 3, 4, 5, 6, 7, 8, 9]
25
+
26
+ items, pager = paginate(stuff, :limit => 2)
27
+
28
+ items.inspect
29
+ end
30
+
31
+ end
32
+
33
+ shared 'pager' do
34
+ behaves_like 'http'
35
+ behaves_like 'resolve'
36
+ extend Ramaze::Helper::Pager
37
+
38
+ ramaze
39
+
40
+ def pager_key
41
+ Ramaze::Pager.trait[:key]
42
+ end
43
+
44
+ # Used internally in Pager to get parameters like: ?_page=1
45
+ def request
46
+ req = Object.new
47
+ def req.params
48
+ {Ramaze::Pager.trait[:key] => 1}
49
+ end
50
+ req
51
+ end
52
+
53
+ before do
54
+ @items, @pager = paginate(@stuff, :limit => 2)
55
+ end
56
+
57
+ it 'should be paginated' do
58
+ get('/page').body.should == [1, 2].inspect
59
+ get('/page', pager_key => '2').body.should == [3, 4].inspect
60
+ end
61
+
62
+ it "should report the number of articles as Pager#total_count" do
63
+ @pager.should.not.be.nil
64
+ @pager.total_count.should.equal 5
65
+ end
66
+
67
+ it "should return the same number of items as passed to :per_page" do
68
+ @items.should.not.be.nil
69
+ @items.size.should.equal 2
70
+ end
71
+
72
+ it "should link to other pages" do
73
+ stack('/page') do
74
+ @pager.should.not.be.nil
75
+ @pager.navigation.should.not.be.nil
76
+
77
+ page = Hpricot(@pager.navigation)
78
+ (page / 'a').size.should == 4
79
+ end
80
+ end
81
+ end
82
+
83
+ describe "Array Pager" do
84
+ @stuff = (1..5).to_a
85
+
86
+ behaves_like "pager"
87
+ end
88
+
89
+ describe "OgPager" do
90
+ @stuff = Og::Mock.new(1,2,3,4,5).extend(Og::Mixin)
91
+
92
+ behaves_like "pager"
93
+ end
94
+
95
+ describe "OgCollectionPager" do
96
+ @stuff = Og::Mock.new(1,2,3,4,5).extend(Og::Collection)
97
+
98
+ behaves_like "pager"
99
+ end
@@ -0,0 +1,88 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'spec/helper'
5
+
6
+ class TCPartialHelperController < Ramaze::Controller
7
+ map '/'
8
+
9
+ def index
10
+ '<html><head><title>#{render_partial("/title")}</title></head></html>'
11
+ end
12
+
13
+ def title
14
+ "Title"
15
+ end
16
+
17
+ def with_params
18
+ '<html><head><title>#{render_partial("/message", {:msg=>"hello"})}</title></head></html>'
19
+ end
20
+
21
+ def message
22
+ "Message: #{request[:msg]}"
23
+ end
24
+
25
+ def composed
26
+ @here = 'there'
27
+ 'From Action | ' +
28
+ render_template("partial.xhtml")
29
+ end
30
+
31
+ def recursive locals = false
32
+ respond render_template('recursive_locals.xhtml', :n => 1) if locals
33
+ @n = 1
34
+ end
35
+
36
+ def test_locals
37
+ render_template 'locals.xhtml', :say => 'Hello', :to => 'World'
38
+ end
39
+
40
+ def test_local_ivars
41
+ render_template 'recursive_local_ivars.xhtml', :n => 1
42
+ end
43
+
44
+ def test_without_ext
45
+ render_template :locals, :say => 'Hi', :to => 'World'
46
+ end
47
+ end
48
+
49
+ describe "PartialHelper" do
50
+ behaves_like 'http'
51
+ ramaze :view_root => __DIR__/:view
52
+
53
+ it "should render partials" do
54
+ get('/').body.should == '<html><head><title>Title</title></head></html>'
55
+ end
56
+
57
+ it "should render partials with params" do
58
+ get('/with_params').body.should == '<html><head><title>Message: hello</title></head></html>'
59
+ end
60
+
61
+ it 'should be able to render a template in the current scope' do
62
+ get('/composed').body.should == 'From Action | From Partial there'
63
+ end
64
+
65
+ it 'should render_template in a loop' do
66
+ get('/loop').body.gsub(/\s/,'').should == '12345'
67
+ end
68
+
69
+ it 'should work recursively' do
70
+ get('/recursive').body.gsub(/\s/,'').should == '{1{2{3{44}4}3}2}'
71
+ end
72
+
73
+ it 'should support locals' do
74
+ get('/test_locals').body.should == 'Hello, World!'
75
+ end
76
+
77
+ it 'should work recursively with locals' do
78
+ get('/recursive/true').body.gsub(/\s/,'').should == '{1{2{3{44}3}2}1}'
79
+ end
80
+
81
+ it 'should set ivars in addition to locals' do
82
+ get('/test_local_ivars').body.gsub(/\s/,'').should == '{1{2{3{44}3}2}1}'
83
+ end
84
+
85
+ it 'should not require file extension' do
86
+ get('/test_without_ext').body.should == 'Hi, World!'
87
+ end
88
+ end
@@ -0,0 +1,112 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'spec/helper'
5
+
6
+ class TCRedirectHelperController < Ramaze::Controller
7
+ map :/
8
+
9
+ def index
10
+ self.class.name
11
+ end
12
+
13
+ def noop
14
+ 'noop'
15
+ end
16
+
17
+ def redirection
18
+ redirect :index
19
+ end
20
+
21
+ def double_redirection
22
+ redirect :redirection
23
+ end
24
+
25
+ def redirect_referer_action
26
+ redirect_referer
27
+ end
28
+
29
+ def no_actual_redirect
30
+ catch(:redirect){ redirection }
31
+ 'foo'
32
+ end
33
+
34
+ def no_actual_double_redirect
35
+ catch(:redirect){ double_redirection }
36
+ 'bar'
37
+ end
38
+
39
+ def redirect_method
40
+ redirect Rs(:noop)
41
+ end
42
+
43
+ def absolute_uri_redirect
44
+ redirect 'http://localhost:7007/noop'
45
+ end
46
+
47
+ def loop
48
+ respond 'no loop'
49
+ 'loop'
50
+ end
51
+
52
+ def respond_with_status
53
+ respond 'not found', 404
54
+ end
55
+
56
+ def redirect_unmodified
57
+ raw_redirect '/noop'
58
+ end
59
+ end
60
+
61
+ describe "RedirectHelper" do
62
+ behaves_like 'http', 'browser'
63
+ ramaze(:adapter => :webrick)
64
+
65
+ b = Browser.new
66
+
67
+ it "testrun" do
68
+ b.get('/').should == "TCRedirectHelperController"
69
+ end
70
+
71
+ it "should do redirection" do
72
+ b.story do
73
+ get('/redirection').should == "TCRedirectHelperController"
74
+ get('/double_redirection').should == "TCRedirectHelperController"
75
+ end
76
+ end
77
+
78
+ it 'should be possible to catch a redirect' do
79
+ b.story do
80
+ get('/no_actual_redirect').should == 'foo'
81
+ get('/no_actual_double_redirect').should == 'bar'
82
+ end
83
+ end
84
+
85
+ it "should redirect to referer" do
86
+ b.story do
87
+ get('/').should == "TCRedirectHelperController"
88
+ get('/redirect_referer_action').should == 'TCRedirectHelperController'
89
+ get('/noop').should == 'noop'
90
+ get('/redirect_referer_action').should == 'noop'
91
+ end
92
+ end
93
+
94
+ it "should work with R()" do
95
+ b.get('/redirect_method').should == 'noop'
96
+ end
97
+
98
+ it "should work with absolute uris" do
99
+ b.get('/absolute_uri_redirect').should == 'noop'
100
+ end
101
+
102
+ it 'should allow respond() that ignores return values and templates' do
103
+ get('/loop').body.should == 'no loop'
104
+ page = get('/respond_with_status')
105
+ page.status.should == 404
106
+ page.body.should == 'not found'
107
+ end
108
+
109
+ it 'should redirect without modifying the target' do
110
+ get('/redirect_unmodified').headers['Location'].should == '/noop'
111
+ end
112
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec/helper'
2
+ require 'ramaze/helper/simple_captcha'
3
+
4
+ describe Ramaze::Helper::SimpleCaptcha do
5
+ extend Ramaze::Helper::SimpleCaptcha
6
+
7
+ # mock session
8
+ SESSION = {}
9
+ def session; SESSION; end
10
+
11
+ should 'generate question and answer' do
12
+ simple_captcha
13
+ question = SESSION[:CAPTCHA][:question]
14
+ question.should =~ /^\d+ [+-] \d+$/
15
+ lh, m, rh = question.split
16
+
17
+ answer = SESSION[:CAPTCHA][:answer]
18
+ answer.should =~ /^\d+$/
19
+
20
+ lh.to_i.send(m, rh.to_i).should == answer.to_i
21
+ end
22
+ end
@@ -0,0 +1,73 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'spec/helper'
5
+
6
+ class TCStackHelperController < Ramaze::Controller
7
+ map :/
8
+ helper :stack, :aspect
9
+
10
+ def index
11
+ session.inspect
12
+ end
13
+
14
+ def foo
15
+ call Rs(:login) unless logged_in?
16
+ "logged in"
17
+ end
18
+
19
+ def bar
20
+ call Rs(:login) unless logged_in?
21
+ request.params.inspect
22
+ end
23
+
24
+ def secure
25
+ logged_in? ? 'secret content' : 'please login'
26
+ end
27
+
28
+ def login
29
+ session[:logged_in] = true
30
+ answer
31
+ end
32
+
33
+ def logout
34
+ session.clear
35
+ end
36
+
37
+ private
38
+
39
+ def logged_in?
40
+ session[:logged_in]
41
+ end
42
+ end
43
+
44
+ describe "StackHelper" do
45
+ behaves_like 'browser'
46
+ ramaze(:adapter => :webrick)
47
+
48
+ it "conventional login" do
49
+ Browser.new do
50
+ get('/secure').should == 'please login'
51
+ get('/login')
52
+ get('/secure').should == 'secret content'
53
+ get('/logout')
54
+ end
55
+ end
56
+
57
+ it "indirect login" do
58
+ Browser.new do
59
+ get('/')
60
+ get('/foo').should == 'logged in'
61
+ get('/secure').should == 'secret content'
62
+ eget('/').should == {:logged_in => true}
63
+ end
64
+ end
65
+
66
+ it "indirect login with params" do
67
+ Browser.new do
68
+ get('/')
69
+ eget('/bar', 'x' => 'y').should == {'x' => 'y'}
70
+ eget('/').should == {:logged_in => true}
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec/helper'
2
+
3
+ class MockSequelUser
4
+ def profile
5
+ "Arthur Dent, fearful human in outer space!"
6
+ end
7
+
8
+ def self.authenticate(hash)
9
+ new if hash.values_at('name', 'password') == %w[arthur 42]
10
+ end
11
+ end
12
+
13
+ class SpecUserHelper < Ramaze::Controller
14
+ map '/'
15
+ helper :user
16
+ trait :user_model => MockSequelUser
17
+
18
+ def status
19
+ logged_in?
20
+ end
21
+
22
+ def login
23
+ user_login
24
+ end
25
+
26
+ def profile
27
+ user.profile
28
+ end
29
+ end
30
+
31
+ describe Ramaze::Helper::User do
32
+ behaves_like 'browser'
33
+ ramaze :adapter => :webrick
34
+
35
+ should 'login' do
36
+ Browser.new do
37
+ get('/status').should == 'false'
38
+ get('/login', 'name' => 'arthur', 'password' => '42')
39
+ get('/status').should == 'true'
40
+ get('/profile').should == MockSequelUser.new.profile
41
+ end
42
+ end
43
+ end
@@ -0,0 +1 @@
1
+ #{say}, #{to}!
@@ -0,0 +1,4 @@
1
+ <?r (1..5).each do |n| ?>
2
+ <?r @n = n ?>
3
+ #{render_template 'num.xhtml'}
4
+ <?r end ?>
@@ -0,0 +1 @@
1
+ #{@n}
@@ -0,0 +1 @@
1
+ From Partial #@here
@@ -0,0 +1,8 @@
1
+ {
2
+ #@n
3
+ <?r if @n < 4 ?>
4
+ <?r @n += 1 ?>
5
+ #{render_template('recursive.xhtml')}
6
+ <?r end ?>
7
+ #@n
8
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ #{@n}
3
+ <?r if @n < 4 ?>
4
+ #{render_template('recursive_local_ivars.xhtml', :n => @n+1)}
5
+ <?r end ?>
6
+ #{@n}
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ #{n}
3
+ <?r if n < 4 ?>
4
+ #{render_template('recursive_locals.xhtml', :n => n+1)}
5
+ <?r end ?>
6
+ #{n}
7
+ }
@@ -0,0 +1 @@
1
+ I am a template.
@@ -0,0 +1,89 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'spec/helper'
5
+
6
+ spec_require 'ya2yaml', 'ramaze/tool/localize'
7
+
8
+ Ramaze::Tool::Localize.trait :enable => true,
9
+ :file => 'spec/ramaze/conf/locale_%s.yaml'.freeze,
10
+ :languages => %w[en de]
11
+
12
+ Ramaze::Dispatcher::Action::FILTER << Ramaze::Tool::Localize
13
+
14
+ class TCLocalize < Ramaze::Controller
15
+ map '/'
16
+
17
+ def hello lang = 'en'
18
+ session[:LOCALE] = lang
19
+ '[[hello]]'
20
+ end
21
+
22
+ def advanced lang = 'en'
23
+ session[:LOCALE] = lang
24
+ '[[this]] [[is]] [[a]] [[test]]'
25
+ end
26
+
27
+ def try_session_de
28
+ # stub to set accepted to de
29
+ def request.locales; %w[de en-us]; end
30
+
31
+ '[[this]] [[is]] [[a]] [[test]]'
32
+ end
33
+
34
+ def try_session_en
35
+ # stub to set accepted to en-us
36
+ def request.locales; %w[en-us de]; end
37
+
38
+ '[[this]] [[is]] [[a]] [[test]]'
39
+ end
40
+ end
41
+
42
+ describe "Localize" do
43
+ behaves_like 'http'
44
+
45
+ @dir = __DIR__ / :conf
46
+ FileUtils.mkdir_p(@dir)
47
+
48
+ dict = {
49
+ :de => {
50
+ 'hello' => 'Hallo, Welt!',
51
+ 'this' => 'Das',
52
+ 'is' => 'ist',
53
+ 'a' => 'ein',
54
+ 'test' => 'Test',
55
+ },
56
+ :en => {
57
+ 'hello' => 'Hello, World!',
58
+ 'this' => 'this',
59
+ 'is' => 'is',
60
+ 'a' => 'a',
61
+ 'test' => 'test',
62
+ } }
63
+
64
+ dict.each do |lang, dic|
65
+ File.open(@dir/"locale_#{lang}.yaml", 'w+'){|fp| fp.print(dic.to_yaml)}
66
+ end
67
+
68
+ ramaze
69
+
70
+ it "hello world" do
71
+ get('/hello').body.should == 'Hello, World!'
72
+ get('/hello/de').body.should == 'Hallo, Welt!'
73
+ end
74
+
75
+ it "advanced" do
76
+ get('/advanced').body.should == 'this is a test'
77
+ get('/advanced/de').body.should == 'Das ist ein Test'
78
+ end
79
+
80
+ should 'set correct session locale from request.locales' do
81
+ get('/try_session_de').body.should == 'Das ist ein Test'
82
+ end
83
+
84
+ should 'set correct session locale with regex mapping' do
85
+ get('/try_session_en').body.should == 'this is a test'
86
+ end
87
+
88
+ FileUtils.rm_rf(@dir)
89
+ end
@@ -0,0 +1,72 @@
1
+ require 'spec/helper'
2
+
3
+ describe 'Informer' do
4
+ before do
5
+ @out = []
6
+ def @out.puts(*args) push(*args) end
7
+ Ramaze::Logger::Informer.trait[:colorize] = false
8
+ @inform = Ramaze::Logger::Informer.new(@out)
9
+ end
10
+
11
+ def format(tag, string)
12
+ /\[\d{4}-\d\d-\d\d \d\d:\d\d:\d\d\] #{tag.to_s.upcase.ljust(5)} #{Regexp.escape(string)}/
13
+ end
14
+
15
+ it 'info' do
16
+ @inform.info('Some Info')
17
+ @out.first.should =~ format(:info, 'Some Info')
18
+ end
19
+
20
+ it 'debug' do
21
+ arr = [:some, :stuff]
22
+ @inform.debug(arr)
23
+ @out.first.should =~ format(:debug, arr.inspect)
24
+ end
25
+
26
+ it 'warn' do
27
+ @inform.warn('More things')
28
+ @out.first.should =~ format(:warn, 'More things')
29
+ end
30
+
31
+ it 'error' do
32
+ begin
33
+ raise('Stuff')
34
+ rescue => ex
35
+ end
36
+
37
+ @inform.error(ex)
38
+ @out.first.should =~ format(:error, ex.inspect)
39
+ end
40
+
41
+ it 'should choose stdout on init(stdout,:stdout,STDOUT)' do
42
+ a = Ramaze::Logger::Informer.new(STDOUT)
43
+ b = Ramaze::Logger::Informer.new(:stdout)
44
+ c = Ramaze::Logger::Informer.new('stdout')
45
+ [a,b,c].each { |x| x.out.should == $stdout}
46
+ end
47
+
48
+ it 'should choose stderr on init(stderr,:stderr,STDERR)' do
49
+ a = Ramaze::Logger::Informer.new(STDERR)
50
+ b = Ramaze::Logger::Informer.new(:stderr)
51
+ c = Ramaze::Logger::Informer.new('stderr')
52
+ [a,b,c].each { |x| x.out.should == $stderr}
53
+ end
54
+
55
+ it 'should use IO when supplied' do
56
+ i = Ramaze::Logger::Informer.new(s = StringIO.new)
57
+ i.out.should == s
58
+ end
59
+
60
+ it 'should open file otherwise' do
61
+ begin
62
+ i = Ramaze::Logger::Informer.new('tmp.dummy')
63
+ out = i.out
64
+ out.should.be.instance_of(File)
65
+ out.path.should == 'tmp.dummy'
66
+ ensure
67
+ out.close
68
+ File.delete('tmp.dummy')
69
+ end
70
+ end
71
+
72
+ end