rjspotter-ramaze 2009.06.29

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 (503) hide show
  1. data/.gitignore +3 -0
  2. data/.mailmap +25 -0
  3. data/MANIFEST +502 -0
  4. data/README.md +457 -0
  5. data/Rakefile +88 -0
  6. data/benchmark/bench_templates/bench.rb +67 -0
  7. data/benchmark/bench_templates/view/large.erb +79 -0
  8. data/benchmark/bench_templates/view/large.haml +41 -0
  9. data/benchmark/bench_templates/view/large.xhtml +79 -0
  10. data/benchmark/bench_templates/view/small.erb +21 -0
  11. data/benchmark/bench_templates/view/small.haml +12 -0
  12. data/benchmark/bench_templates/view/small.xhtml +21 -0
  13. data/benchmark/results.txt +131 -0
  14. data/benchmark/run.rb +355 -0
  15. data/benchmark/suite/minimal.rb +11 -0
  16. data/benchmark/suite/no_informer.rb +7 -0
  17. data/benchmark/suite/no_sessions.rb +9 -0
  18. data/benchmark/suite/no_template.rb +7 -0
  19. data/benchmark/suite/simple.rb +5 -0
  20. data/benchmark/suite/template_erubis.rb +8 -0
  21. data/benchmark/suite/template_etanni.rb +8 -0
  22. data/benchmark/suite/template_ezamar.rb +8 -0
  23. data/benchmark/suite/template_haml.rb +13 -0
  24. data/benchmark/suite/template_liquid.rb +11 -0
  25. data/benchmark/suite/template_markaby.rb +9 -0
  26. data/benchmark/suite/template_nagoro.rb +8 -0
  27. data/benchmark/suite/template_redcloth.rb +13 -0
  28. data/benchmark/suite/template_tenjin.rb +8 -0
  29. data/benchmark/test.rb +35 -0
  30. data/bin/ramaze +15 -0
  31. data/doc/AUTHORS +44 -0
  32. data/doc/CHANGELOG +17362 -0
  33. data/doc/COPYING +56 -0
  34. data/doc/FAQ +92 -0
  35. data/doc/GPL +339 -0
  36. data/doc/INSTALL +92 -0
  37. data/doc/LEGAL +26 -0
  38. data/doc/TODO +29 -0
  39. data/doc/meta/announcement.txt +146 -0
  40. data/doc/meta/configuration.txt +163 -0
  41. data/doc/meta/internals.txt +278 -0
  42. data/doc/meta/users.kml +64 -0
  43. data/doc/tutorial/todolist.html +1379 -0
  44. data/doc/tutorial/todolist.txt +920 -0
  45. data/examples/app/auth/layout/auth.xhtml +25 -0
  46. data/examples/app/auth/start.rb +23 -0
  47. data/examples/app/auth/view/index.xhtml +4 -0
  48. data/examples/app/auth/view/login.xhtml +20 -0
  49. data/examples/app/auth/view/secret.xhtml +1 -0
  50. data/examples/app/blog/README +3 -0
  51. data/examples/app/blog/app.rb +69 -0
  52. data/examples/app/blog/config.ru +17 -0
  53. data/examples/app/blog/controller/comment.rb +45 -0
  54. data/examples/app/blog/controller/entry.rb +85 -0
  55. data/examples/app/blog/controller/init.rb +86 -0
  56. data/examples/app/blog/controller/main.rb +20 -0
  57. data/examples/app/blog/controller/tag.rb +9 -0
  58. data/examples/app/blog/layout/default.nag +31 -0
  59. data/examples/app/blog/model/comment.rb +58 -0
  60. data/examples/app/blog/model/entry.rb +89 -0
  61. data/examples/app/blog/model/init.rb +15 -0
  62. data/examples/app/blog/model/tag.rb +36 -0
  63. data/examples/app/blog/public/css/screen.css +273 -0
  64. data/examples/app/blog/spec/blog.rb +87 -0
  65. data/examples/app/blog/start.rb +5 -0
  66. data/examples/app/blog/view/comment/form.nag +10 -0
  67. data/examples/app/blog/view/comment/show.nag +16 -0
  68. data/examples/app/blog/view/entry/edit.nag +14 -0
  69. data/examples/app/blog/view/entry/feed.atom.nag +8 -0
  70. data/examples/app/blog/view/entry/feed.rss.nag +7 -0
  71. data/examples/app/blog/view/entry/index.nag +7 -0
  72. data/examples/app/blog/view/entry/new.nag +13 -0
  73. data/examples/app/blog/view/entry/show.nag +36 -0
  74. data/examples/app/blog/view/feed.atom.nag +18 -0
  75. data/examples/app/blog/view/feed.rss.nag +25 -0
  76. data/examples/app/blog/view/index.nag +6 -0
  77. data/examples/app/blog/view/tag/index.nag +5 -0
  78. data/examples/app/chat/layout/default.xhtml +13 -0
  79. data/examples/app/chat/model/history.rb +38 -0
  80. data/examples/app/chat/model/message.rb +7 -0
  81. data/examples/app/chat/public/css/chat.css +9 -0
  82. data/examples/app/chat/public/js/chat.js +28 -0
  83. data/examples/app/chat/public/js/jquery.js +3436 -0
  84. data/examples/app/chat/start.rb +39 -0
  85. data/examples/app/chat/view/chat.xhtml +9 -0
  86. data/examples/app/chat/view/index.xhtml +7 -0
  87. data/examples/app/localization/locale/de.yaml +5 -0
  88. data/examples/app/localization/locale/en.yaml +5 -0
  89. data/examples/app/localization/locale/ja.yaml +5 -0
  90. data/examples/app/localization/start.rb +48 -0
  91. data/examples/app/sourceview/public/coderay.css +104 -0
  92. data/examples/app/sourceview/public/images/file.gif +0 -0
  93. data/examples/app/sourceview/public/images/folder.gif +0 -0
  94. data/examples/app/sourceview/public/images/tv-collapsable-last.gif +0 -0
  95. data/examples/app/sourceview/public/images/tv-collapsable.gif +0 -0
  96. data/examples/app/sourceview/public/images/tv-expandable-last.gif +0 -0
  97. data/examples/app/sourceview/public/images/tv-expandable.gif +0 -0
  98. data/examples/app/sourceview/public/images/tv-item-last.gif +0 -0
  99. data/examples/app/sourceview/public/images/tv-item.gif +0 -0
  100. data/examples/app/sourceview/public/jquery.js +11 -0
  101. data/examples/app/sourceview/public/jquery.treeview.css +48 -0
  102. data/examples/app/sourceview/public/jquery.treeview.js +223 -0
  103. data/examples/app/sourceview/public/sourceview.js +52 -0
  104. data/examples/app/sourceview/start.rb +79 -0
  105. data/examples/app/sourceview/view/index.haml +59 -0
  106. data/examples/app/todolist/controller/init.rb +10 -0
  107. data/examples/app/todolist/controller/task.rb +39 -0
  108. data/examples/app/todolist/layout/default.xhtml +14 -0
  109. data/examples/app/todolist/model/init.rb +14 -0
  110. data/examples/app/todolist/model/task.rb +39 -0
  111. data/examples/app/todolist/public/css/screen.css +63 -0
  112. data/examples/app/todolist/public/favicon.ico +0 -0
  113. data/examples/app/todolist/start.rb +11 -0
  114. data/examples/app/todolist/view/index.xhtml +29 -0
  115. data/examples/app/upload/start.rb +19 -0
  116. data/examples/app/upload/view/index.xhtml +25 -0
  117. data/examples/app/whywiki/spec/whywiki.rb +58 -0
  118. data/examples/app/whywiki/start.rb +46 -0
  119. data/examples/app/whywiki/template/edit.xhtml +14 -0
  120. data/examples/app/whywiki/template/show.xhtml +18 -0
  121. data/examples/app/wikore/spec/wikore.rb +109 -0
  122. data/examples/app/wikore/src/controller.rb +78 -0
  123. data/examples/app/wikore/src/model.rb +56 -0
  124. data/examples/app/wikore/start.rb +9 -0
  125. data/examples/app/wikore/view/index.xhtml +8 -0
  126. data/examples/app/wiktacular/README +2 -0
  127. data/examples/app/wiktacular/mkd/link/2007-07-20_19-45-51.mkd +1 -0
  128. data/examples/app/wiktacular/mkd/link/current.mkd +1 -0
  129. data/examples/app/wiktacular/mkd/main/2007-07-20_16-31-33.mkd +1 -0
  130. data/examples/app/wiktacular/mkd/main/2007-07-20_19-21-12.mkd +1 -0
  131. data/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +2 -0
  132. data/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +2 -0
  133. data/examples/app/wiktacular/mkd/main/current.mkd +2 -0
  134. data/examples/app/wiktacular/mkd/markdown/current.mkd +3 -0
  135. data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
  136. data/examples/app/wiktacular/mkd/testing/2007-07-20_19-43-50.mkd +3 -0
  137. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-01.mkd +11 -0
  138. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-32.mkd +13 -0
  139. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-08.mkd +17 -0
  140. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-54.mkd +17 -0
  141. data/examples/app/wiktacular/mkd/testing/current.mkd +17 -0
  142. data/examples/app/wiktacular/public/favicon.ico +0 -0
  143. data/examples/app/wiktacular/public/screen.css +72 -0
  144. data/examples/app/wiktacular/spec/wiktacular.rb +157 -0
  145. data/examples/app/wiktacular/src/controller.rb +55 -0
  146. data/examples/app/wiktacular/src/model.rb +102 -0
  147. data/examples/app/wiktacular/start.rb +8 -0
  148. data/examples/app/wiktacular/template/edit.xhtml +6 -0
  149. data/examples/app/wiktacular/template/html_layout.xhtml +27 -0
  150. data/examples/app/wiktacular/template/index.xhtml +9 -0
  151. data/examples/app/wiktacular/template/new.xhtml +6 -0
  152. data/examples/basic/element.rb +47 -0
  153. data/examples/basic/gestalt.rb +26 -0
  154. data/examples/basic/hello.rb +14 -0
  155. data/examples/basic/layout.rb +28 -0
  156. data/examples/basic/linking.rb +29 -0
  157. data/examples/basic/partial.rb +26 -0
  158. data/examples/basic/simple.rb +52 -0
  159. data/examples/helpers/cache.rb +33 -0
  160. data/examples/helpers/form_with_sequel.rb +24 -0
  161. data/examples/helpers/httpdigest.rb +107 -0
  162. data/examples/helpers/identity.rb +18 -0
  163. data/examples/helpers/nitro_form.rb +23 -0
  164. data/examples/helpers/paginate.rb +71 -0
  165. data/examples/helpers/rest.rb +28 -0
  166. data/examples/helpers/simple_captcha.rb +29 -0
  167. data/examples/misc/css.rb +37 -0
  168. data/examples/misc/facebook.rb +159 -0
  169. data/examples/misc/memleak_detector.rb +37 -0
  170. data/examples/misc/nagoro_element.rb +43 -0
  171. data/examples/misc/ramaise.rb +132 -0
  172. data/examples/misc/rapp.rb +56 -0
  173. data/examples/misc/sequel_scaffolding.rb +34 -0
  174. data/examples/misc/serve_directory.rb +6 -0
  175. data/examples/templates/template_erubis.rb +52 -0
  176. data/examples/templates/template_ezamar.rb +51 -0
  177. data/examples/templates/template_haml.rb +49 -0
  178. data/examples/templates/template_liquid.rb +66 -0
  179. data/examples/templates/template_markaby.rb +57 -0
  180. data/examples/templates/template_nagoro.rb +50 -0
  181. data/examples/templates/template_redcloth.rb +58 -0
  182. data/examples/templates/template_remarkably.rb +54 -0
  183. data/examples/templates/template_tenjin.rb +52 -0
  184. data/examples/templates/view/external.haml +22 -0
  185. data/examples/templates/view/external.liquid +28 -0
  186. data/examples/templates/view/external.mab +30 -0
  187. data/examples/templates/view/external.nag +28 -0
  188. data/examples/templates/view/external.redcloth +19 -0
  189. data/examples/templates/view/external.rem +30 -0
  190. data/examples/templates/view/external.rhtml +28 -0
  191. data/examples/templates/view/external.tenjin +28 -0
  192. data/examples/templates/view/external.zmr +28 -0
  193. data/lib/proto/app.rb +14 -0
  194. data/lib/proto/config.ru +20 -0
  195. data/lib/proto/controller/init.rb +11 -0
  196. data/lib/proto/controller/main.rb +20 -0
  197. data/lib/proto/layout/default.xhtml +24 -0
  198. data/lib/proto/model/init.rb +4 -0
  199. data/lib/proto/public/.htaccess +24 -0
  200. data/lib/proto/public/css/screen.css +30 -0
  201. data/lib/proto/public/dispatch.fcgi +11 -0
  202. data/lib/proto/public/favicon.ico +0 -0
  203. data/lib/proto/public/js/jquery.js +4376 -0
  204. data/lib/proto/public/ramaze.png +0 -0
  205. data/lib/proto/spec/main.rb +20 -0
  206. data/lib/proto/start.rb +8 -0
  207. data/lib/proto/view/index.xhtml +41 -0
  208. data/lib/ramaze.rb +87 -0
  209. data/lib/ramaze/app.rb +124 -0
  210. data/lib/ramaze/cache.rb +19 -0
  211. data/lib/ramaze/cache/localmemcache.rb +56 -0
  212. data/lib/ramaze/cache/memcache.rb +124 -0
  213. data/lib/ramaze/cache/sequel.rb +82 -0
  214. data/lib/ramaze/contrib/addressable_route.rb +55 -0
  215. data/lib/ramaze/contrib/app_graph.rb +64 -0
  216. data/lib/ramaze/contrib/email.rb +88 -0
  217. data/lib/ramaze/contrib/facebook.rb +23 -0
  218. data/lib/ramaze/contrib/facebook/facebook.rb +171 -0
  219. data/lib/ramaze/contrib/gettext.rb +113 -0
  220. data/lib/ramaze/contrib/gettext/mo.rb +155 -0
  221. data/lib/ramaze/contrib/gettext/parser.rb +46 -0
  222. data/lib/ramaze/contrib/gettext/po.rb +109 -0
  223. data/lib/ramaze/contrib/gzip_filter.rb +1 -0
  224. data/lib/ramaze/contrib/maruku_uv.rb +59 -0
  225. data/lib/ramaze/contrib/profiling.rb +36 -0
  226. data/lib/ramaze/contrib/rest.rb +22 -0
  227. data/lib/ramaze/contrib/sequel/create_join.rb +26 -0
  228. data/lib/ramaze/contrib/sequel/form_field.rb +129 -0
  229. data/lib/ramaze/contrib/sequel/image.rb +196 -0
  230. data/lib/ramaze/contrib/sequel/relation.rb +98 -0
  231. data/lib/ramaze/controller.rb +104 -0
  232. data/lib/ramaze/controller/default.rb +12 -0
  233. data/lib/ramaze/current.rb +7 -0
  234. data/lib/ramaze/files.rb +24 -0
  235. data/lib/ramaze/gestalt.rb +132 -0
  236. data/lib/ramaze/helper.rb +13 -0
  237. data/lib/ramaze/helper/auth.rb +84 -0
  238. data/lib/ramaze/helper/bench.rb +41 -0
  239. data/lib/ramaze/helper/cache.rb +117 -0
  240. data/lib/ramaze/helper/disqus.rb +26 -0
  241. data/lib/ramaze/helper/flash.rb +62 -0
  242. data/lib/ramaze/helper/form.rb +127 -0
  243. data/lib/ramaze/helper/formatting.rb +189 -0
  244. data/lib/ramaze/helper/gestalt.rb +47 -0
  245. data/lib/ramaze/helper/gravatar.rb +79 -0
  246. data/lib/ramaze/helper/httpdigest.rb +97 -0
  247. data/lib/ramaze/helper/identity.rb +119 -0
  248. data/lib/ramaze/helper/layout.rb +97 -0
  249. data/lib/ramaze/helper/link.rb +56 -0
  250. data/lib/ramaze/helper/localize.rb +138 -0
  251. data/lib/ramaze/helper/markaby.rb +31 -0
  252. data/lib/ramaze/helper/maruku.rb +16 -0
  253. data/lib/ramaze/helper/nitroform.rb +14 -0
  254. data/lib/ramaze/helper/pager.rb +367 -0
  255. data/lib/ramaze/helper/paginate.rb +242 -0
  256. data/lib/ramaze/helper/partial.rb +100 -0
  257. data/lib/ramaze/helper/remarkably.rb +14 -0
  258. data/lib/ramaze/helper/request_accessor.rb +16 -0
  259. data/lib/ramaze/helper/sequel.rb +55 -0
  260. data/lib/ramaze/helper/sequel_form.rb +284 -0
  261. data/lib/ramaze/helper/simple_captcha.rb +61 -0
  262. data/lib/ramaze/helper/stack.rb +75 -0
  263. data/lib/ramaze/helper/tagz.rb +19 -0
  264. data/lib/ramaze/helper/thread.rb +17 -0
  265. data/lib/ramaze/helper/ultraviolet.rb +46 -0
  266. data/lib/ramaze/helper/user.rb +229 -0
  267. data/lib/ramaze/helper/xhtml.rb +34 -0
  268. data/lib/ramaze/log.rb +39 -0
  269. data/lib/ramaze/log/analogger.rb +39 -0
  270. data/lib/ramaze/log/growl.rb +38 -0
  271. data/lib/ramaze/log/hub.rb +41 -0
  272. data/lib/ramaze/log/informer.rb +129 -0
  273. data/lib/ramaze/log/knotify.rb +28 -0
  274. data/lib/ramaze/log/logger.rb +26 -0
  275. data/lib/ramaze/log/logging.rb +83 -0
  276. data/lib/ramaze/log/rotatinginformer.rb +168 -0
  277. data/lib/ramaze/log/syslog.rb +51 -0
  278. data/lib/ramaze/log/xosd.rb +92 -0
  279. data/lib/ramaze/middleware_compiler.rb +13 -0
  280. data/lib/ramaze/plugin.rb +69 -0
  281. data/lib/ramaze/reloader.rb +172 -0
  282. data/lib/ramaze/reloader/watch_inotify.rb +85 -0
  283. data/lib/ramaze/reloader/watch_stat.rb +58 -0
  284. data/lib/ramaze/request.rb +115 -0
  285. data/lib/ramaze/response.rb +36 -0
  286. data/lib/ramaze/setup.rb +123 -0
  287. data/lib/ramaze/snippets.rb +22 -0
  288. data/lib/ramaze/snippets/array/put_within.rb +44 -0
  289. data/lib/ramaze/snippets/binding/locals.rb +25 -0
  290. data/lib/ramaze/snippets/blankslate.rb +7 -0
  291. data/lib/ramaze/snippets/fiber.rb +63 -0
  292. data/lib/ramaze/snippets/kernel/pretty_inspect.rb +21 -0
  293. data/lib/ramaze/snippets/metaid.rb +17 -0
  294. data/lib/ramaze/snippets/numeric/filesize_format.rb +32 -0
  295. data/lib/ramaze/snippets/numeric/time.rb +63 -0
  296. data/lib/ramaze/snippets/object/__dir__.rb +29 -0
  297. data/lib/ramaze/snippets/object/instance_variable_defined.rb +19 -0
  298. data/lib/ramaze/snippets/object/pretty.rb +16 -0
  299. data/lib/ramaze/snippets/object/scope.rb +18 -0
  300. data/lib/ramaze/snippets/ordered_set.rb +51 -0
  301. data/lib/ramaze/snippets/proc/locals.rb +19 -0
  302. data/lib/ramaze/snippets/ramaze/acquire.rb +31 -0
  303. data/lib/ramaze/snippets/ramaze/deprecated.rb +23 -0
  304. data/lib/ramaze/snippets/ramaze/dictionary.rb +400 -0
  305. data/lib/ramaze/snippets/ramaze/fiber.rb +24 -0
  306. data/lib/ramaze/snippets/ramaze/struct.rb +45 -0
  307. data/lib/ramaze/snippets/string/camel_case.rb +21 -0
  308. data/lib/ramaze/snippets/string/color.rb +31 -0
  309. data/lib/ramaze/snippets/string/end_with.rb +20 -0
  310. data/lib/ramaze/snippets/string/esc.rb +34 -0
  311. data/lib/ramaze/snippets/string/ord.rb +21 -0
  312. data/lib/ramaze/snippets/string/snake_case.rb +21 -0
  313. data/lib/ramaze/snippets/string/start_with.rb +19 -0
  314. data/lib/ramaze/snippets/string/unindent.rb +28 -0
  315. data/lib/ramaze/snippets/thread/into.rb +18 -0
  316. data/lib/ramaze/spec.rb +33 -0
  317. data/lib/ramaze/spec/bacon.rb +34 -0
  318. data/lib/ramaze/spec/helper/bacon.rb +8 -0
  319. data/lib/ramaze/spec/helper/pretty_output.rb +82 -0
  320. data/lib/ramaze/spec/helper/snippets.rb +16 -0
  321. data/lib/ramaze/spec/helper/template_examples.rb +19 -0
  322. data/lib/ramaze/tool/bin.rb +340 -0
  323. data/lib/ramaze/tool/create.rb +48 -0
  324. data/lib/ramaze/tool/project_creator.rb +111 -0
  325. data/lib/ramaze/version.rb +3 -0
  326. data/lib/ramaze/view.rb +39 -0
  327. data/lib/ramaze/view/erubis.rb +23 -0
  328. data/lib/ramaze/view/ezamar.rb +23 -0
  329. data/lib/ramaze/view/gestalt.rb +14 -0
  330. data/lib/ramaze/view/haml.rb +16 -0
  331. data/lib/ramaze/view/liquid.rb +100 -0
  332. data/lib/ramaze/view/maruku.rb +15 -0
  333. data/lib/ramaze/view/nagoro.rb +44 -0
  334. data/lib/ramaze/view/nagoro/render_partial.rb +32 -0
  335. data/lib/ramaze/view/redcloth.rb +21 -0
  336. data/lib/ramaze/view/remarkably.rb +21 -0
  337. data/lib/ramaze/view/sass.rb +21 -0
  338. data/lib/ramaze/view/tagz.rb +63 -0
  339. data/lib/ramaze/view/tenjin.rb +32 -0
  340. data/lib/vendor/etag.rb +22 -0
  341. data/lib/vendor/route_exceptions.rb +42 -0
  342. data/ramaze.gemspec +85 -0
  343. data/spec/contrib/addressable_route.rb +32 -0
  344. data/spec/contrib/rest.rb +28 -0
  345. data/spec/examples/caching.rb +16 -0
  346. data/spec/examples/css.rb +14 -0
  347. data/spec/examples/element.rb +15 -0
  348. data/spec/examples/hello.rb +10 -0
  349. data/spec/examples/helpers/httpdigest.rb +64 -0
  350. data/spec/examples/linking.rb +17 -0
  351. data/spec/examples/simple.rb +40 -0
  352. data/spec/examples/templates/template_erubis.rb +10 -0
  353. data/spec/examples/templates/template_ezamar.rb +10 -0
  354. data/spec/examples/templates/template_haml.rb +10 -0
  355. data/spec/examples/templates/template_liquid.rb +10 -0
  356. data/spec/examples/templates/template_markaby.rb +11 -0
  357. data/spec/examples/templates/template_nagoro.rb +10 -0
  358. data/spec/examples/templates/template_redcloth.rb +10 -0
  359. data/spec/examples/templates/template_remarkably.rb +10 -0
  360. data/spec/examples/templates/template_tenjin.rb +10 -0
  361. data/spec/helper.rb +9 -0
  362. data/spec/ramaze/action/render.rb +21 -0
  363. data/spec/ramaze/action/view/bar.xhtml +1 -0
  364. data/spec/ramaze/action/view/instancevars/layout.xhtml +1 -0
  365. data/spec/ramaze/action/view/other_wrapper.erb +1 -0
  366. data/spec/ramaze/action/view/other_wrapper.xhtml +1 -0
  367. data/spec/ramaze/action/view/single_wrapper.xhtml +1 -0
  368. data/spec/ramaze/action/view/sub/sub_wrapper.erb +1 -0
  369. data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
  370. data/spec/ramaze/app.rb +47 -0
  371. data/spec/ramaze/bin/ramaze.rb +91 -0
  372. data/spec/ramaze/cache/localmemcache.rb +49 -0
  373. data/spec/ramaze/cache/memcache.rb +60 -0
  374. data/spec/ramaze/cache/sequel.rb +51 -0
  375. data/spec/ramaze/controller/actionless_templates.rb +36 -0
  376. data/spec/ramaze/controller/lonely_mapping.rb +16 -0
  377. data/spec/ramaze/controller/mapping.rb +43 -0
  378. data/spec/ramaze/controller/provide_inheritance.rb +47 -0
  379. data/spec/ramaze/controller/resolve.rb +30 -0
  380. data/spec/ramaze/controller/subclass.rb +36 -0
  381. data/spec/ramaze/controller/template_resolving.rb +77 -0
  382. data/spec/ramaze/controller/view/bar.xhtml +1 -0
  383. data/spec/ramaze/controller/view/base/another.xhtml +1 -0
  384. data/spec/ramaze/controller/view/greet.xhtml +1 -0
  385. data/spec/ramaze/controller/view/list.xhtml +1 -0
  386. data/spec/ramaze/controller/view/other/greet/other.xhtml +1 -0
  387. data/spec/ramaze/controller/view/other_wrapper.xhtml +1 -0
  388. data/spec/ramaze/dispatcher/directory.rb +69 -0
  389. data/spec/ramaze/dispatcher/file.rb +71 -0
  390. data/spec/ramaze/dispatcher/public/favicon.ico +0 -0
  391. data/spec/ramaze/dispatcher/public/file name.txt +1 -0
  392. data/spec/ramaze/dispatcher/public/test_download.css +141 -0
  393. data/spec/ramaze/error.rb +88 -0
  394. data/spec/ramaze/files.rb +29 -0
  395. data/spec/ramaze/files/public_1/plain.txt +1 -0
  396. data/spec/ramaze/files/public_2/rich.txt +1 -0
  397. data/spec/ramaze/gestalt.rb +135 -0
  398. data/spec/ramaze/helper/auth.rb +83 -0
  399. data/spec/ramaze/helper/bench.rb +18 -0
  400. data/spec/ramaze/helper/cache.rb +124 -0
  401. data/spec/ramaze/helper/flash.rb +41 -0
  402. data/spec/ramaze/helper/form.rb +356 -0
  403. data/spec/ramaze/helper/formatting.rb +111 -0
  404. data/spec/ramaze/helper/gestalt.rb +15 -0
  405. data/spec/ramaze/helper/gravatar.rb +40 -0
  406. data/spec/ramaze/helper/httpdigest.rb +144 -0
  407. data/spec/ramaze/helper/layout.rb +79 -0
  408. data/spec/ramaze/helper/layout/default.xhtml +5 -0
  409. data/spec/ramaze/helper/link.rb +70 -0
  410. data/spec/ramaze/helper/localize.rb +62 -0
  411. data/spec/ramaze/helper/maruku.rb +19 -0
  412. data/spec/ramaze/helper/pager.rb +96 -0
  413. data/spec/ramaze/helper/paginate.rb +68 -0
  414. data/spec/ramaze/helper/request_accessor.rb +19 -0
  415. data/spec/ramaze/helper/sequel_form.rb +91 -0
  416. data/spec/ramaze/helper/simple_captcha.rb +45 -0
  417. data/spec/ramaze/helper/stack.rb +86 -0
  418. data/spec/ramaze/helper/user.rb +72 -0
  419. data/spec/ramaze/helper/view/locals.xhtml +1 -0
  420. data/spec/ramaze/helper/view/loop.xhtml +4 -0
  421. data/spec/ramaze/helper/view/num.xhtml +1 -0
  422. data/spec/ramaze/helper/view/partial.xhtml +1 -0
  423. data/spec/ramaze/helper/view/recursive.xhtml +8 -0
  424. data/spec/ramaze/helper/view/recursive_local_ivars.xhtml +7 -0
  425. data/spec/ramaze/helper/view/recursive_locals.xhtml +7 -0
  426. data/spec/ramaze/helper/view/test_template.xhtml +1 -0
  427. data/spec/ramaze/helper/xhtml.rb +32 -0
  428. data/spec/ramaze/log/informer.rb +73 -0
  429. data/spec/ramaze/log/logging.rb +63 -0
  430. data/spec/ramaze/log/syslog.rb +73 -0
  431. data/spec/ramaze/params.rb +153 -0
  432. data/spec/ramaze/public/favicon.ico +0 -0
  433. data/spec/ramaze/public/ramaze.png +0 -0
  434. data/spec/ramaze/public/test_download.css +141 -0
  435. data/spec/ramaze/request.rb +61 -0
  436. data/spec/ramaze/rewrite/file.css +1 -0
  437. data/spec/ramaze/session/memcache.rb +66 -0
  438. data/spec/ramaze/struct.rb +47 -0
  439. data/spec/ramaze/template/ramaze/external.test +1 -0
  440. data/spec/ramaze/view.rb +36 -0
  441. data/spec/ramaze/view/erubis.rb +73 -0
  442. data/spec/ramaze/view/erubis/external.rhtml +8 -0
  443. data/spec/ramaze/view/erubis/sum.rhtml +1 -0
  444. data/spec/ramaze/view/ezamar.rb +73 -0
  445. data/spec/ramaze/view/ezamar/external.zmr +8 -0
  446. data/spec/ramaze/view/ezamar/sum.zmr +1 -0
  447. data/spec/ramaze/view/gestalt.rb +94 -0
  448. data/spec/ramaze/view/gestalt/external.ges +8 -0
  449. data/spec/ramaze/view/haml.rb +86 -0
  450. data/spec/ramaze/view/haml/external.haml +5 -0
  451. data/spec/ramaze/view/haml/sum.haml +2 -0
  452. data/spec/ramaze/view/liquid.rb +73 -0
  453. data/spec/ramaze/view/liquid/external.liquid +8 -0
  454. data/spec/ramaze/view/liquid/sum.liquid +1 -0
  455. data/spec/ramaze/view/nagoro.rb +73 -0
  456. data/spec/ramaze/view/nagoro/external.nag +8 -0
  457. data/spec/ramaze/view/nagoro/sum.nag +1 -0
  458. data/spec/ramaze/view/redcloth.rb +66 -0
  459. data/spec/ramaze/view/redcloth/external.redcloth +8 -0
  460. data/spec/ramaze/view/remarkably.rb +49 -0
  461. data/spec/ramaze/view/remarkably/external.rem +8 -0
  462. data/spec/ramaze/view/remarkably/sum.rem +1 -0
  463. data/spec/ramaze/view/sass.rb +73 -0
  464. data/spec/ramaze/view/sass/file.css.sass +5 -0
  465. data/spec/ramaze/view/tagz.rb +51 -0
  466. data/spec/ramaze/view/tagz/external.tagz +8 -0
  467. data/spec/ramaze/view/tagz/sum.tagz +1 -0
  468. data/spec/ramaze/view/tenjin.rb +57 -0
  469. data/spec/ramaze/view/tenjin/external.rbhtml +8 -0
  470. data/spec/ramaze/view/tenjin/sum.rbhtml +1 -0
  471. data/spec/snippets/array/put_within.rb +33 -0
  472. data/spec/snippets/binding/locals.rb +9 -0
  473. data/spec/snippets/numeric/filesize_format.rb +12 -0
  474. data/spec/snippets/numeric/time.rb +12 -0
  475. data/spec/snippets/object/__dir__.rb +14 -0
  476. data/spec/snippets/ordered_set.rb +63 -0
  477. data/spec/snippets/ramaze/acquire.rb +77 -0
  478. data/spec/snippets/ramaze/dictionary.rb +110 -0
  479. data/spec/snippets/ramaze/struct.rb +12 -0
  480. data/spec/snippets/string/camel_case.rb +25 -0
  481. data/spec/snippets/string/color.rb +11 -0
  482. data/spec/snippets/string/snake_case.rb +24 -0
  483. data/spec/snippets/string/unindent.rb +43 -0
  484. data/spec/snippets/thread/into.rb +9 -0
  485. data/tasks/authors.rake +30 -0
  486. data/tasks/bacon.rake +66 -0
  487. data/tasks/changelog.rake +20 -0
  488. data/tasks/copyright.rake +21 -0
  489. data/tasks/gem.rake +22 -0
  490. data/tasks/gem_setup.rake +99 -0
  491. data/tasks/git.rake +46 -0
  492. data/tasks/grancher.rake +12 -0
  493. data/tasks/jquery.rake +15 -0
  494. data/tasks/manifest.rake +4 -0
  495. data/tasks/metric_changes.rake +24 -0
  496. data/tasks/rcov.rake +23 -0
  497. data/tasks/release.rake +54 -0
  498. data/tasks/reversion.rake +8 -0
  499. data/tasks/setup.rake +6 -0
  500. data/tasks/todo.rake +27 -0
  501. data/tasks/traits.rake +21 -0
  502. data/tasks/yard.rake +4 -0
  503. metadata +720 -0
