ptomato-ramaze 2009.02

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 (592) hide show
  1. data/README.md +481 -0
  2. data/Rakefile +248 -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 +40 -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/partial.rb +28 -0
  171. data/examples/basic/simple.rb +56 -0
  172. data/examples/helpers/cache.rb +31 -0
  173. data/examples/helpers/form_with_sequel.rb +24 -0
  174. data/examples/helpers/httpdigest.rb +108 -0
  175. data/examples/helpers/identity.rb +18 -0
  176. data/examples/helpers/nitro_form.rb +23 -0
  177. data/examples/helpers/paginate.rb +71 -0
  178. data/examples/helpers/provide.rb +23 -0
  179. data/examples/helpers/rest.rb +28 -0
  180. data/examples/helpers/simple_captcha.rb +29 -0
  181. data/examples/misc/css.rb +37 -0
  182. data/examples/misc/facebook.rb +159 -0
  183. data/examples/misc/memleak_detector.rb +32 -0
  184. data/examples/misc/nagoro_element.rb +43 -0
  185. data/examples/misc/ramaise.rb +132 -0
  186. data/examples/misc/rapp.rb +45 -0
  187. data/examples/misc/sequel_scaffolding.rb +34 -0
  188. data/examples/misc/simple_auth.rb +35 -0
  189. data/examples/templates/template/external.amrita +19 -0
  190. data/examples/templates/template/external.haml +22 -0
  191. data/examples/templates/template/external.liquid +28 -0
  192. data/examples/templates/template/external.mab +30 -0
  193. data/examples/templates/template/external.nag +28 -0
  194. data/examples/templates/template/external.redcloth +19 -0
  195. data/examples/templates/template/external.rem +30 -0
  196. data/examples/templates/template/external.rhtml +28 -0
  197. data/examples/templates/template/external.tenjin +28 -0
  198. data/examples/templates/template/external.xsl +57 -0
  199. data/examples/templates/template/external.zmr +28 -0
  200. data/examples/templates/template_amrita2.rb +74 -0
  201. data/examples/templates/template_erubis.rb +53 -0
  202. data/examples/templates/template_ezamar.rb +50 -0
  203. data/examples/templates/template_haml.rb +50 -0
  204. data/examples/templates/template_liquid.rb +65 -0
  205. data/examples/templates/template_markaby.rb +58 -0
  206. data/examples/templates/template_nagoro.rb +51 -0
  207. data/examples/templates/template_redcloth.rb +59 -0
  208. data/examples/templates/template_remarkably.rb +55 -0
  209. data/examples/templates/template_tenjin.rb +53 -0
  210. data/examples/templates/template_xslt.rb +49 -0
  211. data/lib/proto/controller/init.rb +11 -0
  212. data/lib/proto/controller/main.rb +20 -0
  213. data/lib/proto/model/init.rb +4 -0
  214. data/lib/proto/public/.htaccess +24 -0
  215. data/lib/proto/public/css/ramaze_error.css +90 -0
  216. data/lib/proto/public/dispatch.fcgi +11 -0
  217. data/lib/proto/public/favicon.ico +0 -0
  218. data/lib/proto/public/js/jquery.js +3549 -0
  219. data/lib/proto/public/ramaze.png +0 -0
  220. data/lib/proto/spec/main.rb +25 -0
  221. data/lib/proto/start.rb +12 -0
  222. data/lib/proto/start.ru +16 -0
  223. data/lib/proto/view/error.xhtml +64 -0
  224. data/lib/proto/view/index.xhtml +34 -0
  225. data/lib/proto/view/page.xhtml +27 -0
  226. data/lib/ramaze/action/render.rb +192 -0
  227. data/lib/ramaze/action.rb +159 -0
  228. data/lib/ramaze/adapter/base.rb +128 -0
  229. data/lib/ramaze/adapter/cgi.rb +20 -0
  230. data/lib/ramaze/adapter/ebb.rb +18 -0
  231. data/lib/ramaze/adapter/evented_mongrel.rb +7 -0
  232. data/lib/ramaze/adapter/fake.rb +12 -0
  233. data/lib/ramaze/adapter/fcgi.rb +18 -0
  234. data/lib/ramaze/adapter/lsws.rb +19 -0
  235. data/lib/ramaze/adapter/mongrel.rb +21 -0
  236. data/lib/ramaze/adapter/scgi.rb +18 -0
  237. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +7 -0
  238. data/lib/ramaze/adapter/thin.rb +17 -0
  239. data/lib/ramaze/adapter/webrick.rb +43 -0
  240. data/lib/ramaze/adapter.rb +97 -0
  241. data/lib/ramaze/cache/file.rb +71 -0
  242. data/lib/ramaze/cache/memcached.rb +69 -0
  243. data/lib/ramaze/cache/memory.rb +6 -0
  244. data/lib/ramaze/cache/yaml_store.rb +68 -0
  245. data/lib/ramaze/cache.rb +114 -0
  246. data/lib/ramaze/contrib/email.rb +86 -0
  247. data/lib/ramaze/contrib/facebook/facebook.rb +171 -0
  248. data/lib/ramaze/contrib/facebook.rb +23 -0
  249. data/lib/ramaze/contrib/file_cache.rb +3 -0
  250. data/lib/ramaze/contrib/gems.rb +78 -0
  251. data/lib/ramaze/contrib/gettext/mo.rb +155 -0
  252. data/lib/ramaze/contrib/gettext/parser.rb +46 -0
  253. data/lib/ramaze/contrib/gettext/po.rb +109 -0
  254. data/lib/ramaze/contrib/gettext.rb +113 -0
  255. data/lib/ramaze/contrib/gzip_filter.rb +69 -0
  256. data/lib/ramaze/contrib/maruku_uv.rb +59 -0
  257. data/lib/ramaze/contrib/profiling.rb +36 -0
  258. data/lib/ramaze/contrib/rest.rb +17 -0
  259. data/lib/ramaze/contrib/sequel/create_join.rb +25 -0
  260. data/lib/ramaze/contrib/sequel/fill.rb +12 -0
  261. data/lib/ramaze/contrib/sequel/form_field.rb +129 -0
  262. data/lib/ramaze/contrib/sequel/image.rb +198 -0
  263. data/lib/ramaze/contrib/sequel/relation.rb +82 -0
  264. data/lib/ramaze/contrib/sequel_cache.rb +92 -0
  265. data/lib/ramaze/contrib.rb +82 -0
  266. data/lib/ramaze/controller/error.rb +46 -0
  267. data/lib/ramaze/controller/main.rb +2 -0
  268. data/lib/ramaze/controller/resolve.rb +278 -0
  269. data/lib/ramaze/controller.rb +288 -0
  270. data/lib/ramaze/current/request.rb +231 -0
  271. data/lib/ramaze/current/response.rb +37 -0
  272. data/lib/ramaze/current/session/flash.rb +88 -0
  273. data/lib/ramaze/current/session/hash.rb +62 -0
  274. data/lib/ramaze/current/session.rb +179 -0
  275. data/lib/ramaze/current.rb +51 -0
  276. data/lib/ramaze/dispatcher/action.rb +50 -0
  277. data/lib/ramaze/dispatcher/directory.rb +119 -0
  278. data/lib/ramaze/dispatcher/error.rb +108 -0
  279. data/lib/ramaze/dispatcher/file.rb +100 -0
  280. data/lib/ramaze/dispatcher.rb +145 -0
  281. data/lib/ramaze/error.rb +24 -0
  282. data/lib/ramaze/gestalt.rb +124 -0
  283. data/lib/ramaze/helper/aspect.rb +106 -0
  284. data/lib/ramaze/helper/auth.rb +125 -0
  285. data/lib/ramaze/helper/bench.rb +43 -0
  286. data/lib/ramaze/helper/cache.rb +140 -0
  287. data/lib/ramaze/helper/cgi.rb +39 -0
  288. data/lib/ramaze/helper/flash.rb +74 -0
  289. data/lib/ramaze/helper/form.rb +284 -0
  290. data/lib/ramaze/helper/formatting.rb +162 -0
  291. data/lib/ramaze/helper/gestalt.rb +15 -0
  292. data/lib/ramaze/helper/gravatar.rb +32 -0
  293. data/lib/ramaze/helper/httpdigest.rb +88 -0
  294. data/lib/ramaze/helper/identity.rb +119 -0
  295. data/lib/ramaze/helper/link.rb +122 -0
  296. data/lib/ramaze/helper/markaby.rb +31 -0
  297. data/lib/ramaze/helper/maruku.rb +9 -0
  298. data/lib/ramaze/helper/nitroform.rb +14 -0
  299. data/lib/ramaze/helper/pager.rb +366 -0
  300. data/lib/ramaze/helper/paginate.rb +233 -0
  301. data/lib/ramaze/helper/partial.rb +105 -0
  302. data/lib/ramaze/helper/redirect.rb +100 -0
  303. data/lib/ramaze/helper/rest.rb +43 -0
  304. data/lib/ramaze/helper/sendfile.rb +16 -0
  305. data/lib/ramaze/helper/sequel.rb +55 -0
  306. data/lib/ramaze/helper/simple_captcha.rb +31 -0
  307. data/lib/ramaze/helper/stack.rb +77 -0
  308. data/lib/ramaze/helper/tagz.rb +19 -0
  309. data/lib/ramaze/helper/thread.rb +17 -0
  310. data/lib/ramaze/helper/ultraviolet.rb +44 -0
  311. data/lib/ramaze/helper/user.rb +110 -0
  312. data/lib/ramaze/helper/xhtml.rb +23 -0
  313. data/lib/ramaze/helper.rb +87 -0
  314. data/lib/ramaze/log/analogger.rb +40 -0
  315. data/lib/ramaze/log/growl.rb +38 -0
  316. data/lib/ramaze/log/hub.rb +41 -0
  317. data/lib/ramaze/log/informer.rb +128 -0
  318. data/lib/ramaze/log/knotify.rb +28 -0
  319. data/lib/ramaze/log/logger.rb +26 -0
  320. data/lib/ramaze/log/logging.rb +89 -0
  321. data/lib/ramaze/log/rotatinginformer.rb +168 -0
  322. data/lib/ramaze/log/syslog.rb +51 -0
  323. data/lib/ramaze/log/xosd.rb +92 -0
  324. data/lib/ramaze/log.rb +27 -0
  325. data/lib/ramaze/option/dsl.rb +45 -0
  326. data/lib/ramaze/option/holder.rb +131 -0
  327. data/lib/ramaze/option/merger.rb +108 -0
  328. data/lib/ramaze/option.rb +156 -0
  329. data/lib/ramaze/reloader/watch_inotify.rb +85 -0
  330. data/lib/ramaze/reloader/watch_stat.rb +58 -0
  331. data/lib/ramaze/reloader.rb +170 -0
  332. data/lib/ramaze/route.rb +97 -0
  333. data/lib/ramaze/setup.rb +50 -0
  334. data/lib/ramaze/snippets/array/put_within.rb +44 -0
  335. data/lib/ramaze/snippets/binding/locals.rb +25 -0
  336. data/lib/ramaze/snippets/blankslate.rb +7 -0
  337. data/lib/ramaze/snippets/dictionary.rb +504 -0
  338. data/lib/ramaze/snippets/divide.rb +22 -0
  339. data/lib/ramaze/snippets/fiber.rb +63 -0
  340. data/lib/ramaze/snippets/kernel/constant.rb +41 -0
  341. data/lib/ramaze/snippets/kernel/pretty_inspect.rb +21 -0
  342. data/lib/ramaze/snippets/metaid.rb +17 -0
  343. data/lib/ramaze/snippets/numeric/filesize_format.rb +32 -0
  344. data/lib/ramaze/snippets/numeric/time.rb +63 -0
  345. data/lib/ramaze/snippets/object/__dir__.rb +29 -0
  346. data/lib/ramaze/snippets/object/acquire.rb +37 -0
  347. data/lib/ramaze/snippets/object/instance_variable_defined.rb +19 -0
  348. data/lib/ramaze/snippets/object/pretty.rb +16 -0
  349. data/lib/ramaze/snippets/object/scope.rb +18 -0
  350. data/lib/ramaze/snippets/object/traits.rb +76 -0
  351. data/lib/ramaze/snippets/ordered_set.rb +51 -0
  352. data/lib/ramaze/snippets/proc/locals.rb +19 -0
  353. data/lib/ramaze/snippets/ramaze/acquire.rb +31 -0
  354. data/lib/ramaze/snippets/ramaze/caller_info.rb +30 -0
  355. data/lib/ramaze/snippets/ramaze/caller_lines.rb +51 -0
  356. data/lib/ramaze/snippets/ramaze/deprecated.rb +21 -0
  357. data/lib/ramaze/snippets/ramaze/fiber.rb +24 -0
  358. data/lib/ramaze/snippets/ramaze/state.rb +86 -0
  359. data/lib/ramaze/snippets/ramaze/struct.rb +45 -0
  360. data/lib/ramaze/snippets/string/camel_case.rb +21 -0
  361. data/lib/ramaze/snippets/string/color.rb +31 -0
  362. data/lib/ramaze/snippets/string/each.rb +19 -0
  363. data/lib/ramaze/snippets/string/end_with.rb +20 -0
  364. data/lib/ramaze/snippets/string/esc.rb +34 -0
  365. data/lib/ramaze/snippets/string/ord.rb +21 -0
  366. data/lib/ramaze/snippets/string/snake_case.rb +21 -0
  367. data/lib/ramaze/snippets/string/start_with.rb +19 -0
  368. data/lib/ramaze/snippets/string/unindent.rb +28 -0
  369. data/lib/ramaze/snippets/thread/into.rb +18 -0
  370. data/lib/ramaze/snippets.rb +22 -0
  371. data/lib/ramaze/spec/helper/bacon.rb +7 -0
  372. data/lib/ramaze/spec/helper/browser.rb +88 -0
  373. data/lib/ramaze/spec/helper/mock_http.rb +64 -0
  374. data/lib/ramaze/spec/helper/pretty_output.rb +82 -0
  375. data/lib/ramaze/spec/helper/requester.rb +63 -0
  376. data/lib/ramaze/spec/helper/simple_http.rb +434 -0
  377. data/lib/ramaze/spec/helper/snippets.rb +14 -0
  378. data/lib/ramaze/spec/helper.rb +135 -0
  379. data/lib/ramaze/spec.rb +1 -0
  380. data/lib/ramaze/store/default.rb +109 -0
  381. data/lib/ramaze/template/amrita2.rb +49 -0
  382. data/lib/ramaze/template/builder.rb +28 -0
  383. data/lib/ramaze/template/erubis.rb +41 -0
  384. data/lib/ramaze/template/ezamar/element.rb +169 -0
  385. data/lib/ramaze/template/ezamar/engine.rb +76 -0
  386. data/lib/ramaze/template/ezamar/morpher.rb +135 -0
  387. data/lib/ramaze/template/ezamar/render_partial.rb +39 -0
  388. data/lib/ramaze/template/ezamar/textpow.syntax +34 -0
  389. data/lib/ramaze/template/ezamar.rb +42 -0
  390. data/lib/ramaze/template/haml.rb +37 -0
  391. data/lib/ramaze/template/liquid.rb +36 -0
  392. data/lib/ramaze/template/markaby.rb +52 -0
  393. data/lib/ramaze/template/maruku.rb +34 -0
  394. data/lib/ramaze/template/nagoro.rb +52 -0
  395. data/lib/ramaze/template/none.rb +14 -0
  396. data/lib/ramaze/template/redcloth.rb +25 -0
  397. data/lib/ramaze/template/remarkably.rb +38 -0
  398. data/lib/ramaze/template/sass.rb +38 -0
  399. data/lib/ramaze/template/tagz.rb +79 -0
  400. data/lib/ramaze/template/tenjin.rb +74 -0
  401. data/lib/ramaze/template/xslt.rb +100 -0
  402. data/lib/ramaze/template.rb +87 -0
  403. data/lib/ramaze/tool/create.rb +48 -0
  404. data/lib/ramaze/tool/daemonize.rb +37 -0
  405. data/lib/ramaze/tool/localize.rb +202 -0
  406. data/lib/ramaze/tool/mime.rb +35 -0
  407. data/lib/ramaze/tool/mime_types.yaml +615 -0
  408. data/lib/ramaze/tool/project_creator.rb +111 -0
  409. data/lib/ramaze/tool/record.rb +6 -0
  410. data/lib/ramaze/tool.rb +9 -0
  411. data/lib/ramaze/trinity.rb +16 -0
  412. data/lib/ramaze/version.rb +6 -0
  413. data/lib/ramaze.rb +139 -0
  414. data/lib/vendor/bacon.rb +323 -0
  415. data/rake_tasks/conf.rake +71 -0
  416. data/rake_tasks/coverage.rake +45 -0
  417. data/rake_tasks/gem.rake +74 -0
  418. data/rake_tasks/git.rake +41 -0
  419. data/rake_tasks/maintenance.rake +386 -0
  420. data/rake_tasks/metric.rake +24 -0
  421. data/rake_tasks/release.rake +76 -0
  422. data/rake_tasks/spec.rake +61 -0
  423. data/ramaze.gemspec +611 -0
  424. data/spec/contrib/profiling.rb +29 -0
  425. data/spec/contrib/sequel/fill.rb +47 -0
  426. data/spec/examples/caching.rb +19 -0
  427. data/spec/examples/css.rb +15 -0
  428. data/spec/examples/element.rb +15 -0
  429. data/spec/examples/hello.rb +11 -0
  430. data/spec/examples/linking.rb +18 -0
  431. data/spec/examples/simple.rb +45 -0
  432. data/spec/examples/simple_auth.rb +32 -0
  433. data/spec/examples/templates/template_amrita2.rb +16 -0
  434. data/spec/examples/templates/template_erubis.rb +23 -0
  435. data/spec/examples/templates/template_ezamar.rb +23 -0
  436. data/spec/examples/templates/template_haml.rb +23 -0
  437. data/spec/examples/templates/template_liquid.rb +29 -0
  438. data/spec/examples/templates/template_markaby.rb +23 -0
  439. data/spec/examples/templates/template_redcloth.rb +28 -0
  440. data/spec/examples/templates/template_remarkably.rb +23 -0
  441. data/spec/examples/templates/template_tenjin.rb +28 -0
  442. data/spec/helper.rb +3 -0
  443. data/spec/ramaze/action/basics.rb +36 -0
  444. data/spec/ramaze/action/cache.rb +87 -0
  445. data/spec/ramaze/action/file_cache.rb +70 -0
  446. data/spec/ramaze/action/layout.rb +190 -0
  447. data/spec/ramaze/action/render.rb +31 -0
  448. data/spec/ramaze/action/view/bar.xhtml +1 -0
  449. data/spec/ramaze/action/view/instancevars/layout.xhtml +1 -0
  450. data/spec/ramaze/action/view/other_wrapper.xhtml +1 -0
  451. data/spec/ramaze/action/view/single_wrapper.xhtml +1 -0
  452. data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
  453. data/spec/ramaze/adapter/ebb.rb +12 -0
  454. data/spec/ramaze/adapter/mongrel.rb +12 -0
  455. data/spec/ramaze/adapter/record.rb +31 -0
  456. data/spec/ramaze/adapter/webrick.rb +12 -0
  457. data/spec/ramaze/adapter.rb +49 -0
  458. data/spec/ramaze/cache.rb +140 -0
  459. data/spec/ramaze/controller/actionless_templates.rb +32 -0
  460. data/spec/ramaze/controller/resolve.rb +32 -0
  461. data/spec/ramaze/controller/subclass.rb +36 -0
  462. data/spec/ramaze/controller/template_resolving.rb +113 -0
  463. data/spec/ramaze/controller/view/bar.xhtml +1 -0
  464. data/spec/ramaze/controller/view/base/another.xhtml +1 -0
  465. data/spec/ramaze/controller/view/greet.xhtml +1 -0
  466. data/spec/ramaze/controller/view/list.xhtml +1 -0
  467. data/spec/ramaze/controller/view/other/greet/other.xhtml +1 -0
  468. data/spec/ramaze/controller/view/other_wrapper.xhtml +1 -0
  469. data/spec/ramaze/controller.rb +180 -0
  470. data/spec/ramaze/current/request.rb +30 -0
  471. data/spec/ramaze/current/session.rb +97 -0
  472. data/spec/ramaze/dispatcher/directory.rb +55 -0
  473. data/spec/ramaze/dispatcher/file.rb +60 -0
  474. data/spec/ramaze/dispatcher/public/favicon.ico +0 -0
  475. data/spec/ramaze/dispatcher/public/file name.txt +1 -0
  476. data/spec/ramaze/dispatcher/public/test_download.css +141 -0
  477. data/spec/ramaze/dispatcher.rb +31 -0
  478. data/spec/ramaze/element.rb +107 -0
  479. data/spec/ramaze/error.rb +94 -0
  480. data/spec/ramaze/gestalt.rb +131 -0
  481. data/spec/ramaze/helper/aspect.rb +101 -0
  482. data/spec/ramaze/helper/auth.rb +66 -0
  483. data/spec/ramaze/helper/cache.rb +160 -0
  484. data/spec/ramaze/helper/cgi.rb +43 -0
  485. data/spec/ramaze/helper/file.rb +18 -0
  486. data/spec/ramaze/helper/flash.rb +133 -0
  487. data/spec/ramaze/helper/form.rb +118 -0
  488. data/spec/ramaze/helper/formatting.rb +54 -0
  489. data/spec/ramaze/helper/link.rb +124 -0
  490. data/spec/ramaze/helper/pager.rb +99 -0
  491. data/spec/ramaze/helper/partial.rb +88 -0
  492. data/spec/ramaze/helper/redirect.rb +112 -0
  493. data/spec/ramaze/helper/simple_captcha.rb +22 -0
  494. data/spec/ramaze/helper/stack.rb +73 -0
  495. data/spec/ramaze/helper/user.rb +43 -0
  496. data/spec/ramaze/helper/view/locals.xhtml +1 -0
  497. data/spec/ramaze/helper/view/loop.xhtml +4 -0
  498. data/spec/ramaze/helper/view/num.xhtml +1 -0
  499. data/spec/ramaze/helper/view/partial.xhtml +1 -0
  500. data/spec/ramaze/helper/view/recursive.xhtml +8 -0
  501. data/spec/ramaze/helper/view/recursive_local_ivars.xhtml +7 -0
  502. data/spec/ramaze/helper/view/recursive_locals.xhtml +7 -0
  503. data/spec/ramaze/helper/view/test_template.xhtml +1 -0
  504. data/spec/ramaze/localize.rb +89 -0
  505. data/spec/ramaze/log/informer.rb +72 -0
  506. data/spec/ramaze/log/syslog.rb +76 -0
  507. data/spec/ramaze/morpher.rb +111 -0
  508. data/spec/ramaze/params.rb +157 -0
  509. data/spec/ramaze/public/error404.xhtml +1 -0
  510. data/spec/ramaze/public/favicon.ico +0 -0
  511. data/spec/ramaze/public/ramaze.png +0 -0
  512. data/spec/ramaze/public/test_download.css +141 -0
  513. data/spec/ramaze/request/ebb.rb +9 -0
  514. data/spec/ramaze/request/mongrel.rb +9 -0
  515. data/spec/ramaze/request/thin.rb +9 -0
  516. data/spec/ramaze/request/webrick.rb +5 -0
  517. data/spec/ramaze/request.rb +185 -0
  518. data/spec/ramaze/rewrite/file.css +1 -0
  519. data/spec/ramaze/rewrite.rb +36 -0
  520. data/spec/ramaze/route.rb +131 -0
  521. data/spec/ramaze/session.rb +94 -0
  522. data/spec/ramaze/store/default.rb +71 -0
  523. data/spec/ramaze/struct.rb +47 -0
  524. data/spec/ramaze/template/amrita2/external.amrita +6 -0
  525. data/spec/ramaze/template/amrita2/sum.amrita +1 -0
  526. data/spec/ramaze/template/amrita2.rb +50 -0
  527. data/spec/ramaze/template/builder/external.rxml +3 -0
  528. data/spec/ramaze/template/builder.rb +51 -0
  529. data/spec/ramaze/template/erubis/sum.rhtml +1 -0
  530. data/spec/ramaze/template/erubis.rb +41 -0
  531. data/spec/ramaze/template/ezamar/another/long/action.zmr +1 -0
  532. data/spec/ramaze/template/ezamar/combined.zmr +1 -0
  533. data/spec/ramaze/template/ezamar/file_only.zmr +1 -0
  534. data/spec/ramaze/template/ezamar/index.zmr +1 -0
  535. data/spec/ramaze/template/ezamar/nested.zmr +1 -0
  536. data/spec/ramaze/template/ezamar/other__index.xhtml +1 -0
  537. data/spec/ramaze/template/ezamar/some__long__action.zmr +1 -0
  538. data/spec/ramaze/template/ezamar/sum.zmr +1 -0
  539. data/spec/ramaze/template/ezamar.rb +63 -0
  540. data/spec/ramaze/template/haml/index.haml +5 -0
  541. data/spec/ramaze/template/haml/locals.haml +2 -0
  542. data/spec/ramaze/template/haml/with_vars.haml +4 -0
  543. data/spec/ramaze/template/haml.rb +66 -0
  544. data/spec/ramaze/template/liquid/index.liquid +1 -0
  545. data/spec/ramaze/template/liquid/products.liquid +45 -0
  546. data/spec/ramaze/template/liquid.rb +99 -0
  547. data/spec/ramaze/template/markaby/external.mab +8 -0
  548. data/spec/ramaze/template/markaby/sum.mab +1 -0
  549. data/spec/ramaze/template/markaby.rb +61 -0
  550. data/spec/ramaze/template/nagoro/another/long/action.nag +1 -0
  551. data/spec/ramaze/template/nagoro/combined.nag +1 -0
  552. data/spec/ramaze/template/nagoro/file_only.nag +1 -0
  553. data/spec/ramaze/template/nagoro/index.nag +1 -0
  554. data/spec/ramaze/template/nagoro/nested.nag +1 -0
  555. data/spec/ramaze/template/nagoro/some__long__action.nag +1 -0
  556. data/spec/ramaze/template/nagoro/sum.nag +1 -0
  557. data/spec/ramaze/template/nagoro.rb +64 -0
  558. data/spec/ramaze/template/ramaze/external.test +1 -0
  559. data/spec/ramaze/template/redcloth/external.redcloth +1 -0
  560. data/spec/ramaze/template/redcloth.rb +38 -0
  561. data/spec/ramaze/template/remarkably/external.rem +8 -0
  562. data/spec/ramaze/template/remarkably/sum.rem +1 -0
  563. data/spec/ramaze/template/remarkably.rb +58 -0
  564. data/spec/ramaze/template/sass/file.css.sass +5 -0
  565. data/spec/ramaze/template/sass.rb +70 -0
  566. data/spec/ramaze/template/tagz/external.tagz +8 -0
  567. data/spec/ramaze/template/tagz/sum.tagz +1 -0
  568. data/spec/ramaze/template/tagz.rb +62 -0
  569. data/spec/ramaze/template/tenjin/external.tenjin +1 -0
  570. data/spec/ramaze/template/tenjin.rb +47 -0
  571. data/spec/ramaze/template/xslt/concat_words.xsl +16 -0
  572. data/spec/ramaze/template/xslt/index.xsl +14 -0
  573. data/spec/ramaze/template/xslt/products.xsl +32 -0
  574. data/spec/ramaze/template/xslt/ruby_version.xsl +14 -0
  575. data/spec/ramaze/template/xslt.rb +90 -0
  576. data/spec/ramaze/template.rb +128 -0
  577. data/spec/snippets/array/put_within.rb +33 -0
  578. data/spec/snippets/binding/locals.rb +9 -0
  579. data/spec/snippets/kernel/constant.rb +23 -0
  580. data/spec/snippets/numeric/filesize_format.rb +12 -0
  581. data/spec/snippets/numeric/time.rb +12 -0
  582. data/spec/snippets/object/__dir__.rb +14 -0
  583. data/spec/snippets/ordered_set.rb +63 -0
  584. data/spec/snippets/ramaze/acquire.rb +77 -0
  585. data/spec/snippets/ramaze/caller_info.rb +39 -0
  586. data/spec/snippets/ramaze/caller_lines.rb +30 -0
  587. data/spec/snippets/string/camel_case.rb +25 -0
  588. data/spec/snippets/string/color.rb +11 -0
  589. data/spec/snippets/string/snake_case.rb +24 -0
  590. data/spec/snippets/string/unindent.rb +43 -0
  591. data/spec/snippets/thread/into.rb +20 -0
  592. metadata +661 -0
