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
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
2
+ # All files in this distribution are subject to the terms of the MIT license.
3
3
 
4
4
  module Ramaze
5
5
 
@@ -9,51 +9,54 @@ module Ramaze
9
9
  # Flash is a way to keep a temporary pairs of keys and values for the duration
10
10
  # of two requests, the current and following.
11
11
  #
12
- # Very vague Example:
12
+ # Time for an example. On the first request, for example on registering:
13
13
  #
14
- # On the first request, for example on registering:
15
- #
16
- # flash[:error] = "You should reconsider your username, it's taken already"
17
- # redirect R(self, :register)
14
+ # flash[:error] = "You should reconsider your username, it's taken already"
15
+ # redirect r(:register)
18
16
  #
19
17
  # This is the request from the redirect:
20
18
  #
21
- # do_stuff if flash[:error]
19
+ # do_stuff if flash[:error]
22
20
  #
23
21
  # On the request after this, flash[:error] is gone.
24
22
 
25
- module Helper::Flash
26
- trait :tag => "<div class='flash' id='flash_%key'>%value</div>"
27
- # answers with Session.current.flash
23
+ module Helper
24
+ module Flash
25
+ include Innate::Traited
28
26
 
29
- def flash
30
- Session.current.flash
31
- end
27
+ trait :flashbox => "<div class='flash' id='flash_%key'>%value</div>"
32
28
 
33
- # Use in your template to display all flash messages that may be stored.
34
- # For example, given you stored:
35
- #
36
- # flash # => { :error => 'Pleae enter your name'
37
- # :info => 'Do you see the fnords?' }
38
- #
39
- # Then a flashbox would display:
40
- #
41
- # <div class='flash' id='flash_error'>Please enter your name</div>
42
- # <div class='flash' id='flash_info'>Do you see the fnords?</div>
43
- #
44
- # This is designed to be customized permanently or per usage:
45
- #
46
- # flashbox("<div class='flash_%key'>%value</div>")
47
- #
48
- # Where any occurrence of %key and %value will be replaced by the actual
49
- # contents of each element of flash
29
+ ##
30
+ # Return the current value of Current.session.flash
31
+ #
32
+ def flash
33
+ Current.session.flash
34
+ end
50
35
 
51
- def flashbox(tag = Helper::Flash.trait[:tag])
52
- flash.map{|key, value|
53
- [key.to_s, value.to_s]
54
- }.sort.map{|(key, value)|
55
- tag.gsub(/%key/, key.to_s).gsub(/%value/, value.to_s)
56
- }.join("\n")
57
- end
58
- end
59
- end
36
+ # Use in your template to display all flash messages that may be stored.
37
+ # For example, given you stored:
38
+ #
39
+ # flash # => { :error => 'Please enter your name'
40
+ # :info => 'Do you see the fnords?' }
41
+ #
42
+ # Then a flashbox would display:
43
+ #
44
+ # <div class='flash' id='flash_error'>Please enter your name</div>
45
+ # <div class='flash' id='flash_info'>Do you see the fnords?</div>
46
+ #
47
+ # This is designed to be customized permanently or per usage:
48
+ #
49
+ # flashbox("<div class='flash_%key'>%value</div>")
50
+ #
51
+ # Where any occurrence of %key and %value will be replaced by the actual
52
+ # contents of each element of flash
53
+ def flashbox(tag = ancestral_trait[:flashbox])
54
+ flash.map{|key, *values|
55
+ values.flatten.map do |value|
56
+ tag.gsub(/%key/, key.to_s).gsub(/%value/, value.to_s)
57
+ end
58
+ }.flatten.join("\n")
59
+ end
60
+ end # Flash
61
+ end # Helper
62
+ end # Ramaze
@@ -1,42 +1,207 @@
1
1
  # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
2
+ # All files in this distribution are subject to the terms of the MIT license.
3
3
 
4
4
  module Ramaze
