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,46 @@
1
+ # suppress load warning message
2
+ verbose = $VERBOSE
3
+ $VERBOSE = nil
4
+ require 'gettext/rgettext'
5
+ $VERBOSE = verbose
6
+
7
+ module Ramaze::Tool::Gettext::Parser
8
+ module_function
9
+
10
+ TARGETS = Ramaze::Template::ENGINES.values.inject([]) do |exts, list|
11
+ list += exts
12
+ end
13
+
14
+ def target?(file)
15
+ TARGETS.include?(File.extname(file)[1..-1])
16
+ end
17
+
18
+ def parse(file, ary)
19
+ regex = Ramaze::Tool::Gettext.trait[:regex]
20
+ body = File.read(file)
21
+ body.gsub!(regex) do
22
+ msg = $1
23
+ unless msg.to_s.empty?
24
+ line_number = body[0..(body.index(msg))].split("\n").size
25
+ add_message(ary, msg, file, line_number)
26
+ end
27
+ end
28
+ return ary
29
+ end
30
+
31
+ def add_message(ary, msg, file, line_number)
32
+ loc = message_location(file, line_number)
33
+ if value = ary.assoc(msg)
34
+ value << loc
35
+ else
36
+ ary << [msg, loc]
37
+ end
38
+ return ary
39
+ end
40
+
41
+ def message_location(file, line_number)
42
+ file + ":line" + line_number.to_s
43
+ end
44
+ end
45
+
46
+ GetText::RGetText.add_parser(Ramaze::Tool::Gettext::Parser)
@@ -0,0 +1,109 @@
1
+ #! /usr/bin/env ruby
2
+ =begin
3
+ rgettext.rb - Generate a .pot file.
4
+
5
+ Copyright (C) 2003-2006 Masao Mutoh
6
+ Copyright (C) 2001,2002 Yasushi Shoji, Masao Mutoh
7
+
8
+ Yasushi Shoji <yashi at atmark-techno.com>
9
+ Masao Mutoh <mutoh at highway.ne.jp>
10
+
11
+ You may redistribute it and/or modify it under the same
12
+ license terms as Ruby.
13
+ =end
14
+
15
+
16
+ module GetText
17
+
18
+ module RGetText #:nodoc:
19
+ extend GetText
20
+
21
+ MAX_LINE_LEN = 70 unless defined?(MAX_LINE_LEN)
22
+
23
+ module_function
24
+
25
+ def generate_pot_header # :nodoc:
26
+ time = Time.now.strftime("%Y-%m-%d %H:%M")
27
+ off = Time.now.utc_offset
28
+ sign = off <= 0 ? '-' : '+'
29
+ time += sprintf('%s%02d%02d', sign, *(off.abs / 60).divmod(60))
30
+
31
+ <<EOS
32
+ # SOME DESCRIPTIVE TITLE.
33
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
34
+ # This file is distributed under the same license as the PACKAGE package.
35
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
36
+ #
37
+ #, fuzzy
38
+ msgid ""
39
+ msgstr ""
40
+ "Project-Id-Version: PACKAGE VERSION\\n"
41
+ "POT-Creation-Date: #{time}\\n"
42
+ "PO-Revision-Date: #{time}\\n"
43
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"
44
+ "Language-Team: LANGUAGE <LL@li.org>\\n"
45
+ "MIME-Version: 1.0\\n"
46
+ "Content-Type: text/plain; charset=UTF-8\\n"
47
+ "Content-Transfer-Encoding: 8bit\\n"
48
+ EOS
49
+ end
50
+
51
+ def generate_pot(ary) # :nodoc:
52
+ str = ""
53
+ result = Array.new
54
+ ary.each do |key|
55
+ msgid = key.shift.dup
56
+ curr_pos = MAX_LINE_LEN
57
+ key.each do |e|
58
+ if curr_pos + e.size > MAX_LINE_LEN
59
+ str << "\n#:"
60
+ curr_pos = 3
61
+ else
62
+ curr_pos += (e.size + 1)
63
+ end
64
+ str << " " << e
65
+ end
66
+ msgid.gsub!(/"/, '\"')
67
+ msgid.gsub!(/\r/, '')
68
+
69
+ str << "\nmsgid \"" << msgid << "\"\n"
70
+ str << "msgstr \"\"\n"
71
+ end
72
+ str
73
+ end
74
+
75
+ def generate_translated_po(hash)
76
+ str = generate_pot_header
77
+ result = Array.new
78
+
79
+ hash.keys.sort.each do |msgid|
80
+ msgid = msgid.dup
81
+ msgstr = hash[msgid]
82
+
83
+ msgid.gsub!(/"/, '\"')
84
+ msgid.gsub!(/\r/, '')
85
+
86
+ if msgstr
87
+ msgstr.gsub!(/"/, '\"')
88
+ msgstr.gsub!(/\r/, '')
89
+ end
90
+
91
+ str << "\nmsgid \"" << msgid << "\"\n"
92
+ str << "msgstr \"" << msgstr << "\"\n"
93
+ end
94
+
95
+ str
96
+ end
97
+
98
+ def generate(array) # :nodoc:
99
+ str = ''
100
+ str << generate_pot_header
101
+ str << generate_pot(array)
102
+ end
103
+ end
104
+ end
105
+
106
+ if $0 == __FILE__
107
+ require 'yaml'
108
+ puts GetText::RGetText.generate_translated_po(YAML.load_file(ARGV[0]))
109
+ end
@@ -0,0 +1,113 @@
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'ramaze/tool/localize'
5
+ require 'ramaze/contrib/gettext/mo'
6
+ require 'ramaze/contrib/gettext/po'
7
+
8
+ # Gettext helps transforming arbitrary text into localized forms using
9
+ # a simple regular expression and substituting occurences with translations
10
+ # stored in .mo files.
11
+ #
12
+ # == MO generation
13
+ #
14
+ # See http://www.gnu.org/software/gettext/ for a general overview over
15
+ # Gettext. Generally it's easier to use a graphical translator like Poedit.
16
+ #
17
+ # The default language is en, a .po template file will be saved by default
18
+ # under `conf/locale_en.mo.pot`. Individual languages are by default looked
19
+ # up at `conf/locale_fi.mo` for localization.
20
+ #
21
+ # == Usage:
22
+ #
23
+ # Ramaze::Dispatcher::Action::FILTER << Ramaze::Tool::Gettext
24
+
25
+ module Ramaze
26
+ class Tool::Gettext < Tool::Localize
27
+
28
+ # Enable Localization
29
+ trait :enable => true
30
+
31
+ # Default language that is used if the browser don't suggests otherwise or
32
+ # the language requested is not available.
33
+ trait :default_language => 'en'
34
+
35
+ # languages supported
36
+ trait :languages => %w[ en ]
37
+
38
+ # YAML files the localizations are saved to and loaded from, %s is
39
+ # substituted by the values from trait[:languages]
40
+ trait :file => 'conf/locale_%s.mo'.freeze
41
+
42
+ # The pattern that is substituted with the translation of the current locale.
43
+ trait :regex => /\[\[(.*?)\]\]/
44
+
45
+ # Browsers may send different keys for the same language, this allows you to
46
+ # do some coercion between what you use as keys and what the browser sends.
47
+ trait :mapping => { 'en-us' => 'en', 'ja' => 'jp'}
48
+
49
+ # When this is set to false, it will not save newly collected translatable
50
+ # strings to disk. Disable this for production use, as it slows the
51
+ # application down.
52
+ trait :collect => true
53
+
54
+
55
+ # Load given locales from disk and save it into the dictionary.
56
+
57
+ def self.load(*locales)
58
+ Log.debug "loading locales: #{locales.inspect}"
59
+
60
+ dict = trait[:dictionary] || {}
61
+
62
+ locales.each do |locale|
63
+ begin
64
+ dict[locale] = ::MOFile.open(trait[:file] % locale)
65
+ rescue Errno::ENOENT
66
+ Log.error "couldn't load #{trait[:file] % locale}"
67
+ dict[locale] = {}
68
+ end
69
+ end
70
+
71
+ trait[:dictionary] = dict
72
+ end
73
+
74
+ # Reloads given locales from the disk to refresh the dictionary.
75
+
76
+ def self.update
77
+ trait[:dictionary] = nil
78
+ dictionary.each do |locale, dict|
79
+ if dict.kind_of?(MOFile)
80
+ Log.debug("Reloading #{dict.filename}")
81
+ dict.update!
82
+ end
83
+ end
84
+ end
85
+
86
+ # Stores given locales from the dictionary to disk.
87
+
88
+ def self.store(*locales)
89
+ keys = []
90
+ dictionary.each do |locale, dict|
91
+ keys.concat dict.keys
92
+ end
93
+ keys.delete ""
94
+
95
+ data = ::GetText::RGetText.generate(keys.compact.uniq.sort.map {|x| [x] })
96
+ file = (trait[:file] % trait[:default_language]) + '.pot'
97
+ File.open(file, File::CREAT|File::TRUNC|File::WRONLY) do |fd|
98
+ fd.write data
99
+ end
100
+ rescue Errno::ENOENT => e
101
+ Log.error e
102
+ end
103
+ end
104
+ end
105
+
106
+ class Ramaze::Contrib::Gettext
107
+
108
+ # Called by Ramaze::Contrib.load, adds Gettext to Action::Filter
109
+
110
+ def self.startup
111
+ Ramaze::Dispatcher::Action::FILTER << Ramaze::Tool::Gettext
112
+ end
113
+ end
@@ -0,0 +1,69 @@
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ # gzip_filter.rb
5
+ #
6
+ # Use this to compress "large" pages with gzip. All major browsers support
7
+ # gzipped pages.
8
+ # This filter brought to you by your friends in #ramaze:
9
+ # Pistos, manveru, rikur and Kashia.
10
+ #
11
+ # Usage, in start.rb:
12
+ #
13
+ # require 'ramaze/contrib/gzip_filter'
14
+ # Ramaze::Dispatcher::Action::FILTER << Ramaze::Filter::Gzip
15
+ #
16
+ # Setting options (at any point in your code):
17
+ #
18
+ # Ramaze::Filter::Gzip.trait(
19
+ # :threshold => 1024,
20
+ # :content_type => /^text\/.+/
21
+ # )
22
+
23
+ require 'zlib'
24
+
25
+ module Ramaze
26
+ module Filter
27
+ class Gzip
28
+
29
+ trait :enabled => true,
30
+ :content_type => /^text\/.+/,
31
+ :threshold => 32768 # bytes
32
+
33
+ class << self
34
+
35
+ include Ramaze::Trinity
36
+
37
+ # Enables being plugged into Dispatcher::Action::FILTER
38
+
39
+ def call( response, options = {} )
40
+ return response unless trait[ :enabled ]
41
+ return response unless body = response.body
42
+ return response if body.respond_to?( :read )
43
+
44
+ accepts = request.env[ 'HTTP_ACCEPT_ENCODING' ]
45
+ return response if accepts.nil? || ( accepts !~ /(x-gzip|gzip)/ )
46
+
47
+ acceptable_size = body.size >= trait[ :threshold ]
48
+ acceptable_type = response.content_type =~ trait[:content_type]
49
+
50
+ if acceptable_type and acceptable_size
51
+ output = StringIO.new
52
+ def output.close
53
+ # Zlib closes the file handle, so we want to circumvent this
54
+ rewind
55
+ end
56
+ gz = Zlib::GzipWriter.new( output )
57
+ gz.write( body )
58
+ gz.close
59
+
60
+ response.body = output.string
61
+ response.header[ 'Content-encoding' ] = 'gzip'
62
+ end
63
+
64
+ response
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,59 @@
1
+ # A hack to make MaRuKu use UltraViolet for highlighting
2
+ # To specify the style to use use for example:
3
+ # uv_style: amy
4
+ # html_use_syntax: true
5
+ # code_lang: ruby
6
+ # In the document header area.
7
+
8
+ require 'maruku'
9
+
10
+ module MaRuKu
11
+ module Out
12
+ module HTML
13
+ def uv_highlight(source, lang, style)
14
+ require 'uv'
15
+
16
+ html = Uv.parse(source, 'xhtml', lang, lines = false, style)
17
+
18
+ # Prepare <code> containing <pre>
19
+ code = Document.new(html, :respect_whitespace => :all).root
20
+ code.name = 'code'
21
+ code.attributes['class'] = lang
22
+ code.attributes['lang'] = lang
23
+
24
+ # Prepare <pre>
25
+ pre = Element.new('pre')
26
+ pre << code
27
+ pre.attributes['class'] = style
28
+ pre
29
+ rescue => ex
30
+ puts ex
31
+ to_html_code_using_pre(source)
32
+ end
33
+
34
+ def to_html_code
35
+ source = self.raw_code
36
+ use_syntax = get_setting(:html_use_syntax)
37
+ uv_style = get_setting(:uv_style)
38
+
39
+ lang = self.attributes[:lang] || @doc.attributes[:code_lang]
40
+ lang ||= 'ruby' if attributes[:ruby]
41
+
42
+ # we always use syntax highlighting, this is a doc wiki
43
+ if lang and use_syntax
44
+ element = uv_highlight(source, lang, uv_style)
45
+ else
46
+ element = to_html_code_using_pre(source)
47
+ end
48
+
49
+ color = get_setting(:code_background_color)
50
+
51
+ if color != Globals[:code_background_color]
52
+ element.attributes['style'] = "background-color: #{color};"
53
+ end
54
+
55
+ add_ws element
56
+ end
57
+ end # HTML
58
+ end # Out
59
+ end # MaRuKu
@@ -0,0 +1,36 @@
1
+ require "ruby-prof"
2
+
3
+ module Ramaze
4
+ class Dispatcher
5
+ class ActionProfiler < Action
6
+ def self.call(path)
7
+ if RubyProf.running?
8
+ super
9
+ else
10
+ result = RubyProf.profile { super }
11
+ output = StringIO.new
12
+ printer = RubyProf::FlatPrinter.new(result)
13
+ options = {
14
+ :min_percent => Contrib::Profiling.trait[:min_percent],
15
+ :print_file => false
16
+ }
17
+ printer.print(output, options)
18
+ output.string.split("\n").each do |line|
19
+ Log.info(line)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ module Contrib
27
+ class Profiling
28
+ trait :min_percent => 1
29
+
30
+ def self.startup
31
+ Dispatcher::FILTER.delete(Dispatcher::Action)
32
+ Dispatcher::FILTER << Dispatcher::ActionProfiler
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,17 @@
1
+ Ramaze::Rewrite['REST dispatch'] = lambda do |path, request|
2
+ path << '/' unless path[-1] == '/'
3
+
4
+ method = if request.request_method == 'POST' and request.params.has_key?('method')
5
+ request.params['method'].upcase
6
+ else
7
+ request.request_method
8
+ end
9
+
10
+ case method
11
+ when 'GET' then path << 'show/'
12
+ when 'POST' then path << 'create/'
13
+ when 'PUT' then path << 'update/'
14
+ when 'DELETE' then path << 'destroy/'
15
+ else path
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ require 'sequel'
2
+
3
+ module Sequel
4
+ class Model
5
+ # Force join table generation
6
+ #
7
+ # Usage:
8
+ # User.create_join(Article, 'articles_users')
9
+ # # or let the method figure out the correct join table using sequel
10
+ # # conventions.
11
+ # User.create_join(Article)
12
+ def self.create_join(to, name = nil)
13
+ from = self
14
+ name ||= [table_name.to_s, to.table_name.to_s].sort.join('_')
15
+ from_key = "#{from.table_name.to_s.singularize}_id"
16
+ to_key = "#{to.table_name.to_s.singularize}_id"
17
+
18
+ db.create_table! name do
19
+ primary_key :id
20
+ foreign_key from_key, :class => from
21
+ foreign_key to_key, :class => to
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,12 @@
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ module Sequel
5
+ class Model
6
+ class << self
7
+ def fill request_object = Ramaze::Request.current
8
+ create(request_object.params)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,129 @@
1
+ require 'ramaze/gestalt'
2
+
3
+ # job = Job[4]
4
+ # puts CGI::pretty(FormField.new(job, :contract, show_errors = true, Job::CONTRACTS).to_s)
5
+
6
+ class FormField
7
+ attr_accessor :this, :field, :show_errors, :hint, :db_type, :id, :value
8
+
9
+ # show_errors may be a number indicating how many errors it should display at
10
+ # maximum, 0 displays none, -1 all
11
+
12
+ def initialize(this, field, show_errors = true, hint = nil)
13
+ @this, @field, @show_errors, @hint =
14
+ this, field.to_sym, show_errors, hint
15
+ @db_type = db_type
16
+ @id = "form_#{@field}"
17
+ @value = this.send(@field)
18
+ end
19
+
20
+ def db_type
21
+ if field_schema = this.class.db_schema[field]
22
+ field_schema[:db_type]
23
+ else
24
+ nil
25
+ end
26
+ end
27
+
28
+ def to_s
29
+ unless label = @this.class::FORM_LABEL[field]
30
+ raise("No FORM_LABEL for %p on %p" % [field, @this.class])
31
+ end
32
+
33
+ label += ':'
34
+ id = @id
35
+ _self = self
36
+
37
+ Ramaze::Gestalt.build{
38
+ div(:class => :pair){
39
+ label(:for => id){ label }
40
+ _self.build_tag(self)
41
+ _self.build_errors(self)
42
+ }
43
+ }
44
+ end
45
+
46
+ def password(gestalt)
47
+ gestalt.input(@args.merge :type => :password, :value => value)
48
+ end
49
+
50
+ def checkbox(gestalt)
51
+ @args[:checked] = :checked if value
52
+ gestalt.input(@args.merge :type => :checkbox)
53
+ end
54
+
55
+ def select(gestalt)
56
+ gestalt.select @args do
57
+ v = value.to_s
58
+ hint.each do |h|
59
+ h = h.to_s
60
+ if h == v
61
+ gestalt.option(:value => h, :selected => :selected){ h }
62
+ else
63
+ gestalt.option(:value => h){ h }
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ def input(gestalt)
70
+ gestalt.input(@args.merge :type => :text, :value => value)
71
+ end
72
+
73
+ def file(gestalt)
74
+ gestalt.input(@args.merge :type => :file)
75
+ end
76
+
77
+ def textarea(gestalt)
78
+ gestalt.textarea(@args){ value.to_s }
79
+ end
80
+
81
+ def build_tag(gestalt)
82
+ @args = {:id => id, :name => field}
83
+
84
+ case hint
85
+ when :password
86
+ password(gestalt)
87
+ when :boolean, :checkbox
88
+ checkbox(gestalt)
89
+ when :textarea
90
+ textarea(gestalt)
91
+ when :file
92
+ file(gestalt)
93
+ when Array, Range
94
+ select(gestalt)
95
+ else
96
+ case db_type
97
+ when 'varchar', 'integer'
98
+ input(gestalt)
99
+ when 'boolean'
100
+ checkbox(gestalt)
101
+ when 'string'
102
+ textarea(gestalt)
103
+ else
104
+ raise "Unsupported type: (#{db_type || hint} : #{field})"
105
+ end
106
+ end
107
+ end
108
+
109
+ def build_errors(gestalt)
110
+ each_error do |error|
111
+ gestalt.span(:class => :error){ error }
112
+ end
113
+ end
114
+
115
+ # TODO: suggest 'validated?' feature to sequel
116
+ def each_error(&block)
117
+ return unless show_errors
118
+
119
+ this.validate if this.errors.empty?
120
+ this.errors[field].first(show_errors).each(&block)
121
+ end
122
+
123
+ module Model
124
+ def form_field(field, hint = nil)
125
+ show_errors = Ramaze::Request.current.post? ? 1 : 0
126
+ FormField.new(self, field, show_errors, hint).to_s
127
+ end
128
+ end
129
+ end