@@ -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,155 @@
1
+ =begin
2
+ mo.rb - A simple class for operating GNU MO file.
3
+
4
+ Copyright (C) 2003-2006 Masao Mutoh
5
+ Copyright (C) 2002 Masahiro Sakai, Masao Mutoh
6
+ Copyright (C) 2001 Masahiro Sakai
7
+
8
+ Masahiro Sakai <s01397ms@sfc.keio.ac.jp>
9
+ Masao Mutoh <mutoh@highway.ne.jp>
10
+
11
+ You can redistribute this file and/or modify it under the same term
12
+ of Ruby. License of Ruby is included with Ruby distribution in
13
+ the file "README".
14
+
15
+ $Id: mo.rb,v 1.7 2006/06/11 15:36:20 mutoh Exp $
16
+ =end
17
+
18
+ require 'iconv'
19
+
20
+ class MOFile < Hash
21
+ class InvalidFormat < RuntimeError; end;
22
+
23
+ attr_reader :filename
24
+
25
+ Header = Struct.new(:magic,
26
+ :revision,
27
+ :nstrings,
28
+ :orig_table_offset,
29
+ :translated_table_offset,
30
+ :hash_table_size,
31
+ :hash_table_offset)
32
+
33
+ MAGIC_BIG_ENDIAN = "\x95\x04\x12\xde"
34
+ MAGIC_LITTLE_ENDIAN = "\xde\x12\x04\x95"
35
+
36
+ def self.open(arg = nil, output_charset = nil)
37
+ result = self.new(output_charset)
38
+ result.load(arg)
39
+ end
40
+
41
+ def initialize(output_charset = nil)
42
+ @filename = nil
43
+ @last_modified = nil
44
+ @little_endian = true
45
+ @output_charset = output_charset
46
+ super
47
+ end
48
+
49
+ def update!
50
+ if FileTest.exist?(@filename)
51
+ st = File.stat(@filename)
52
+ load(@filename) unless (@last_modified == [st.ctime, st.mtime])
53
+ else
54
+ puts "#{@filename} was lost." if $DEBUG
55
+ clear
56
+ end
57
+ self
58
+ end
59
+
60
+ def load(arg)
61
+ case arg
62
+ when String
63
+ begin
64
+ st = File.stat(arg)
65
+ @last_modified = [st.ctime, st.mtime]
66
+ rescue Exception
67
+ end
68
+ load_from_file(arg)
69
+ when IO
70
+ load_from_stream(arg)
71
+ end
72
+ @filename = arg
73
+ self
74
+ end
75
+
76
+ def load_from_stream(io)
77
+ magic = io.read(4)
78
+ case magic
79
+ when MAGIC_BIG_ENDIAN
80
+ @little_endian = false
81
+ when MAGIC_LITTLE_ENDIAN
82
+ @little_endian = true
83
+ else
84
+ raise InvalidFormat.new("Unknown signature %s" % magic.dump)
85
+ end
86
+
87
+ header = Header.new(magic, *(io.read(4 * 6).unpack(@little_endian ? 'V6' : 'N6')))
88
+ raise InvalidFormat.new(sprintf("file format revision %d isn't supported", header.revision)) if header.revision > 0
89
+
90
+ io.pos = header.orig_table_offset
91
+ orig_table_data = io.read((4 * 2) * header.nstrings).unpack(@little_endian ? 'V*' : 'N*')
92
+
93
+ io.pos = header.translated_table_offset
94
+ trans_table_data = io.read((4 * 2) * header.nstrings).unpack(@little_endian ? 'V*' : 'N*')
95
+
96
+ original_strings = Array.new(header.nstrings)
97
+ for i in 0...header.nstrings
98
+ io.pos = orig_table_data[i * 2 + 1]
99
+ original_strings[i] = io.read(orig_table_data[i * 2 + 0])
100
+ end
101
+
102
+ clear
103
+ for i in 0...header.nstrings
104
+ io.pos = trans_table_data[i * 2 + 1]
105
+ str = io.read(trans_table_data[i * 2 + 0])
106
+
107
+ if original_strings[i] == ""
108
+ if str
109
+ @charset = nil
110
+ @nplurals = nil
111
+ @plural = nil
112
+ str.each_line{|line|
113
+ if /^Content-Type:/i =~ line and /charset=((?:\w|-)+)/i =~ line
114
+ @charset = $1
115
+ elsif /^Plural-Forms:\s*nplurals\s*\=\s*(\d*);\s*plural\s*\=\s*([^;]*)\n?/ =~ line
116
+ @nplurals = $1
117
+ @plural = $2
118
+ end
119
+ break if @charset and @nplurals
120
+ }
121
+ @nplurals = "1" unless @nplurals
122
+ @plural = "0" unless @plural
123
+ end
124
+ else
125
+ if @output_charset
126
+ begin
127
+ str = Iconv.iconv(@output_charset, @charset, str).join if @charset
128
+ rescue Iconv::Failure
129
+ if $DEBUG
130
+ $stderr.print "@charset = ", @charset, "\n"
131
+ $stderr.print "@output_charset = ", @output_charset, "\n"
132
+ $stderr.print "msgid = ", original_strings[i], "\n"
133
+ $stderr.print "msgstr = ", str, "\n"
134
+ end
135
+ end
136
+ end
137
+ end
138
+ self[original_strings[i]] = str
139
+ end
140
+ self
141
+ end
142
+
143
+ def load_from_file(filename)
144
+ @filename = filename
145
+ File.open(filename, 'rb'){|f| load_from_stream(f)}
146
+ end
147
+
148
+ def set_comment(msgid_or_sym, comment)
149
+ #Do nothing
150
+ end
151
+
152
+
153
+ attr_accessor :little_endian, :path, :last_modified
154
+ attr_reader :charset, :nplurals, :plural
155
+ end
@@ -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 @@
1
+ Ramaze.deprecated('contrib/gzip_filter.rb', 'Rack::Deflater')
@@ -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