5
- module Helper::Formatting
6
- def number_format(n, delimiter = ',')
7
- delim_l, delim_r = delimiter == ',' ? %w[, .] : %w[. ,]
8
- h, r = n.to_s.split('.')
9
- [h.reverse.scan(/\d{1,3}/).join(delim_l).reverse, r].compact.join(delim_r)
10
- end
11
-
12
- # stolen and adapted from rails
13
- def time_diff from_time, to_time = Time.now, include_seconds = false
14
- distance_in_minutes = (((to_time - from_time).abs)/60).round
15
- distance_in_seconds = ((to_time - from_time).abs).round if include_seconds
16
-
17
- case distance_in_minutes
18
- when 0..1
19
- return (distance_in_minutes == 0) ? 'less than a minute' : '1 minute' unless include_seconds
20
- case distance_in_seconds
21
- when 0..4 then 'less than 5 seconds'
22
- when 5..9 then 'less than 10 seconds'
23
- when 10..19 then 'less than 20 seconds'
24
- when 20..39 then 'half a minute'
25
- when 40..59 then 'less than a minute'
26
- else '1 minute'
5
+ module Helper
6
+ module Formatting
7
+ module_function
8
+
9
+ FORMATTING_NUMBER_COUNTER = {
10
+ 0 => 'no',
11
+ 2 => 'two',
12
+ 3 => 'three',
13
+ 4 => 'four',
14
+ 5 => 'five',
15
+ 6 => 'six',
16
+ 7 => 'seven',
17
+ 8 => 'eight',
18
+ 9 => 'nine',
19
+ 10 => 'ten'
20
+ }
21
+
22
+ # Answers with a representation of given +count+ with correct grammar. If
23
+ # no +items+ argument is given, and the +count+ argument is not 1, then we
24
+ # first check whether the +item+ argument responds to ``#pluralize`` (for
25
+ # example if you are using Sequel). If this doesn't work we append 's'
26
+ # to the +item+ argument.
27
+ #
28
+ # @example usage
29
+ # number_counter(0, 'comment') # => 'no comments'
30
+ # number_counter(1, 'comment') # => 'one comment'
31
+ # number_counter(2, 'comment') # => '2 comments'
32
+ #
33
+ def number_counter(count, item, items = nil)
34
+ count, item = count.to_i, item.to_s
35
+
36
+ if count == 1
37
+ "one #{item}"
38
+ else
39
+ items ||= item.respond_to?(:pluralize) ? item.pluralize : "#{item}s"
40
+ prefix = FORMATTING_NUMBER_COUNTER[count] || count
41
+ "#{prefix} #{items}"
42
+ end
43
+ end
44
+
45
+ # Format a floating number nicely for display.
46
+ #
47
+ # @example
48
+ # number_format(123.123) # => '123.123'
49
+ # number_format(123456.12345) # => '123,456.12345'
50
+ # number_format(123456.12345, '.') # => '123.456,12345'
51
+ #
52
+ def number_format(n, delimiter = ',')
53
+ delim_l, delim_r = delimiter == ',' ? %w[, .] : %w[. ,]
54
+ h, r = n.to_s.split('.')
55
+ [h.reverse.scan(/\d{1,3}/).join(delim_l).reverse, r].compact.join(delim_r)
56
+ end
57
+
58
+ # Answer with the ordinal version of a number.
59
+ #
60
+ # @example
61
+ # ordinal(1) # => "1st"
62
+ # ordinal(2) # => "2nd"
63
+ # ordinal(3) # => "3rd"
64
+ # ordinal(13) # => "13th"
65
+ # ordinal(33) # => "33rd"
66
+ # ordinal(100) # => "100th"
67
+ # ordinal(133) # => "133rd"
68
+ #
69
+ def ordinal(number)
70
+ number = number.to_i
71
+
72
+ case number % 100
73
+ when 11..13; "#{number}th"
74
+ else
75
+ case number % 10
76
+ when 1; "#{number}st"
77
+ when 2; "#{number}nd"
78
+ when 3; "#{number}rd"
79
+ else "#{number}th"
27
80
  end