@@ -0,0 +1,22 @@
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
+ class String
5
+ # A convenient way to do File.join
6
+ # Usage:
7
+ # 'a' / 'b' # => 'a/b'
8
+ def / obj
9
+ Ramaze.deprecated('String#/', 'File::join')
10
+ File.join(self, obj.to_s)
11
+ end
12
+ end
13
+
14
+ class Symbol
15
+ # A convenient way to do File.join
16
+ # Usage:
17
+ # :dir/:file # => 'dir/file'
18
+ def / obj
19
+ Ramaze.deprecated('Symbol#/', 'File::join(sym.to_s)')
20
+ self.to_s / obj
21
+ end
22
+ end
@@ -0,0 +1,63 @@
1
+ unless defined? Fiber
2
+ require 'thread'
3
+
4
+ class FiberError < StandardError; end
5
+
6
+ class Fiber
7
+ def initialize
8
+ raise ArgumentError, 'new Fiber requires a block' unless block_given?
9
+
10
+ @yield = Queue.new
11
+ @resume = Queue.new
12
+
13
+ @thread = Thread.new{ @yield.push [*yield(*wait)] }
14
+ @thread.abort_on_exception = true
15
+ @thread[:fiber] = self
16
+ end
17
+ attr_reader :yield, :thread
18
+
19
+ def resume *args
20
+ raise FiberError, 'dead fiber called' unless @thread.alive?
21
+ @resume.push(args)
22
+ result = @yield.pop
23
+ result.size > 1 ? result : result.first
24
+ end
25
+
26
+ def wait
27
+ @resume.pop
28
+ end
29
+
30
+ def self.yield *args
31
+ raise FiberError, "can't yield from root fiber" unless fiber = Thread.current[:fiber]
32
+ fiber.yield.push(args)
33
+ result = fiber.wait
34
+ result.size > 1 ? result : result.first
35
+ end
36
+
37
+ def inspect
38
+ "#<#{self.class}:0x#{self.object_id.to_s(16)}>"
39
+ end
40
+ end
41
+ end
42
+
43
+ if __FILE__ == $0
44
+ f = Fiber.new{ puts 'hi'; p Fiber.yield(1); puts 'bye'; :done }
45
+ p f.resume
46
+ p f.resume(2)
47
+ end
48
+
49
+ __END__
50
+
51
+ $ ruby fbr.rb
52
+ hi
53
+ 1
54
+ 2
55
+ bye
56
+ :done
57
+
58
+ $ ruby1.9 fbr.rb
59
+ hi
60
+ 1
61
+ 2
62
+ bye
63
+ :done
@@ -0,0 +1,41 @@
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 Ramaze
5
+ module CoreExtensions
6
+
7
+ # Extensions for Kernel
8
+
9
+ module Object
10
+
11
+ # Original from Trans (Facets 1.4.5)
12
+ # This is similar to +Module#const_get+ but is accessible at all levels,
13
+ # and, unlike +const_get+, can handle module hierarchy.
14
+ #
15
+ # constant("Fixnum") # -> Fixnum
16
+ # constant(:Fixnum) # -> Fixnum
17
+ #
18
+ # constant("Process::Sys") # -> Process::Sys
19
+ # constant("Regexp::MULTILINE") # -> 4
20
+ #
21
+ # require 'test/unit'
22
+ # Test.constant("Unit::Assertions") # -> Test::Unit::Assertions
23
+ # Test.constant("::Test::Unit") # -> Test::Unit
24
+
25
+ def constant(const)
26
+ const = const.to_s.dup
27
+
28
+ if const.sub!(/^::/, '')
29
+ base = Object
30
+ elsif self.kind_of?(Module)
31
+ base = self
32
+ else
33
+ base = self.class
34
+ end
35
+
36
+ const.split(/::/).inject(base){ |mod, name| mod.const_get(name) }
37
+ end
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,21 @@
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 'pp'
5
+
6
+ module Ramaze
7
+ module CoreExtensions
8
+
9
+ # Extensions for Kernel
10
+
11
+ module Kernel
12
+ unless defined?(pretty_inspect)
13
+ # returns a pretty printed object as a string.
14
+ def pretty_inspect
15
+ PP.pp(self, '')
16
+ end
17
+ end
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ # from http://whytheluckystiff.net/articles/seeingMetaclassesClearly.html
2
+
3
+ class Object
4
+ # The hidden singleton lurks behind everyone
5
+ def metaclass; class << self; self; end; end
6
+ def meta_eval &blk; metaclass.instance_eval(&blk); end
7
+
8
+ # Adds methods to a metaclass
9
+ def meta_def name, &blk
10
+ meta_eval { define_method name, &blk }
11
+ end
12
+
13
+ # Defines an instance method within a class
14
+ def class_def name, &blk
15
+ class_eval { define_method name, &blk }
16
+ end
17
+ end
@@ -0,0 +1,32 @@
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 Ramaze
5
+ module CoreExtensions
6
+
7
+ # Extensions for Numeric
8
+ module Numeric
9
+ FILESIZE_FORMAT = [
10
+ ['%.1fT', 1 << 40],
11
+ ['%.1fG', 1 << 30],
12
+ ['%.1fM', 1 << 20],
13
+ ['%.1fK', 1 << 10],
14
+ ]
15
+
16
+ # Output this number as easily readable filesize.
17
+ # Usage:
18
+ # 100_000.filesize_format # => "97.7K"
19
+ # 100_000_000.filesize_format # => "95.4M"
20
+ # 100_000_000_000.filesize_format # => "93.1G"
21
+ # 100_000_000_000_000.filesize_format # => "90.9T"
22
+ def filesize_format
23
+ FILESIZE_FORMAT.each do |format, size|
24
+ return format % (self.to_f / size) if self >= size
25
+ end
26
+
27
+ self.to_s
28
+ end
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,63 @@
1
+ module Ramaze
2
+ module CoreExtensions
3
+
4
+ # Extensions for Numeric
5
+
6
+ module Numeric
7
+ def seconds
8
+ self
9
+ end
10
+ alias second seconds
11
+
12
+ # 60 seconds in a minute
13
+ def minutes
14
+ self * 60
15
+ end
16
+ alias minute minutes
17
+
18
+ # 60 minutes in an hour
19
+ def hours
20
+ self * 3600
21
+ end
22
+ alias hour hours
23
+
24
+ # 24 hours in a day
25
+ def days
26
+ self * 86400
27
+ end
28
+ alias day days
29
+
30
+ # 7 days in a week
31
+ def weeks
32
+ self * 604800
33
+ end
34
+ alias week weeks
35
+
36
+ # 30 days in a month
37
+ def months
38
+ self * 2592000
39
+ end
40
+ alias month months
41
+
42
+ # 365.25 days in a year
43
+ def years
44
+ self * 31557600
45
+ end
46
+ alias year years
47
+
48
+ # Time in the past, i.e. 3.days.ago
49
+ def ago t = Time.now
50
+ t - self
51
+ end
52
+ alias before ago
53
+
54
+ # Time in the future, i.e. 3.days.from_now
55
+ def from_now t = Time.now
56
+ t + self
57
+ end
58
+ alias since from_now
59
+
60
+ end
61
+
62
+ end
63
+ end
@@ -0,0 +1,29 @@
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 Ramaze
5
+ module CoreExtensions
6
+
7
+ # Extensions for Object
8
+
9
+ module Object
10
+ unless defined?(__DIR__)
11
+
12
+ # This is similar to +__FILE__+ and +__LINE__+, and returns a String
13
+ # representing the directory of the current file is.
14
+ # Unlike +__FILE__+ the path returned is absolute.
15
+ #
16
+ # This method is convenience for the
17
+ # File.expand_path(File.dirname(__FILE__))
18
+ # idiom.
19
+
20
+ def __DIR__(*args)
21
+ filename = caller[0][/^(.*):/, 1]
22
+ dir = File.expand_path(File.dirname(filename))
23
+ ::File.expand_path(::File.join(dir, *args.map{|a| a.to_s}))
24
+ end
25
+ end
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,37 @@
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 Ramaze
5
+ module CoreExtensions
6
+
7
+ # Extensions for Kernel
8
+
9
+ module Object
10
+
11
+ # Require all .rb and .so files on the given globs, utilizes Dir::[].
12
+ #
13
+ # Examples:
14
+ # # Given following directory structure:
15
+ # # src/foo.rb
16
+ # # src/bar.so
17
+ # # src/foo.yaml
18
+ # # src/foobar/baz.rb
19
+ # # src/foobar/README
20
+ #
21
+ # # requires all files in 'src':
22
+ # acquire 'src/*'
23
+ #
24
+ # # requires all files in 'src' recursive:
25
+ # acquire 'src/**/*'
26
+ #
27
+ # # require 'src/foo.rb' and 'src/bar.so' and 'src/foobar/baz.rb'
28
+ # acquire 'src/*', 'src/foobar/*'
29
+
30
+ def acquire(*globs)
31
+ Ramaze.deprecated('Object#acquire', 'Ramaze::acquire')
32
+ Ramaze.acquire(*globs)
33
+ end
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,19 @@
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 Ramaze
5
+ module CoreExtensions
6
+
7
+ # Extensions for Object
8
+ module Object
9
+ # Available in 1.8.6 and later.
10
+
11
+ unless ::Object.method_defined?(:instance_variable_defined?)
12
+ def instance_variable_defined?(variable)
13
+ instance_variables.include?(variable.to_s)
14
+ end
15
+ end
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,16 @@
1
+ module Ramaze
2
+ module CoreExtensions
3
+
4
+ # Extensions for Object
5
+ module Object
6
+
7
+ # Returns the string that #pretty_inspect would yield
8
+
9
+ def pretty s = ''
10
+ PP.pp(self, s)
11
+ s
12
+ end
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ module Ramaze
2
+ module CoreExtensions
3
+
4
+ # Extensions for Object
5
+ module Object
6
+
7
+ # returns a new clean binding for this object
8
+ # usage: eval 'self', object.scope #=> returns object
9
+ #
10
+
11
+ def scope
12
+ lambda{}
13
+ end
14
+
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,76 @@
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
+ Traits = Hash.new{|h,k| h[k] = {}} unless defined?(Traits)
5
+
6
+ # Extensions for Object
7
+
8
+ class Object
9
+
10
+ # Adds a method to Object to annotate your objects with certain traits.
11
+ # It's basically a simple Hash that takes the current object as key
12
+ #
13
+ # Example:
14
+ #
15
+ # class Foo
16
+ # trait :instance => false
17
+ #
18
+ # def initialize
19
+ # trait :instance => true
20
+ # end
21
+ # end
22
+ #
23
+ # Foo.trait[:instance]
24
+ # # false
25
+ #
26
+ # foo = Foo.new
27
+ # foo.trait[:instance]
28
+ # # true
29
+
30
+ def trait hash = nil
31
+ if hash
32
+ Traits[self].merge! hash
33
+ else
34
+ Traits[self]
35
+ end
36
+ end
37
+
38
+ # builds a trait from all the ancestors, closer ancestors
39
+ # overwrite distant ancestors
40
+ #
41
+ # class Foo
42
+ # trait :one => :eins
43
+ # trait :first => :erstes
44
+ # end
45
+ #
46
+ # class Bar < Foo
47
+ # trait :two => :zwei
48
+ # end
49
+ #
50
+ # class Foobar < Bar
51
+ # trait :three => :drei
52
+ # trait :first => :overwritten
53
+ # end
54
+ #
55
+ # Foobar.ancestral_trait
56
+ # {:three=>:drei, :two=>:zwei, :one=>:eins, :first=>:overwritten}
57
+
58
+ def ancestral_trait
59
+ if respond_to?(:ancestors)
60
+ ancs = ancestors
61
+ else
62
+ ancs = self.class.ancestors
63
+ end
64
+ ancs.reverse.inject({}){|s,v| s.merge(v.trait)}.merge(trait)
65
+ end
66
+
67
+ # trait for self.class
68
+
69
+ def class_trait
70
+ if respond_to?(:ancestors)
71
+ trait
72
+ else
73
+ self.class.trait
74
+ end
75
+ end
76
+ end