81
+ end
82
+ end
28
83
 
29
- when 2..44 then "#{distance_in_minutes} minutes"
30
- when 45..89 then 'about 1 hour'
31
- when 90..1439 then "about #{(distance_in_minutes.to_f / 60.0).round} hours"
32
- when 1440..2879 then '1 day'
33
- when 2880..43199 then "#{(distance_in_minutes / 1440).round} days"
34
- when 43200..86399 then 'about 1 month'
35
- when 86400..525959 then "#{(distance_in_minutes / 43200).round} months"
36
- when 525960..1051919 then 'about 1 year'
37
- else "over #{(distance_in_minutes / 525960).round} years"
84
+ # stolen and adapted from rails
85
+ def time_diff(from_time, to_time = Time.now, include_seconds = false)
86
+ distance_in_minutes = (((to_time - from_time).abs)/60).round
87
+ distance_in_seconds = ((to_time - from_time).abs).round if include_seconds
88
+
89
+ case distance_in_minutes
90
+ when 0..1
91
+ return (distance_in_minutes == 0) ? 'less than a minute' : '1 minute' unless include_seconds
92
+ case distance_in_seconds
93
+ when 0..4 then 'less than 5 seconds'
94
+ when 5..9 then 'less than 10 seconds'
95
+ when 10..19 then 'less than 20 seconds'
96
+ when 20..39 then 'half a minute'
97
+ when 40..59 then 'less than a minute'
98
+ else '1 minute'
99
+ end
100
+
101
+ when 2..44 then "#{distance_in_minutes} minutes"
102
+ when 45..89 then 'about 1 hour'
103
+ when 90..1439 then "about #{(distance_in_minutes.to_f / 60.0).round} hours"
104
+ when 1440..2879 then '1 day'
105
+ when 2880..43199 then "#{(distance_in_minutes / 1440).round} days"
106
+ when 43200..86399 then 'about 1 month'
107
+ when 86400..525959 then "#{(distance_in_minutes / 43200).round} months"
108
+ when 525960..1051919 then 'about 1 year'
109
+ else "over #{(distance_in_minutes / 525960).round} years"
110
+ end
38
111
  end
39
- end
40
112
 
41
- end
42
- end
113
+ # Copied from actionpack, and revised by insane-dreamer to fix a bug
114
+ # (original fails on some URLs)
115
+ AUTO_LINK_RE = %r{
116
+ ( # leading text
117
+ <\w+.*?>| # leading HTML tag, or
118
+ [^=!:'"/]| # leading punctuation, or
119
+ ^ # beginning of line
120
+ )
121
+ (
122
+ (?:https?://)| # protocol spec, or
123
+ (?:www\.) # www.*
124
+ )
125
+ (
126
+ [-\w]+ # subdomain or domain
127
+ (?:\.[-\w]+)* # remaining subdomains or domain
128
+ (?::\d+)? # port
129
+ (?:/(?:[~\w\+@%=\(\)-]|(?:[,.;:'][^\s<$]))*)* # path
130
+ (?:\?[\w\+@%&=.;:-]+)? # query string
131
+ (?:\#[\w\-]*)? # trailing anchor
132
+ )
133
+ ([[:punct:]]|<|$|) # trailing text
134
+ }x unless defined? AUTO_LINK_RE
135
+
136
+ # Turns all urls into clickable links. If a block is given, each url
137
+ # is yielded and the result is used as the link text.
138
+ def auto_link(text, opts = {})
139
+ html_options = ' ' + opts.map{|k,v| "#{k}='#{v}'"}.join(' ') if opts.any?
140
+ text.gsub(AUTO_LINK_RE) do
141
+ all, a, b, c, d = $&, $1, $2, $3, $4
142
+ if a =~ /<a\s/i # don't replace URL's that are already linked
143
+ all
144
+ else
145
+ text = b + c
146
+ text = yield(text) if block_given?
147
+ %(#{a}<a href="#{b=="www."?"http://www.":b}#{c}"#{html_options}>#{text}</a>#{d})
148
+ end
149
+ end
150
+ end
151
+ alias autolink auto_link
152
+
153
+ # takes a string and optional argument for outputting compliance HTML
154
+ # instead of XHTML.
155
+ #
156
+ # @example
157
+ # nl2br "a\nb\n\c" #=> 'a<br />b<br />c'
158
+ #
159
+ def nl2br(string, xhtml = true)
160
+ br = xhtml ? '<br />' : '<br>'
161
+ string.gsub(/\n/, br)
162
+ end
163
+
164
+ def obfuscate_email(email, text = nil)
165
+ obfuscated = []
166
+ email.to_s.each_byte{|c| obfuscated << "&#%03d" % c }
167
+ joined = obfuscated.join
168
+
169
+ %(<a href="mailto:#{joined}">#{text || joined}</a>)
170
+ end
171
+
172
+ # Returns Hash with tags as keys and their weight as value.
173
+ #
174
+ # Example:
175
+ # tags = %w[ruby ruby code ramaze]
176
+ # tagcloud(tags)
177
+ # # => {"code"=>0.75, "ramaze"=>0.75, "ruby"=>1.0}
178
+ #
179
+ # The weight can be influenced by adjusting the +min+ and +max+
180
+ # parameters, please make sure that +max+ is larger than +min+ to get
181
+ # meaningful output.
182
+ #
183
+ # This is not thought as immediate output to your template but rather to
184
+ # help either implementing your own algorithm or using the result as input
185
+ # for your tagcloud.
186
+ #
187
+ # @example
188
+ # tagcloud(tags).each do |tag, weight|
189
+ # style = "font-size: %0.2fem" % weight
190
+ # %a{:style => style, :href => Rs(tag)}= h(tag)
191
+ # end
192
+ #
193
+ def tagcloud(tags, min = 0.5, max = 1.5)
194
+ result = {}
195
+ total = tags.size.to_f
196
+ diff = max - min
197
+
198
+ tags.uniq.each do |tag|
199
+ count = tags.respond_to?(:count) ? tags.count(tag) : tags.select{|t| t==tag }.size
200
+ result[tag] = ((count / total) * diff) + min
201
+ end
202
+
203
+ result
204
+ end
205
+ end # Formatting
206
+ end # Helper
207
+ end # Ramaze
@@ -0,0 +1,49 @@
1
+ require 'ramaze/gestalt'
2
+
3
+ module Ramaze
4
+ module Helper
5
+ # Gestalt is the custom HTML/XML builder for Ramaze, based on a very simple
6
+ # DSL it will build your markup.
7
+ module Gestalt
8
+ CACHE_G = {}
9
+
10
+ def gestalt(&block)
11
+ Ramaze::Gestalt.new(&block)
12
+ end
13
+
14
+ def build(&block)
15
+ Ramaze::Gestalt.build(&block)
16
+ end
17
+
18
+ def g(meth = nil, view = nil)
19
+ meth ||= caller[0].slice(/`(.*)'?/).gsub(/[\`\']/, '')
20
+ view_name = (self.class.to_s.sub('Controller', '') + 'View').split('::')
21
+ view ||= view_name.inject(Object){ |ns, name| ns.const_get(name) }
22
+
23
+ gestalt_class = CACHE_G[view] ||= g_class
24
+ gestalt = gestalt_class.new
25
+ gestalt.extend(view)
26
+ instance_variables.each do |iv|
27
+ gestalt.instance_variable_set(iv, instance_variable_get(iv))
28
+ end
29
+ gestalt.__send__(meth)
30
+ gestalt.to_s
31
+ end
32
+
33
+ def g_class
34
+ ancs = self.class.ancestors
35
+ helpers = Ramaze::Helper.constants.map{ |c| Ramaze::Helper.const_get(c)}
36
+ our_helpers = ancs & helpers
37
+ our_helpers.delete(Ramaze::Helper::Gestalt)
38
+ gestalt_class = Class.new(Ramaze::Gestalt){ include(*our_helpers) }
39
+ end
40
+
41
+ def method_missing(sym, *args, &block)
42
+ @gestalt ||= gestalt
43
+ @gestalt.send(sym, *args, &block)
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ module Ramaze::Helper::Link; undef :a end
@@ -0,0 +1,75 @@
1
+ module Ramaze
2
+ module Helper
3
+ # Helps you building Gravatar URIs from an email address.
4
+ #
5
+ # For more information about gravatars, please see: http://gravatar.com
6
+ #
7
+ # The implementation of the gravatar method changed significantly, it does
8
+ # less hand-holding but is more flexible so you can simply put your own
9
+ # helper on top.
10
+ #
11
+ # It might not know about all the secret parameters (like 'force'), if you
12
+ # find out more of these please consider contributing a patch.
13
+ module Gravatar
14
+ # API to build gravatar URIs from an email address (or any other String).
15
+ #
16
+ # @example Simple usage
17
+ # class Gravatars < Ramaze::Controller
18
+ # helper :gravatar
19
+ #
20
+ # def index
21
+ # %q(
22
+ # Input your email address and I'll show you your Gravatar
23
+ # <form>
24
+ # <input type="text" name="email" />
25
+ # <input type="submit" />
26
+ # </form>
27
+ # <?r if email = request[:email] ?>
28
+ # Your gravatar is:
29
+ # <img src="#{gravatar(email)}" />
30
+ # <?r end ?>
31
+ # )
32
+ # end
33
+ # end
34
+ #
35
+ # @option opts [#to_s] :ext (nil)
36
+ # append a filename extension for the image, like '.jpg'
37
+ #
38
+ # @option opts [#to_i] :size (80)
39
+ # The size of the gravatar, square, so 80 is 80x80.
40
+ # Allowed range is from 1 to 512.
41
+ #
42
+ # @option opts [#to_s] :rating ('g')
43
+ # Only serve a gravatar if it has a content rating equal or below the
44
+ # one specified. Ratings, in order are: 'g', 'pg', 'r', or 'x'
45
+ #
46
+ # @option opts [#to_s] :default (nil)
47
+ # Fall back to default if the given +email+ doesn't have an gravatar;
48
+ # may be an absolute url, 'identicon', 'monsterid', or 'wavatar'
49
+ #
50
+ # @option opts [true, false] :force (false)
51
+ # Force use of the default avatar, useful if you want to use only
52
+ # identicons or the like
53
+ #
54
+ # @param [#to_str] email
55
+ # @return [URI]
56
+ # @see http://en.gravatar.com/site/implement/url
57
+ # @author manveru
58
+ #
59
+ def gravatar(email, opts = {})
60
+ uri = URI("http://www.gravatar.com/")
61
+ ext = opts[:ext]
62
+ uri.path = "/avatar/#{Digest::MD5.hexdigest(email.to_str)}#{ext}"
63
+
64
+ query = {}
65
+ query[:size] = opts[:size].to_i.to_s if opts.key?(:size)
66
+ query[:rating] = opts[:rating].to_s if opts.key?(:rating)
67
+ query[:default] = opts[:default].to_s if opts.key?(:default)
68
+ query[:force] = '1' if opts[:force]
69
+
70
+ uri.query = Rack::Utils.build_query(query) if query.any?
71
+ uri
72
+ end
73
+ end # Gravatar
74
+ end # Helper
75
+ end # Ramaze
@@ -1,13 +1,14 @@
1
1
  # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
2
+ # All files in this distribution are subject to the terms of the MIT license.
3
3
 
4
4
  require 'openid'
5
5
  require 'openid/store/filesystem'
6
6
  require 'openid/extensions/pape'
7
+ require 'openid/extensions/sreg'
7
8
 
8
9
  module Ramaze
9
10
 
10
- openid_store_file = ::File.join(Dir.tmpdir, 'openid-store')
11
+ openid_store_file = ::File.join(Ramaze.options.roots[0], '/tmp', 'openid-store')
11
12
 
12
13
  # Constant for storing meta-information persistent
13
14
  OpenIDStore = OpenID::Store::Filesystem.new(openid_store_file)
@@ -16,79 +17,103 @@ module Ramaze
16
17
  # It provides a nice and simple way to provide and control access over the
17
18
  # OpenID authentication model.
18
19
 
19
- module Helper::Identity
20
+ module Helper
21
+ module Identity
22
+ LOOKUP << self
20
23
 
21
- # Simple form for use or overwriting.
22
- # Has to provide the same functionality when overwritten or directly
23
- # embedded into a page.
24
- def openid_login_form(caption="login")
25
- %{
26
- <form method="GET" action="#{Rs(:openid_begin)}">
24
+ # Simple form for use or overwriting.
25
+ # Has to provide the same functionality when overwritten or directly
26
+ # embedded into a page.
27
+ def openid_login_form(caption="login")
28
+ %{
29
+ <form method="GET" action="#{rs(:openid_begin)}">
27
30
  Identity URL: <input type="text" name="url" />
28
31
  <input type="submit" value="#{caption}"/>
29
32
  </form>
30
- }
31
- end
32
-
33
- # We land here from the openid_login_form and if we can find a matching
34
- # OpenID server we redirect the user to it, the browser will return to
35
- # openid_complete when the authentication is complete.
36
- def openid_begin
37
- url = request['url']
38
- redirect_referrer if url.to_s.empty?
39
- session[:openid_entry] = request.referrer
40
-
41
- openid_request = openid_consumer.begin(url)
42
-
43
- papereq = OpenID::PAPE::Request.new
44
- papereq.add_policy_uri(OpenID::PAPE::AUTH_PHISHING_RESISTANT)
45
- papereq.max_auth_age = 2*60*60
46
- openid_request.add_extension(papereq)
47
- openid_request.return_to_args['did_pape'] = 'y'
48
-
49
- root = "http://#{request.http_host}/"
50
- return_to = root[0..-2] + Rs(:openid_complete)
51
- immediate = false
52
- if openid_request.send_redirect?(root, return_to, immediate)
53
- redirect_url = openid_request.redirect_url(root, return_to, immediate)
54
- raw_redirect redirect_url
55
- else
56
- # what the hell is @form_text ?
33
+ }
57
34
  end
58
35
 
59
- rescue OpenID::OpenIDError => ex
60
- flash[:error] = "Discovery failed for #{url}: #{ex}"
61
- raw_redirect Rs(:/)
62
- end
63
-
64
- # After having authenticated at the OpenID server browsers are redirected
65
- # back here and on success we set the session[:openid_identity] and a little
66
- # default flash message. Then we redirect to wherever session[:openid_entry]
67
- # points us to, which was set on openid_begin to the referrer
68
- #
69
- # TODO:
70
- # - maybe using StackHelper, but this is a really minimal overlap?
71
- def openid_complete
72
- openid_response = openid_consumer.complete(request.params, request.request_uri)
73
-
74
- case openid_response.status
75
- when OpenID::Consumer::FAILURE
76
- flash[:error] = 'OpenID - Verification failed.'
77
- when OpenID::Consumer::SUCCESS
78
- session[:openid_identity] = openid_response.identity_url
79
- flash[:success] = 'OpenID - Verification done.'
36
+ # We land here from the openid_login_form and if we can find a matching
37
+ # OpenID server we redirect the user to it, the browser will return to
38
+ # openid_complete when the authentication is complete.
39
+ def openid_begin
40
+ # The OpenID URL pointing to a user's OpenID page,
41
+ # for example: http://username.myopenid.com)
42
+ url = request['url']
43
+ redirect_referrer if url.to_s.empty?
44
+ session[:openid] ||= {}
45
+ session[:openid][:entry] = request.referrer
46
+
47
+ openid_request = openid_consumer.begin(url)
48
+
49
+ # We want these communications to be a secure as the server can
50
+ # support!
51
+ papereq = OpenID::PAPE::Request.new
52
+ papereq.add_policy_uri(OpenID::PAPE::AUTH_PHISHING_RESISTANT)
53
+ papereq.max_auth_age = 2*60*60
54
+ openid_request.add_extension(papereq)
55
+
56
+ # Request information about the person
57
+ sregreq = OpenID::SReg::Request.new
58
+ sregreq.request_fields(['fullname', 'nickname', 'dob', 'email',
59
+ 'gender', 'postcode', 'country', 'language',
60
+ 'timezone'])
61
+ openid_request.add_extension(sregreq)
62
+ openid_request.return_to_args['did_pape'] = 'y'
63
+
64
+ root = "http://#{request.http_host}/"
65
+ return_to = request.domain(rs(:openid_complete)).to_s
66
+ immediate = false
67
+
68
+ if openid_request.send_redirect?(root, return_to, immediate)
69
+ redirect_url =
70
+ openid_request.redirect_url(root, return_to, immediate)
71
+ raw_redirect redirect_url
72
+ else
73
+ # what the hell is @form_text ?
74
+ end
75
+
76
+ rescue OpenID::OpenIDError => ex
77
+ flash[:error] = "Discovery failed for #{url}: #{ex}"
78
+ raw_redirect rs(:/)
80
79
  end
81
80
 
82
- session.delete(:_openid_consumer_service)
83
-
84
- raw_redirect session[:openid_entry]
85
- end
81
+ # After having authenticated at the OpenID server browsers are redirected
82
+ # back here and on success we set the session[:openid][:identity] and a little
83
+ # default flash message. Then we redirect to wherever session[:openid][:entry]
84
+ # points us to, which was set on openid_begin to the referrer
85
+ #
86
+ # TODO:
87
+ # - maybe using StackHelper, but this is a really minimal overlap?
88
+ def openid_complete
89
+ openid_response = openid_consumer.complete(request.params, request.url)
90
+
91
+ case openid_response.status
92
+ when OpenID::Consumer::FAILURE
93
+ flash[:error] = "OpenID - Verification failed: #{openid_response.message}"
94
+ when OpenID::Consumer::SUCCESS
95
+ # Backwards compatibility
96
+ session[:openid][:identity] = openid_response.identity_url
97
+ session[:openid][:sreg] = OpenID::SReg::Response.from_success_response(openid_response)
98
+
99
+ # Forward compatibility :)
100
+ session[:openid_identity] = openid_response.identity_url
101
+ session[:openid_sreg] = OpenID::SReg::Response.from_success_response(openid_response)
102
+
103
+ flash[:success] = 'OpenID - Verification done.'
104
+ end
105
+
106
+ session.delete(:_openid_consumer_service)
107
+
108
+ raw_redirect session[:openid][:entry]
109
+ end
86
110
 
87
- private
111
+ private
88
112
 
89
- # Fetch/Create a OpenID::Consumer for current session.
90
- def openid_consumer
91
- OpenID::Consumer.new(session, Ramaze::OpenIDStore)
92
- end
93
- end
94
- end
113
+ # Fetch/Create a OpenID::Consumer for current session.
114
+ def openid_consumer
115
+ OpenID::Consumer.new(session, Ramaze::OpenIDStore)
116
+ end
117
+ end # Identity
118
+ end # Helper
119
+ end # Ramaze