rabbit 0.6.2

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 (620) hide show
  1. data/COPYING +56 -0
  2. data/COPYING.ja +51 -0
  3. data/GPL +340 -0
  4. data/INSTALL.macosx-macports.en +75 -0
  5. data/INSTALL.macosx-macports.ja +101 -0
  6. data/INSTALL.win32.en +74 -0
  7. data/INSTALL.win32.ja +77 -0
  8. data/NEWS.en +337 -0
  9. data/NEWS.ja +338 -0
  10. data/README.en +836 -0
  11. data/README.ja +871 -0
  12. data/Rakefile +82 -0
  13. data/TODO +7 -0
  14. data/bin/rabbirc +86 -0
  15. data/bin/rabbit +759 -0
  16. data/bin/rabbit-command +95 -0
  17. data/bin/rabbit-theme-manager +133 -0
  18. data/bin/rabbit.bat +8 -0
  19. data/bin/rabrick +82 -0
  20. data/data/locale/en/LC_MESSAGES/rabbit.mo +0 -0
  21. data/data/locale/fr/LC_MESSAGES/rabbit.mo +0 -0
  22. data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
  23. data/data/rabbit/image/clear-blue-images/clear-blue-headline-background.png +0 -0
  24. data/data/rabbit/image/clear-blue-images/clear-blue-icon.png +0 -0
  25. data/data/rabbit/image/clear-blue-images/clear-blue-images.rb +0 -0
  26. data/data/rabbit/image/clear-blue-images/property.rb +4 -0
  27. data/data/rabbit/image/cozmixng-images/cozmixchu.png +0 -0
  28. data/data/rabbit/image/cozmixng-images/cozmixng-images.rb +2 -0
  29. data/data/rabbit/image/cozmixng-images/powered-by-cozmixng.png +0 -0
  30. data/data/rabbit/image/cozmixng-images/property.rb +4 -0
  31. data/data/rabbit/image/rabbit-images/blue-item.png +0 -0
  32. data/data/rabbit/image/rabbit-images/close-quote-blue.png +0 -0
  33. data/data/rabbit/image/rabbit-images/close-quote-brown.png +0 -0
  34. data/data/rabbit/image/rabbit-images/close-quote-light-blue.png +0 -0
  35. data/data/rabbit/image/rabbit-images/goal-flag.png +0 -0
  36. data/data/rabbit/image/rabbit-images/green-item.png +0 -0
  37. data/data/rabbit/image/rabbit-images/kame.png +0 -0
  38. data/data/rabbit/image/rabbit-images/lavie-icon.png +0 -0
  39. data/data/rabbit/image/rabbit-images/lavie-with-logo.png +0 -0
  40. data/data/rabbit/image/rabbit-images/lavie.png +0 -0
  41. data/data/rabbit/image/rabbit-images/mini-alice.png +0 -0
  42. data/data/rabbit/image/rabbit-images/mini-horizontal-bar.png +0 -0
  43. data/data/rabbit/image/rabbit-images/mini-kame-taro.png +0 -0
  44. data/data/rabbit/image/rabbit-images/mini-tanu-kitaro.png +0 -0
  45. data/data/rabbit/image/rabbit-images/mini-usa-taro.png +0 -0
  46. data/data/rabbit/image/rabbit-images/mini-usagi.png +0 -0
  47. data/data/rabbit/image/rabbit-images/mini-vertical-bar.png +0 -0
  48. data/data/rabbit/image/rabbit-images/mini-yukidaru-taro.png +0 -0
  49. data/data/rabbit/image/rabbit-images/open-quote-blue.png +0 -0
  50. data/data/rabbit/image/rabbit-images/open-quote-brown.png +0 -0
  51. data/data/rabbit/image/rabbit-images/open-quote-light-blue.png +0 -0
  52. data/data/rabbit/image/rabbit-images/property.rb +4 -0
  53. data/data/rabbit/image/rabbit-images/rabbit-banner-blue.png +0 -0
  54. data/data/rabbit/image/rabbit-images/rabbit-banner-green.png +0 -0
  55. data/data/rabbit/image/rabbit-images/rabbit-banner-heads.png +0 -0
  56. data/data/rabbit/image/rabbit-images/rabbit-banner-pink.png +0 -0
  57. data/data/rabbit/image/rabbit-images/rabbit-banner.png +0 -0
  58. data/data/rabbit/image/rabbit-images/rabbit-banner2.png +0 -0
  59. data/data/rabbit/image/rabbit-images/rabbit-images.rb +2 -0
  60. data/data/rabbit/image/rabbit-images/rabbit-pink-logo.png +0 -0
  61. data/data/rabbit/image/rabbit-images/rabbit-pink-logo2.png +0 -0
  62. data/data/rabbit/image/rabbit-images/red-item.png +0 -0
  63. data/data/rabbit/image/rabbit-images/red-item2.png +0 -0
  64. data/data/rabbit/image/rabbit-images/start-flag.png +0 -0
  65. data/data/rabbit/image/rabbit-images/tanu-kitaro.png +0 -0
  66. data/data/rabbit/image/rabbit-images/usa-taro.png +0 -0
  67. data/data/rabbit/image/rabbit-images/usagi.png +0 -0
  68. data/data/rabbit/image/rabbit-images/yukiusa.png +0 -0
  69. data/data/rabbit/image/ruby-images/property.rb +4 -0
  70. data/data/rabbit/image/ruby-images/ruby-images.rb +2 -0
  71. data/data/rabbit/image/ruby-images/ruby-pink-circle-icon.png +0 -0
  72. data/data/rabbit/image/ruby-images/ruby-pink-circle-logo.png +0 -0
  73. data/data/rabbit/image/ruby-images/ruby-pink-circle-small-icon.png +0 -0
  74. data/data/rabbit/image/ruby-images/ruby-pink-circle.png +0 -0
  75. data/data/rabbit/image/ruby-images/ruby-pink-polygon-icon.png +0 -0
  76. data/data/rabbit/image/ruby-images/ruby-pink-polygon-logo.png +0 -0
  77. data/data/rabbit/image/ruby-images/ruby-pink-polygon-small-icon.png +0 -0
  78. data/data/rabbit/image/ruby-images/ruby-pink-polygon.png +0 -0
  79. data/entities/README +10 -0
  80. data/entities/ent2rb.rb +57 -0
  81. data/entities/isoamsa.ent +167 -0
  82. data/entities/isoamsb.ent +143 -0
  83. data/entities/isoamsc.ent +43 -0
  84. data/entities/isoamsn.ent +114 -0
  85. data/entities/isoamso.ent +73 -0
  86. data/entities/isoamsr.ent +204 -0
  87. data/entities/isobox.ent +61 -0
  88. data/entities/isocyr1.ent +88 -0
  89. data/entities/isocyr2.ent +47 -0
  90. data/entities/isodia.ent +35 -0
  91. data/entities/isogrk3.ent +64 -0
  92. data/entities/isolat1.ent +83 -0
  93. data/entities/isolat2.ent +142 -0
  94. data/entities/isomfrk.ent +75 -0
  95. data/entities/isomopf.ent +49 -0
  96. data/entities/isomscr.ent +75 -0
  97. data/entities/isonum.ent +97 -0
  98. data/entities/isopub.ent +105 -0
  99. data/entities/isotech.ent +182 -0
  100. data/entities/mmlalias.ent +564 -0
  101. data/entities/mmlextra.ent +122 -0
  102. data/lib/rabbit/action.rb +143 -0
  103. data/lib/rabbit/action/basic.rb +304 -0
  104. data/lib/rabbit/action/radio.rb +78 -0
  105. data/lib/rabbit/action/toggle.rb +89 -0
  106. data/lib/rabbit/canvas.rb +760 -0
  107. data/lib/rabbit/comment-canvas.rb +21 -0
  108. data/lib/rabbit/comment/log.rb +74 -0
  109. data/lib/rabbit/console.rb +133 -0
  110. data/lib/rabbit/console/roff.rb +84 -0
  111. data/lib/rabbit/cursor-manager.rb +62 -0
  112. data/lib/rabbit/default-config.rb +16 -0
  113. data/lib/rabbit/dependency-canvas.rb +14 -0
  114. data/lib/rabbit/div/comment-i.erb +7 -0
  115. data/lib/rabbit/div/comment.erb +45 -0
  116. data/lib/rabbit/div/css.erb +1 -0
  117. data/lib/rabbit/div/js.erb +1 -0
  118. data/lib/rabbit/div/log.erb +5 -0
  119. data/lib/rabbit/div/main-i.erb +24 -0
  120. data/lib/rabbit/div/main.css +40 -0
  121. data/lib/rabbit/div/main.erb +33 -0
  122. data/lib/rabbit/div/navi-i.erb +6 -0
  123. data/lib/rabbit/div/navi.erb +6 -0
  124. data/lib/rabbit/div/prototype.js +4320 -0
  125. data/lib/rabbit/div/slide-i.erb +2 -0
  126. data/lib/rabbit/div/slide.erb +5 -0
  127. data/lib/rabbit/div/tofu.rb +309 -0
  128. data/lib/rabbit/element.rb +8 -0
  129. data/lib/rabbit/element/base.rb +499 -0
  130. data/lib/rabbit/element/base/draw-hook.rb +75 -0
  131. data/lib/rabbit/element/block-element.rb +38 -0
  132. data/lib/rabbit/element/block.rb +53 -0
  133. data/lib/rabbit/element/container-element.rb +254 -0
  134. data/lib/rabbit/element/description-list.rb +56 -0
  135. data/lib/rabbit/element/enum-list.rb +33 -0
  136. data/lib/rabbit/element/footnote.rb +32 -0
  137. data/lib/rabbit/element/image-title-slide.rb +18 -0
  138. data/lib/rabbit/element/image.rb +167 -0
  139. data/lib/rabbit/element/index-slide.rb +190 -0
  140. data/lib/rabbit/element/item-list.rb +31 -0
  141. data/lib/rabbit/element/method-list.rb +50 -0
  142. data/lib/rabbit/element/poppler-page.rb +36 -0
  143. data/lib/rabbit/element/poppler-slide.rb +25 -0
  144. data/lib/rabbit/element/poppler-title-slide.rb +23 -0
  145. data/lib/rabbit/element/preformatted.rb +27 -0
  146. data/lib/rabbit/element/slide-element.rb +97 -0
  147. data/lib/rabbit/element/slide.rb +51 -0
  148. data/lib/rabbit/element/table.rb +100 -0
  149. data/lib/rabbit/element/tag.rb +29 -0
  150. data/lib/rabbit/element/text-container-element.rb +104 -0
  151. data/lib/rabbit/element/text-element.rb +59 -0
  152. data/lib/rabbit/element/text-renderer.rb +321 -0
  153. data/lib/rabbit/element/text.rb +82 -0
  154. data/lib/rabbit/element/title-slide.rb +190 -0
  155. data/lib/rabbit/formatter.rb +143 -0
  156. data/lib/rabbit/frame.rb +275 -0
  157. data/lib/rabbit/front.rb +238 -0
  158. data/lib/rabbit/gesture/handler.rb +232 -0
  159. data/lib/rabbit/gesture/processor.rb +118 -0
  160. data/lib/rabbit/gettext.rb +90 -0
  161. data/lib/rabbit/graffiti/config-dialog.rb +57 -0
  162. data/lib/rabbit/graffiti/processor.rb +116 -0
  163. data/lib/rabbit/html/generator.rb +458 -0
  164. data/lib/rabbit/html/template.erb +109 -0
  165. data/lib/rabbit/image.rb +35 -0
  166. data/lib/rabbit/image/base.rb +104 -0
  167. data/lib/rabbit/image/default.rb +27 -0
  168. data/lib/rabbit/image/dia.rb +63 -0
  169. data/lib/rabbit/image/eps.rb +113 -0
  170. data/lib/rabbit/image/gimp.rb +53 -0
  171. data/lib/rabbit/image/pdf.rb +77 -0
  172. data/lib/rabbit/image/svg.rb +78 -0
  173. data/lib/rabbit/info-window.rb +160 -0
  174. data/lib/rabbit/keys.rb +190 -0
  175. data/lib/rabbit/logger.rb +14 -0
  176. data/lib/rabbit/logger/base.rb +129 -0
  177. data/lib/rabbit/logger/gui.rb +172 -0
  178. data/lib/rabbit/logger/stderr.rb +28 -0
  179. data/lib/rabbit/menu.rb +287 -0
  180. data/lib/rabbit/parser.rb +24 -0
  181. data/lib/rabbit/parser/base.rb +20 -0
  182. data/lib/rabbit/parser/ext/anthy.rb +43 -0
  183. data/lib/rabbit/parser/ext/enscript.rb +122 -0
  184. data/lib/rabbit/parser/ext/entity.rb +4178 -0
  185. data/lib/rabbit/parser/ext/escape.rb +18 -0
  186. data/lib/rabbit/parser/ext/image.rb +102 -0
  187. data/lib/rabbit/parser/ext/inline.rb +29 -0
  188. data/lib/rabbit/parser/ext/tex.rb +77 -0
  189. data/lib/rabbit/parser/image.rb +34 -0
  190. data/lib/rabbit/parser/pause-support.rb +32 -0
  191. data/lib/rabbit/parser/pdf.rb +35 -0
  192. data/lib/rabbit/parser/rd.rb +54 -0
  193. data/lib/rabbit/parser/rd/ext/anthy.rb +29 -0
  194. data/lib/rabbit/parser/rd/ext/base.rb +79 -0
  195. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +103 -0
  196. data/lib/rabbit/parser/rd/ext/enscript.rb +24 -0
  197. data/lib/rabbit/parser/rd/ext/entity.rb +38 -0
  198. data/lib/rabbit/parser/rd/ext/image.rb +27 -0
  199. data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +89 -0
  200. data/lib/rabbit/parser/rd/ext/refer.rb +34 -0
  201. data/lib/rabbit/parser/rd/ext/tex.rb +24 -0
  202. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +424 -0
  203. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +83 -0
  204. data/lib/rabbit/parser/rd/visitor.rb +56 -0
  205. data/lib/rabbit/parser/wiki.rb +30 -0
  206. data/lib/rabbit/parser/wiki/output.rb +460 -0
  207. data/lib/rabbit/post-setup.rb +8 -0
  208. data/lib/rabbit/pre-clean.rb +2 -0
  209. data/lib/rabbit/pre-distclean.rb +2 -0
  210. data/lib/rabbit/progress.rb +68 -0
  211. data/lib/rabbit/rabbit.rb +222 -0
  212. data/lib/rabbit/renderer.rb +27 -0
  213. data/lib/rabbit/renderer/base.rb +512 -0
  214. data/lib/rabbit/renderer/color.rb +80 -0
  215. data/lib/rabbit/renderer/display.rb +25 -0
  216. data/lib/rabbit/renderer/display/base.rb +93 -0
  217. data/lib/rabbit/renderer/display/button-handler.rb +145 -0
  218. data/lib/rabbit/renderer/display/clutter-embed.rb +634 -0
  219. data/lib/rabbit/renderer/display/comment-drawing-area.rb +173 -0
  220. data/lib/rabbit/renderer/display/comment.rb +194 -0
  221. data/lib/rabbit/renderer/display/cursor.rb +34 -0
  222. data/lib/rabbit/renderer/display/drawing-area-base.rb +395 -0
  223. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +219 -0
  224. data/lib/rabbit/renderer/display/drawing-area-view-only.rb +33 -0
  225. data/lib/rabbit/renderer/display/drawing-area.rb +31 -0
  226. data/lib/rabbit/renderer/display/gesture.rb +94 -0
  227. data/lib/rabbit/renderer/display/gl.rb +98 -0
  228. data/lib/rabbit/renderer/display/graffiti.rb +120 -0
  229. data/lib/rabbit/renderer/display/info.rb +45 -0
  230. data/lib/rabbit/renderer/display/key-handler.rb +303 -0
  231. data/lib/rabbit/renderer/display/magnifier.rb +123 -0
  232. data/lib/rabbit/renderer/display/mask.rb +68 -0
  233. data/lib/rabbit/renderer/display/menu.rb +30 -0
  234. data/lib/rabbit/renderer/display/progress.rb +62 -0
  235. data/lib/rabbit/renderer/display/search.rb +107 -0
  236. data/lib/rabbit/renderer/display/spotlight.rb +117 -0
  237. data/lib/rabbit/renderer/engine.rb +18 -0
  238. data/lib/rabbit/renderer/engine/cairo.rb +438 -0
  239. data/lib/rabbit/renderer/engine/gdk.rb +229 -0
  240. data/lib/rabbit/renderer/gl.rb +176 -0
  241. data/lib/rabbit/renderer/kernel.rb +256 -0
  242. data/lib/rabbit/renderer/pixmap.rb +25 -0
  243. data/lib/rabbit/renderer/pixmap/base.rb +127 -0
  244. data/lib/rabbit/renderer/pixmap/cairo.rb +23 -0
  245. data/lib/rabbit/renderer/pixmap/gdk.rb +29 -0
  246. data/lib/rabbit/renderer/pixmap/gl.rb +46 -0
  247. data/lib/rabbit/renderer/print.rb +31 -0
  248. data/lib/rabbit/renderer/print/base.rb +73 -0
  249. data/lib/rabbit/renderer/print/cairo.rb +130 -0
  250. data/lib/rabbit/renderer/print/layout.rb +123 -0
  251. data/lib/rabbit/renderer/print/multiple.rb +205 -0
  252. data/lib/rabbit/search-window.rb +99 -0
  253. data/lib/rabbit/searcher.rb +106 -0
  254. data/lib/rabbit/soap/base.rb +17 -0
  255. data/lib/rabbit/soap/driver.rb +45 -0
  256. data/lib/rabbit/soap/server.rb +33 -0
  257. data/lib/rabbit/source.rb +14 -0
  258. data/lib/rabbit/source/argf.rb +29 -0
  259. data/lib/rabbit/source/base.rb +164 -0
  260. data/lib/rabbit/source/file.rb +65 -0
  261. data/lib/rabbit/source/hiki.rb +36 -0
  262. data/lib/rabbit/source/memory.rb +41 -0
  263. data/lib/rabbit/source/rwiki.rb +54 -0
  264. data/lib/rabbit/source/slide-share.rb +53 -0
  265. data/lib/rabbit/source/uri.rb +73 -0
  266. data/lib/rabbit/stock.rb +31 -0
  267. data/lib/rabbit/theme-browser.rb +104 -0
  268. data/lib/rabbit/theme-browser/default-tag.yaml +89 -0
  269. data/lib/rabbit/theme-browser/document.rb +200 -0
  270. data/lib/rabbit/theme-browser/ext/block-verbatim.rb +39 -0
  271. data/lib/rabbit/theme-browser/page.rb +133 -0
  272. data/lib/rabbit/theme-browser/rd2document-lib.rb +181 -0
  273. data/lib/rabbit/theme-browser/tag.rb +67 -0
  274. data/lib/rabbit/theme-browser/tree.rb +91 -0
  275. data/lib/rabbit/theme/applier.rb +613 -0
  276. data/lib/rabbit/theme/auto-slide/auto-slide.rb +6 -0
  277. data/lib/rabbit/theme/auto-slide/property.rb +4 -0
  278. data/lib/rabbit/theme/base/base.rb +76 -0
  279. data/lib/rabbit/theme/base/property.rb +4 -0
  280. data/lib/rabbit/theme/blue-bar/blue-bar.rb +93 -0
  281. data/lib/rabbit/theme/blue-bar/property.rb +3 -0
  282. data/lib/rabbit/theme/blue-circle/blue-circle.rb +14 -0
  283. data/lib/rabbit/theme/blue-circle/property.rb +3 -0
  284. data/lib/rabbit/theme/centering-rabbit/centering-rabbit.rb +5 -0
  285. data/lib/rabbit/theme/centering-rabbit/property.rb +3 -0
  286. data/lib/rabbit/theme/clear-blue/clear-blue.rb +100 -0
  287. data/lib/rabbit/theme/clear-blue/property.rb +3 -0
  288. data/lib/rabbit/theme/clock/clock.rb +37 -0
  289. data/lib/rabbit/theme/clock/property.rb +21 -0
  290. data/lib/rabbit/theme/color-circle-block-quote/color-circle-block-quote.rb +26 -0
  291. data/lib/rabbit/theme/color-circle-block-quote/property.rb +4 -0
  292. data/lib/rabbit/theme/color-circle-common/color-circle-common.rb +48 -0
  293. data/lib/rabbit/theme/color-circle-common/property.rb +3 -0
  294. data/lib/rabbit/theme/color-circle-description/color-circle-description.rb +9 -0
  295. data/lib/rabbit/theme/color-circle-description/property.rb +4 -0
  296. data/lib/rabbit/theme/color-circle-foot-text/color-circle-foot-text.rb +14 -0
  297. data/lib/rabbit/theme/color-circle-foot-text/property.rb +4 -0
  298. data/lib/rabbit/theme/color-circle-item-mark/color-circle-item-mark.rb +77 -0
  299. data/lib/rabbit/theme/color-circle-item-mark/property.rb +4 -0
  300. data/lib/rabbit/theme/color-circle-method-list/color-circle-method-list.rb +8 -0
  301. data/lib/rabbit/theme/color-circle-method-list/property.rb +4 -0
  302. data/lib/rabbit/theme/color-circle-preformatted/color-circle-preformatted.rb +5 -0
  303. data/lib/rabbit/theme/color-circle-preformatted/property.rb +4 -0
  304. data/lib/rabbit/theme/color-circle-slide/color-circle-slide.rb +13 -0
  305. data/lib/rabbit/theme/color-circle-slide/property.rb +4 -0
  306. data/lib/rabbit/theme/color-circle-text/color-circle-text.rb +9 -0
  307. data/lib/rabbit/theme/color-circle-text/property.rb +4 -0
  308. data/lib/rabbit/theme/color-circle-title-slide/color-circle-title-slide.rb +27 -0
  309. data/lib/rabbit/theme/color-circle-title-slide/property.rb +4 -0
  310. data/lib/rabbit/theme/color-circle-title-text/color-circle-title-text.rb +7 -0
  311. data/lib/rabbit/theme/color-circle-title-text/property.rb +4 -0
  312. data/lib/rabbit/theme/color-circle/color-circle.rb +40 -0
  313. data/lib/rabbit/theme/color-circle/property.rb +4 -0
  314. data/lib/rabbit/theme/comment/comment.rb +5 -0
  315. data/lib/rabbit/theme/comment/property.rb +3 -0
  316. data/lib/rabbit/theme/cozmixng-powered-by/cozmixng-powered-by.rb +6 -0
  317. data/lib/rabbit/theme/cozmixng-powered-by/property.rb +7 -0
  318. data/lib/rabbit/theme/cozmixng/cozmixng.rb +55 -0
  319. data/lib/rabbit/theme/cozmixng/property.rb +3 -0
  320. data/lib/rabbit/theme/day-white/day-white.rb +14 -0
  321. data/lib/rabbit/theme/day-white/property.rb +3 -0
  322. data/lib/rabbit/theme/default-block-quote/default-block-quote.rb +113 -0
  323. data/lib/rabbit/theme/default-block-quote/property.rb +3 -0
  324. data/lib/rabbit/theme/default-description/default-description.rb +64 -0
  325. data/lib/rabbit/theme/default-description/property.rb +5 -0
  326. data/lib/rabbit/theme/default-foot-text/default-foot-text.rb +52 -0
  327. data/lib/rabbit/theme/default-foot-text/property.rb +3 -0
  328. data/lib/rabbit/theme/default-icon/default-icon.rb +4 -0
  329. data/lib/rabbit/theme/default-icon/property.rb +5 -0
  330. data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +116 -0
  331. data/lib/rabbit/theme/default-item-mark-setup/property.rb +3 -0
  332. data/lib/rabbit/theme/default-item-mark/default-item-mark.rb +92 -0
  333. data/lib/rabbit/theme/default-item-mark/property.rb +4 -0
  334. data/lib/rabbit/theme/default-method-list/default-method-list.rb +6 -0
  335. data/lib/rabbit/theme/default-method-list/property.rb +3 -0
  336. data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +37 -0
  337. data/lib/rabbit/theme/default-preformatted/property.rb +3 -0
  338. data/lib/rabbit/theme/default-slide/default-slide.rb +33 -0
  339. data/lib/rabbit/theme/default-slide/property.rb +3 -0
  340. data/lib/rabbit/theme/default-text/default-text.rb +183 -0
  341. data/lib/rabbit/theme/default-text/property.rb +3 -0
  342. data/lib/rabbit/theme/default-title-slide/default-title-slide.rb +13 -0
  343. data/lib/rabbit/theme/default-title-slide/property.rb +6 -0
  344. data/lib/rabbit/theme/default-title-text/default-title-text.rb +48 -0
  345. data/lib/rabbit/theme/default-title-text/property.rb +3 -0
  346. data/lib/rabbit/theme/default/default.rb +22 -0
  347. data/lib/rabbit/theme/default/property.rb +3 -0
  348. data/lib/rabbit/theme/document.erb +35 -0
  349. data/lib/rabbit/theme/edge-info-toolkit/edge-info-toolkit.rb +77 -0
  350. data/lib/rabbit/theme/edge-info-toolkit/property.rb +3 -0
  351. data/lib/rabbit/theme/emphasize-keyword/emphasize-keyword.rb +16 -0
  352. data/lib/rabbit/theme/emphasize-keyword/property.rb +4 -0
  353. data/lib/rabbit/theme/entry.rb +121 -0
  354. data/lib/rabbit/theme/footer-logo/footer-logo.rb +30 -0
  355. data/lib/rabbit/theme/footer-logo/property.rb +26 -0
  356. data/lib/rabbit/theme/green-circle/green-circle.rb +14 -0
  357. data/lib/rabbit/theme/green-circle/property.rb +3 -0
  358. data/lib/rabbit/theme/headline-logo/headline-logo.rb +24 -0
  359. data/lib/rabbit/theme/headline-logo/property.rb +10 -0
  360. data/lib/rabbit/theme/icon/icon.rb +8 -0
  361. data/lib/rabbit/theme/icon/property.rb +24 -0
  362. data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +111 -0
  363. data/lib/rabbit/theme/image-slide-number/property.rb +64 -0
  364. data/lib/rabbit/theme/image-timer/image-timer.rb +109 -0
  365. data/lib/rabbit/theme/image-timer/property.rb +46 -0
  366. data/lib/rabbit/theme/image-viewer/image-viewer.rb +7 -0
  367. data/lib/rabbit/theme/image-viewer/property.rb +3 -0
  368. data/lib/rabbit/theme/image/image.rb +72 -0
  369. data/lib/rabbit/theme/image/property.rb +3 -0
  370. data/lib/rabbit/theme/lightning-clear-blue/lightning-clear-blue.rb +13 -0
  371. data/lib/rabbit/theme/lightning-clear-blue/property.rb +3 -0
  372. data/lib/rabbit/theme/lightning-rabbit/lightning-rabbit.rb +13 -0
  373. data/lib/rabbit/theme/lightning-rabbit/property.rb +3 -0
  374. data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +60 -0
  375. data/lib/rabbit/theme/lightning-simple/property.rb +3 -0
  376. data/lib/rabbit/theme/lightning-talk-toolkit/lightning-talk-toolkit.rb +171 -0
  377. data/lib/rabbit/theme/lightning-talk-toolkit/property.rb +3 -0
  378. data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +65 -0
  379. data/lib/rabbit/theme/lightning-talk/property.rb +3 -0
  380. data/lib/rabbit/theme/manager.rb +35 -0
  381. data/lib/rabbit/theme/mirror-effect/mirror-effect.rb +27 -0
  382. data/lib/rabbit/theme/mirror-effect/property.rb +3 -0
  383. data/lib/rabbit/theme/newline-in-slides/newline-in-slides.rb +3 -0
  384. data/lib/rabbit/theme/newline-in-slides/property.rb +4 -0
  385. data/lib/rabbit/theme/newline-in-title/newline-in-title.rb +7 -0
  386. data/lib/rabbit/theme/newline-in-title/property.rb +4 -0
  387. data/lib/rabbit/theme/night-black/night-black.rb +25 -0
  388. data/lib/rabbit/theme/night-black/property.rb +3 -0
  389. data/lib/rabbit/theme/pdf-tortoise-and-hare/pdf-tortoise-and-hare.rb +18 -0
  390. data/lib/rabbit/theme/pdf-tortoise-and-hare/property.rb +3 -0
  391. data/lib/rabbit/theme/pdf/pdf.rb +4 -0
  392. data/lib/rabbit/theme/pdf/property.rb +3 -0
  393. data/lib/rabbit/theme/powered-by/powered-by.rb +67 -0
  394. data/lib/rabbit/theme/powered-by/property.rb +24 -0
  395. data/lib/rabbit/theme/rabbit-block-quote/property.rb +4 -0
  396. data/lib/rabbit/theme/rabbit-block-quote/rabbit-block-quote.rb +16 -0
  397. data/lib/rabbit/theme/rabbit-headline-logo/property.rb +5 -0
  398. data/lib/rabbit/theme/rabbit-headline-logo/rabbit-headline-logo.rb +4 -0
  399. data/lib/rabbit/theme/rabbit-icon/property.rb +5 -0
  400. data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +4 -0
  401. data/lib/rabbit/theme/rabbit-item-mark/property.rb +5 -0
  402. data/lib/rabbit/theme/rabbit-item-mark/rabbit-item-mark.rb +53 -0
  403. data/lib/rabbit/theme/rabbit-powered-by/property.rb +7 -0
  404. data/lib/rabbit/theme/rabbit-powered-by/rabbit-powered-by.rb +5 -0
  405. data/lib/rabbit/theme/rabbit-title-logo/property.rb +5 -0
  406. data/lib/rabbit/theme/rabbit-title-logo/rabbit-title-logo.rb +4 -0
  407. data/lib/rabbit/theme/rabbit/property.rb +3 -0
  408. data/lib/rabbit/theme/rabbit/rabbit.rb +63 -0
  409. data/lib/rabbit/theme/red-frame/property.rb +3 -0
  410. data/lib/rabbit/theme/red-frame/red-frame.rb +96 -0
  411. data/lib/rabbit/theme/rotate-zoom-effect/property.rb +4 -0
  412. data/lib/rabbit/theme/rotate-zoom-effect/rotate-zoom-effect.rb +51 -0
  413. data/lib/rabbit/theme/ruby-gnome2-description/property.rb +7 -0
  414. data/lib/rabbit/theme/ruby-gnome2-description/ruby-gnome2-description.rb +7 -0
  415. data/lib/rabbit/theme/ruby-gnome2-foot-text/property.rb +5 -0
  416. data/lib/rabbit/theme/ruby-gnome2-foot-text/ruby-gnome2-foot-text.rb +3 -0
  417. data/lib/rabbit/theme/ruby-gnome2-headline/property.rb +7 -0
  418. data/lib/rabbit/theme/ruby-gnome2-headline/ruby-gnome2-headline.rb +47 -0
  419. data/lib/rabbit/theme/ruby-gnome2-icon/property.rb +5 -0
  420. data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +4 -0
  421. data/lib/rabbit/theme/ruby-gnome2-item-mark/property.rb +10 -0
  422. data/lib/rabbit/theme/ruby-gnome2-item-mark/ruby-gnome2-item-mark.rb +65 -0
  423. data/lib/rabbit/theme/ruby-gnome2-preformatted/property.rb +4 -0
  424. data/lib/rabbit/theme/ruby-gnome2-preformatted/ruby-gnome2-preformatted.rb +8 -0
  425. data/lib/rabbit/theme/ruby-gnome2-slide/property.rb +4 -0
  426. data/lib/rabbit/theme/ruby-gnome2-slide/ruby-gnome2-slide.rb +40 -0
  427. data/lib/rabbit/theme/ruby-gnome2/property.rb +3 -0
  428. data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +61 -0
  429. data/lib/rabbit/theme/scroll-effect/property.rb +3 -0
  430. data/lib/rabbit/theme/scroll-effect/scroll-effect.rb +32 -0
  431. data/lib/rabbit/theme/searcher.rb +120 -0
  432. data/lib/rabbit/theme/show-frame/property.rb +16 -0
  433. data/lib/rabbit/theme/show-frame/show-frame.rb +17 -0
  434. data/lib/rabbit/theme/simple-item-mark/property.rb +5 -0
  435. data/lib/rabbit/theme/simple-item-mark/simple-item-mark.rb +112 -0
  436. data/lib/rabbit/theme/slide-background-image/property.rb +10 -0
  437. data/lib/rabbit/theme/slide-background-image/slide-background-image.rb +25 -0
  438. data/lib/rabbit/theme/slide-background/property.rb +6 -0
  439. data/lib/rabbit/theme/slide-background/slide-background.rb +3 -0
  440. data/lib/rabbit/theme/slide-footer-info/property.rb +43 -0
  441. data/lib/rabbit/theme/slide-footer-info/slide-footer-info.rb +42 -0
  442. data/lib/rabbit/theme/slide-header-info/property.rb +43 -0
  443. data/lib/rabbit/theme/slide-header-info/slide-header-info.rb +42 -0
  444. data/lib/rabbit/theme/slide-logo/property.rb +26 -0
  445. data/lib/rabbit/theme/slide-logo/slide-logo.rb +30 -0
  446. data/lib/rabbit/theme/slide-number/property.rb +21 -0
  447. data/lib/rabbit/theme/slide-number/slide-number.rb +28 -0
  448. data/lib/rabbit/theme/slide-show/property.rb +4 -0
  449. data/lib/rabbit/theme/slide-show/slide-show.rb +31 -0
  450. data/lib/rabbit/theme/table/property.rb +3 -0
  451. data/lib/rabbit/theme/table/table.rb +169 -0
  452. data/lib/rabbit/theme/timer/property.rb +3 -0
  453. data/lib/rabbit/theme/timer/timer.rb +63 -0
  454. data/lib/rabbit/theme/title-background-color/property.rb +10 -0
  455. data/lib/rabbit/theme/title-background-color/title-background-color.rb +17 -0
  456. data/lib/rabbit/theme/title-background-image/property.rb +11 -0
  457. data/lib/rabbit/theme/title-background-image/title-background-image.rb +25 -0
  458. data/lib/rabbit/theme/title-logo/property.rb +23 -0
  459. data/lib/rabbit/theme/title-logo/title-logo.rb +38 -0
  460. data/lib/rabbit/theme/title-on-image-toolkit/property.rb +3 -0
  461. data/lib/rabbit/theme/title-on-image-toolkit/title-on-image-toolkit.rb +122 -0
  462. data/lib/rabbit/theme/title-shadow/property.rb +11 -0
  463. data/lib/rabbit/theme/title-shadow/title-shadow.rb +33 -0
  464. data/lib/rabbit/trackball.rb +228 -0
  465. data/lib/rabbit/utils.rb +459 -0
  466. data/lib/rabbit/xmlrpc/base.rb +6 -0
  467. data/lib/rabbit/xmlrpc/client.rb +17 -0
  468. data/lib/rabbit/xmlrpc/server.rb +23 -0
  469. data/lib/rt/rt2html-lib.rb +157 -0
  470. data/lib/rt/rtparser.rb +226 -0
  471. data/lib/rt/rtvisitor.rb +68 -0
  472. data/lib/rwiki/soap/common.rb +5 -0
  473. data/lib/rwiki/soap/driver.rb +43 -0
  474. data/lib/rwiki/soap/servant.rb +78 -0
  475. data/misc/emacs/README.ja +177 -0
  476. data/misc/emacs/rabbit-mode.el +375 -0
  477. data/misc/make-image-sample.rb +94 -0
  478. data/misc/make-print-sample.rb +95 -0
  479. data/misc/update-rd.rb +78 -0
  480. data/misc/xyzzy/rabbit-mode.l +775 -0
  481. data/po/en/rabbit.po +2356 -0
  482. data/po/fr/rabbit.po +2452 -0
  483. data/po/ja/rabbit.po +2465 -0
  484. data/sample/asahina/alice.png +0 -0
  485. data/sample/asahina/yukiusa.png +0 -0
  486. data/sample/blue-circle.rd +37 -0
  487. data/sample/can_rabbit.rd +470 -0
  488. data/sample/cozmixng.rd +85 -0
  489. data/sample/cozmixng_is_field.png +0 -0
  490. data/sample/cozmixng_is_field.svg +430 -0
  491. data/sample/equation.eps +571 -0
  492. data/sample/gl-sample.rd +10 -0
  493. data/sample/html_and_wiki.png +0 -0
  494. data/sample/html_and_wiki.svg +275 -0
  495. data/sample/join_cozmixng.png +0 -0
  496. data/sample/join_cozmixng.svg +293 -0
  497. data/sample/kof2005/gesture-flow.svg +329 -0
  498. data/sample/kof2005/gesture.rb +473 -0
  499. data/sample/kof2005/gtk+-widget.svg +128 -0
  500. data/sample/kof2005/high-light-architecture.svg +203 -0
  501. data/sample/kof2005/high-light-expose.rb +120 -0
  502. data/sample/kof2005/high-light-expose.svg +153 -0
  503. data/sample/kof2005/high-light-widget.rb +147 -0
  504. data/sample/kof2005/high-light-widget.svg +172 -0
  505. data/sample/kof2005/high-light.svg +132 -0
  506. data/sample/kof2005/mask-screenshot.png +0 -0
  507. data/sample/kof2005/mask.rb +105 -0
  508. data/sample/kof2005/mask.svg +120 -0
  509. data/sample/kof2005/ruby-gnome2-logo.png +0 -0
  510. data/sample/kof2005/ruby-pink-circle-logo.png +0 -0
  511. data/sample/kof2005/skip-up-with-ruby-gnome2.rd +450 -0
  512. data/sample/kof2005/widget.svg +202 -0
  513. data/sample/kou/clear-blue-headline-background.svg +283 -0
  514. data/sample/kou/clear-blue-icon.svg +194 -0
  515. data/sample/kou/horizontal-bar.svg +82 -0
  516. data/sample/kou/quote.svg +497 -0
  517. data/sample/kou/vertical-bar.svg +70 -0
  518. data/sample/lavie.png +0 -0
  519. data/sample/lightning-talk.rd +50 -0
  520. data/sample/lldn/input.svg +269 -0
  521. data/sample/lldn/interface.svg +410 -0
  522. data/sample/lldn/kame.png +0 -0
  523. data/sample/lldn/lavie.png +0 -0
  524. data/sample/lldn/lldn.rd +212 -0
  525. data/sample/lldn/output.svg +284 -0
  526. data/sample/lldn/rabbit-rwiki.svg +353 -0
  527. data/sample/lldn/rabbit_banner.png +0 -0
  528. data/sample/lldn/rabbit_banner2.png +0 -0
  529. data/sample/m17n.rd +138 -0
  530. data/sample/momo/banner/bn1.png +0 -0
  531. data/sample/momo/banner/bn2.png +0 -0
  532. data/sample/momo/banner/bn_psd.psd +0 -0
  533. data/sample/momo/banner/bn_psd2.psd +0 -0
  534. data/sample/momo/tailavi/tailavi-ruby.png +0 -0
  535. data/sample/momo/tailavi/tailavi-ruby.psd +0 -0
  536. data/sample/momo/tailavi/tailavi-taiyaki.png +0 -0
  537. data/sample/momo/tailavi/tailavi-taiyaki.psd +0 -0
  538. data/sample/momo/tailavi/tailavi-yokubari.png +0 -0
  539. data/sample/momo/tailavi/tailavi-yokubari.psd +0 -0
  540. data/sample/momo/tailavi/taiyaki.png +0 -0
  541. data/sample/momo/tailavi/taiyaki.psd +0 -0
  542. data/sample/momo/usako/blue_dot.png +0 -0
  543. data/sample/momo/usako/green_dot.png +0 -0
  544. data/sample/momo/usako/rabbit.png +0 -0
  545. data/sample/momo/usako/rabbit_mimi.png +0 -0
  546. data/sample/momo/usako/rabbit_mimi2.png +0 -0
  547. data/sample/momo/usako/red_dot.png +0 -0
  548. data/sample/momo/usako/ruby.png +0 -0
  549. data/sample/momo/usako/ruby_new.png +0 -0
  550. data/sample/momo/usako/usa1.png +0 -0
  551. data/sample/momo/usako/usa2.png +0 -0
  552. data/sample/momo/usako/usa3.png +0 -0
  553. data/sample/momo/usako/usako_psd.psd +0 -0
  554. data/sample/momo/usako/usako_psd_100.png +0 -0
  555. data/sample/momo/usako/usako_psd_200.png +0 -0
  556. data/sample/ppt/hare-and-tortoise-end.png +0 -0
  557. data/sample/ppt/hare-and-tortoise-middle.png +0 -0
  558. data/sample/ppt/hare-and-tortoise-start.png +0 -0
  559. data/sample/ppt/ppt.rd +207 -0
  560. data/sample/ppt/rabbit-with-ruby.png +0 -0
  561. data/sample/pre.rd +112 -0
  562. data/sample/rabbit-balloon.eps +233 -0
  563. data/sample/rabbit-balloon.obj +93 -0
  564. data/sample/rabbit-en.rd +376 -0
  565. data/sample/rabbit-history.svg +280 -0
  566. data/sample/rabbit-implementation.rd +187 -0
  567. data/sample/rabbit.dia +408 -0
  568. data/sample/rabbit.hiki +328 -0
  569. data/sample/rabbit.rd +383 -0
  570. data/sample/rabbit.xcf +0 -0
  571. data/sample/rabbit/theme/festival/festival.rb +6 -0
  572. data/sample/rabbit/theme/gl-sample/gl-sample.rb +29 -0
  573. data/sample/rabbit/theme/image-with-frame/image-with-frame.rb +2 -0
  574. data/sample/rabbit/theme/image-with-no-shadow-frame/image-with-no-shadow-frame.rb +3 -0
  575. data/sample/rabbit/theme/image-without-frame/image-without-frame.rb +2 -0
  576. data/sample/rabbit/theme/kof2005/kof2005.rb +9 -0
  577. data/sample/rabbit/theme/kof2005/property.rb +3 -0
  578. data/sample/rabbit/theme/lightning-talk-with-contact/lightning-talk-with-contact.rb +6 -0
  579. data/sample/rabbit/theme/lldn/lldn.rb +20 -0
  580. data/sample/rabbit/theme/pdf/pdf.rb +16 -0
  581. data/sample/rabbit/theme/pdf/property.rb +4 -0
  582. data/sample/rabbit/theme/ppt/ppt.rb +5 -0
  583. data/sample/rabbit/theme/rabbit-and-tortoise/rabbit-and-tortoise.rb +11 -0
  584. data/sample/rabbit/theme/rectangle-image-slide-number/rectangle-image-slide-number.rb +4 -0
  585. data/sample/rabbit/theme/stop-auto-slide/stop-auto-slide.rb +2 -0
  586. data/sample/rabbit/theme/triangle-image-slide-number/triangle-image-slide-number.rb +5 -0
  587. data/sample/rabbit_icon.ico +0 -0
  588. data/sample/rabbit_icon.png +0 -0
  589. data/sample/shocker.jpg +0 -0
  590. data/sample/slide-property.hiki +14 -0
  591. data/sample/slide-property.rab +18 -0
  592. data/sample/sode/kame-color.riff +0 -0
  593. data/sample/sode/kame.riff +0 -0
  594. data/sample/spiral.svg +29 -0
  595. data/sample/table-en.rd +55 -0
  596. data/sample/table.rd +55 -0
  597. data/sample/theme-bench-en.rab +127 -0
  598. data/sample/theme-bench.rab +128 -0
  599. data/sample/usagi.png +0 -0
  600. data/sample/usatti/kame-taro.png +0 -0
  601. data/sample/usatti/rabbit-pink-logo.png +0 -0
  602. data/sample/usatti/rabbit-pink-logo2.png +0 -0
  603. data/sample/usatti/ruby-pink-circle-logo.png +0 -0
  604. data/sample/usatti/ruby-pink-circle.png +0 -0
  605. data/sample/usatti/ruby-pink-polygon-logo.png +0 -0
  606. data/sample/usatti/ruby-pink-polygon.png +0 -0
  607. data/sample/usatti/tanu-kitaro.png +0 -0
  608. data/sample/usatti/usa-taro.png +0 -0
  609. data/sample/usatti/yukidaru-taro.png +0 -0
  610. data/setup.rb +1585 -0
  611. data/test/rabbit-test-utils.rb +24 -0
  612. data/test/run-test.rb +11 -0
  613. data/test/test_applier.rb +42 -0
  614. data/test/test_color.rb +42 -0
  615. data/test/test_element.rb +91 -0
  616. data/test/test_source.rb +47 -0
  617. data/test/test_utils.rb +50 -0
  618. data/update-mo.rb +20 -0
  619. data/update-po.rb +57 -0
  620. metadata +703 -0
@@ -0,0 +1,2 @@
1
+ <a href="./">再読み込み</a>
2
+ <pre><%= rabbit.current_slide_text %></pre>
@@ -0,0 +1,5 @@
1
+ <div class="slide">
2
+ <a href="./">
3
+ <img title="<%= image_title %>" src="<%= image_path(context) %>" />
4
+ </a>
5
+ </div>
@@ -0,0 +1,309 @@
1
+ require "div/div"
2
+ require "div/tofusession"
3
+
4
+ require 'rabbit/utils'
5
+
6
+ module WEBrick
7
+ class Tofulet
8
+ def mobile?
9
+ %r[(DoCoMo|J-PHONE|Vodafone|MOT-|UP\.Browser|DDIPOCKET|ASTEL|PDXGW|Palmscape|Xiino|sharp pda browser|Windows CE|L-mode|WILLCOM)]i =~ @req["user-agent"]
10
+ end
11
+ end
12
+ end
13
+
14
+ module Rabbit
15
+ module Div
16
+ module RabbitDiv
17
+ def initialize(*args)
18
+ super
19
+ @cache = {}
20
+ end
21
+
22
+ def to_div_i(context)
23
+ to_html_i(context)
24
+ rescue
25
+ "<p>error! #{h($!)}</p>"
26
+ end
27
+
28
+ def to_html_i(context)
29
+ to_html(context)
30
+ end
31
+
32
+ private
33
+ def rabbit
34
+ @session.rabbit
35
+ end
36
+
37
+ def form2(attrs, method_name, context_or_param, context_or_empty=nil)
38
+ result = form(method_name, context_or_param, context_or_empty)
39
+ attrs = attrs.collect do |key, value|
40
+ "#{h(key)}=\"#{h(value)}\""
41
+ end.join(" ")
42
+ result.gsub!(/(<form )/, "\\1#{attrs}")
43
+ result
44
+ end
45
+
46
+ def param(method_name, add_param, separator=nil)
47
+ param = make_param(method_name, add_param)
48
+ ary = param.collect do |k, v|
49
+ "#{u(k)}=#{u(v)}"
50
+ end
51
+ ary.join(separator || h("&"))
52
+ end
53
+
54
+ def ajax_param(method_name, add_js_param=[])
55
+ result = ''
56
+ result << param(method_name, {"ajax" => "1"}, "&").dump
57
+ add_js_param.each do |k|
58
+ result << " + "
59
+ result << "&#{u(k)}=".dump
60
+ result << " + $F(#{u(k).dump})"
61
+ end
62
+ result
63
+ end
64
+
65
+ def ajax?(params)
66
+ params.has_key?("ajax")
67
+ end
68
+
69
+ def uri(method_name, add_param, context)
70
+ "#{action(context)}?#{param(method_name, add_param)}"
71
+ end
72
+
73
+ def cache_read_file(key, *name)
74
+ @cache[key] ||= read_file(*name)
75
+ end
76
+
77
+ def read_file(*name)
78
+ path = Utils.find_path_in_load_path(*name)
79
+ if path
80
+ File.read(path)
81
+ else
82
+ nil
83
+ end
84
+ end
85
+
86
+ def to_sjis(str)
87
+ NKF.nkf("-sWdXm0", str.to_s)
88
+ end
89
+ end
90
+
91
+ class MainDiv < ::Div::Div
92
+ include RabbitDiv
93
+
94
+ set_erb(File.join("rabbit", "div", "main.erb"))
95
+ add_erb("to_html_i(context)", File.join("rabbit", "div", "main-i.erb"))
96
+ reload_erb
97
+
98
+ attr_reader :navi
99
+ def initialize(session)
100
+ super
101
+ @slide = SlideDiv.new(session)
102
+ @navi = NaviDiv.new(session)
103
+ @comment = CommentDiv.new(session)
104
+ @js = JSDiv.new(session)
105
+ @css = CSSDiv.new(session)
106
+ end
107
+
108
+ def on_display(context)
109
+ if context.mobile?
110
+ context.res_header("Content-Type", "text/html; charset=Shift_JIS")
111
+ context.res_body(to_sjis(to_html_i(context)))
112
+ else
113
+ context.res_header("Content-Type", "text/html; charset=UTF-8")
114
+ context.res_body(to_html(context))
115
+ end
116
+ end
117
+ end
118
+
119
+ class NaviDiv < ::Div::Div
120
+ include RabbitDiv
121
+
122
+ set_erb(File.join("rabbit", "div", "navi.erb"))
123
+ add_erb("to_html_i(context)", File.join("rabbit", "div", "navi-i.erb"))
124
+ reload_erb
125
+
126
+ def do_first(context, params)
127
+ rabbit.move_to_first
128
+ end
129
+
130
+ def do_previous(context, params)
131
+ rabbit.move_to_previous_if_can
132
+ end
133
+
134
+ def do_next(context, params)
135
+ rabbit.move_to_next_if_can
136
+ end
137
+
138
+ def do_last(context, params)
139
+ rabbit.move_to_last
140
+ end
141
+
142
+ private
143
+ def a_link(context, key, label, label_only)
144
+ HTML.a_link("<a href=\"#{uri(key, {}, context)}\">", label, label_only)
145
+ end
146
+
147
+ def first_link(context)
148
+ a_link(context, "first", h("<<"), rabbit.first_slide?)
149
+ end
150
+
151
+ def previous_link(context)
152
+ a_link(context, "previous", h("<"), !rabbit.have_previous_slide?)
153
+ end
154
+
155
+ def next_link(context)
156
+ a_link(context, "next", h(">"), !rabbit.have_next_slide?)
157
+ end
158
+
159
+ def last_link(context)
160
+ a_link(context, "last", h(">>"), rabbit.last_slide?)
161
+ end
162
+ end
163
+
164
+ class CommentDiv < ::Div::Div
165
+ include RabbitDiv
166
+
167
+ set_erb(File.join("rabbit", "div", "comment.erb"))
168
+ add_erb("to_html_i(context)", File.join("rabbit", "div", "comment-i.erb"))
169
+ add_erb("to_log_html(context=nil)", File.join("rabbit", "div", "log.erb"))
170
+ reload_erb
171
+
172
+ def initialize(session)
173
+ super
174
+ @error_message = nil
175
+ end
176
+
177
+ def do_comment(context, params)
178
+ comment, = params[comment_param_name]
179
+ rabbit.append_comment(comment.to_s) do |error|
180
+ @error_message = error.message
181
+ end
182
+ if ajax?(params)
183
+ context.res_header("Content-Type", "text/html; charset=UTF-8")
184
+ context.res_body(to_log_html(context))
185
+ throw(:tofu_done)
186
+ end
187
+ end
188
+
189
+ private
190
+ def comments
191
+ rabbit.comments
192
+ end
193
+
194
+ def comment_param_name
195
+ "comment"
196
+ end
197
+
198
+ def comment_form_name
199
+ "comment-form"
200
+ end
201
+ end
202
+
203
+ class SlideDiv < ::Div::Div
204
+ include RabbitDiv
205
+
206
+ set_erb(File.join("rabbit", "div", "slide.erb"))
207
+ add_erb("to_html_i(context)", File.join("rabbit", "div", "slide-i.erb"))
208
+ reload_erb
209
+
210
+ def do_current(context, params)
211
+ context.res_header("Content-Type", "image/#{rabbit.image_type}")
212
+ context.res_body(rabbit.current_slide_image)
213
+ throw(:tofu_done)
214
+ end
215
+
216
+ private
217
+ def image_title
218
+ title = h(rabbit.slide_title)
219
+ title << "(#{rabbit.current_slide_number}/"
220
+ title << "#{rabbit.total_slide_number - 1})"
221
+ title
222
+ end
223
+
224
+ def image_path(context, name="current", add_param={})
225
+ uri(name, add_param, context)
226
+ end
227
+ end
228
+
229
+ class JSDiv < ::Div::Div
230
+ include RabbitDiv
231
+
232
+ set_erb(File.join("rabbit", "div", "js.erb"))
233
+
234
+ def do_else(context, params)
235
+ cmd, = params['div_cmd']
236
+ content = cache_read_file(cmd, "rabbit", "div", "#{cmd}.js")
237
+ setup_js_response(context, content)
238
+ end
239
+
240
+ private
241
+ def setup_js_response(context, js)
242
+ context.res_header("Content-Type", "text/javascript; charset=UTF-8")
243
+ context.res_body(js.to_s)
244
+ throw(:tofu_done)
245
+ end
246
+
247
+ def js_path(context, name, add_param={})
248
+ uri(name, add_param, context)
249
+ end
250
+
251
+ def script(context, name)
252
+ src = js_path(context, name)
253
+ %Q!<script type="text/javascript" src="#{src}"></script>!
254
+ end
255
+ end
256
+
257
+ class CSSDiv < ::Div::Div
258
+ include RabbitDiv
259
+
260
+ set_erb(File.join("rabbit", "div", "css.erb"))
261
+
262
+ def do_else(context, params)
263
+ cmd, = params['div_cmd']
264
+ content = cache_read_file(cmd, "rabbit", "div", "#{cmd}.css")
265
+ setup_css_response(context, content)
266
+ end
267
+
268
+ private
269
+ def setup_css_response(context, css)
270
+ context.res_header("Content-Type", "text/css; charset=UTF-8")
271
+ context.res_body(css.to_s)
272
+ throw(:tofu_done)
273
+ end
274
+
275
+ def css_path(context, name, add_param={})
276
+ uri(name, add_param, context)
277
+ end
278
+
279
+ def css_link(context, name)
280
+ path = css_path(context, name)
281
+ %Q!<link rel="stylesheet" type="text/css" href="#{path}" />!
282
+ end
283
+ end
284
+
285
+ class TofuSession < ::Div::TofuSession
286
+ @@rabbit = nil
287
+
288
+ def self.rabbit=(rabbit)
289
+ @@rabbit = rabbit
290
+ end
291
+
292
+ attr_reader :rabbit
293
+ def initialize(bartender, hint=nil)
294
+ super
295
+ @main = MainDiv.new(self)
296
+ @rabbit = @@rabbit
297
+ end
298
+
299
+ def do_GET(context)
300
+ update_div(context)
301
+ @main.on_display(context)
302
+ end
303
+
304
+ def fetch(ref)
305
+ super || (@rabbit.accept_move? ? @main.navi : nil)
306
+ end
307
+ end
308
+ end
309
+ end
@@ -0,0 +1,8 @@
1
+ require 'rabbit/utils'
2
+
3
+ module Rabbit
4
+ module Element
5
+ dir = ::File.join("rabbit", "element")
6
+ Utils.require_files_under_directory_in_load_path(dir)
7
+ end
8
+ end
@@ -0,0 +1,499 @@
1
+ require 'rabbit/utils'
2
+ require 'rabbit/formatter'
3
+
4
+ require 'rabbit/element/base/draw-hook'
5
+
6
+ module Rabbit
7
+ module Element
8
+ module Base
9
+ include Utils
10
+
11
+ include DrawHook
12
+ def_draw_hooks :pre, :post, :around
13
+
14
+ attr_reader :x, :y, :w, :h
15
+ attr_reader :px, :py, :pw, :ph
16
+
17
+ attr_reader :base_x, :base_y, :base_w, :base_h
18
+ attr_reader :horizontal_centering, :vertical_centering
19
+
20
+ attr_reader :user_property
21
+
22
+ attr_accessor :margin_left, :margin_right
23
+ attr_accessor :margin_top, :margin_bottom
24
+
25
+ attr_accessor :padding_left, :padding_right
26
+ attr_accessor :padding_top, :padding_bottom
27
+
28
+ attr_accessor :default_margin_left, :default_margin_right
29
+ attr_accessor :default_margin_top, :default_margin_bottom
30
+
31
+ attr_accessor :default_padding_left, :default_padding_right
32
+ attr_accessor :default_padding_top, :default_padding_bottom
33
+
34
+ attr_accessor :default_visible
35
+
36
+ attr_reader :parent, :real_simulation
37
+
38
+ def initialize
39
+ @x = @y = @w = @h = nil
40
+ @parent = nil
41
+ @user_property = {}
42
+ @default_prop = {}
43
+ init_default_padding
44
+ init_default_margin
45
+ init_default_visible
46
+ clear_theme
47
+ end
48
+
49
+ def parent=(parent)
50
+ @slide = nil
51
+ @parent = parent
52
+ end
53
+
54
+ def visible?
55
+ @visible
56
+ end
57
+
58
+ def slide
59
+ @slide ||= _slide
60
+ end
61
+
62
+ def draw(simulation=false)
63
+ x, y, w, h = setup_padding(@x, @y, @w, @h)
64
+ x, y, w, h = _draw(@canvas, x, y, w, h, simulation)
65
+ x, w = restore_x_padding(x, w)
66
+ x, w = restore_x_margin(x, w)
67
+ x, w = adjust_x_centering(x, w)
68
+ y, h = adjust_y_padding(y, h)
69
+ y, h = adjust_y_margin(y, h)
70
+ [x, y, w, h]
71
+ end
72
+
73
+ def dirty!
74
+ @dirty = true
75
+ end
76
+
77
+ def dirty?
78
+ @dirty
79
+ end
80
+
81
+ def wait(*args, &block)
82
+ slide.register_wait_proc(self, *args, &block) if slide
83
+ end
84
+
85
+ def have_wait_tag?
86
+ false
87
+ end
88
+
89
+ def compile(canvas, x, y, w, h)
90
+ @base_x, @base_y, @base_w, @base_h = x, y, w, h
91
+ @px, @py, @pw, @ph = @x, @y, @w, @h
92
+ x, y, w, h = setup_margin(x, y, w, h)
93
+ @canvas, @x, @y, @w, @h = canvas, x, y, w, h
94
+ if [@px, @py, @pw, @ph] != [@x, @y, @w, @h]
95
+ dirty!
96
+ end
97
+ end
98
+
99
+ def compile_for_horizontal_centering(canvas, x, y, w, h)
100
+ compile(canvas, x, y, w, h)
101
+ end
102
+
103
+ def compile_horizontal(canvas, x, y, w, h)
104
+ if do_horizontal_centering?
105
+ do_horizontal_centering(canvas, x, y, w, h)
106
+ end
107
+ end
108
+
109
+ def prop_set(name, *values)
110
+ @prop[name] = make_prop_value(name, *values)
111
+ dirty!
112
+ end
113
+ alias __prop_set__ prop_set
114
+
115
+ def prop_get(name)
116
+ @prop[name]
117
+ end
118
+ alias __prop_get__ prop_get
119
+
120
+ def prop_delete(name)
121
+ @prop.delete(name)
122
+ dirty!
123
+ end
124
+ alias __prop_delete__ prop_delete
125
+
126
+ def add_default_prop(name, value)
127
+ @default_prop[name] = make_prop_value(name, value)
128
+ end
129
+
130
+ def font(props)
131
+ props.each do |key, value|
132
+ key, value = normalize_font_property(key, value)
133
+ if value
134
+ prop_set(key, value)
135
+ else
136
+ prop_delete(key)
137
+ end
138
+ end
139
+ end
140
+
141
+ def inline_element?
142
+ true
143
+ end
144
+
145
+ def text_renderer?
146
+ false
147
+ end
148
+
149
+ def substitute_text
150
+ false
151
+ end
152
+
153
+ def substitute_newline
154
+ substitute_text do |text|
155
+ text.gsub(/(\\)?\\n/) {$1 ? "\\n" : "\n"}
156
+ end
157
+ end
158
+
159
+ def clear_theme
160
+ @slide = nil
161
+ @visible = @default_visible
162
+ @real_simulation = true
163
+ @width = @height = nil
164
+ @centering_adjusted_width = nil
165
+ @centering_adjusted_height = nil
166
+ @horizontal_centering = @vertical_centering = false
167
+ @prop = default_prop
168
+ clear_margin
169
+ clear_padding
170
+ clear_draw_procs
171
+ dirty!
172
+ end
173
+
174
+ def setup_padding(x, y, w, h)
175
+ x += @padding_left
176
+ y += @padding_top
177
+ w -= @padding_left + @padding_right
178
+ h -= @padding_top + @padding_bottom
179
+ [x, y, w, h]
180
+ end
181
+
182
+ def restore_x_padding(x, w)
183
+ x -= @padding_left
184
+ w += @padding_left + @padding_right
185
+ [x, w]
186
+ end
187
+
188
+ def restore_x_margin(x, w)
189
+ x -= @margin_left
190
+ w += @margin_left + @margin_right
191
+ [x, w]
192
+ end
193
+
194
+ def adjust_x_centering(x, w)
195
+ x -= centering_adjusted_width
196
+ w += centering_adjusted_width
197
+ [x, w]
198
+ end
199
+
200
+ def adjust_y_padding(y, h)
201
+ y -= @padding_top
202
+ h += @padding_top + @padding_bottom
203
+ [y, h]
204
+ end
205
+
206
+ def setup_margin(x, y, w, h)
207
+ x += @margin_left
208
+ y += @margin_top
209
+ w -= @margin_left + @margin_right
210
+ h -= @margin_top + @margin_bottom
211
+ [x, y, w, h]
212
+ end
213
+
214
+ def adjust_y_margin(y, h)
215
+ y += @margin_bottom
216
+ h -= @margin_bottom
217
+ [y, h]
218
+ end
219
+
220
+ def init_default_padding
221
+ @default_padding_left = 0
222
+ @default_padding_right = 0
223
+ @default_padding_top = 0
224
+ @default_padding_bottom = 0
225
+ end
226
+
227
+ def init_default_margin
228
+ @default_margin_left = 0
229
+ @default_margin_right = 0
230
+ @default_margin_top = 0
231
+ @default_margin_bottom = 0
232
+ end
233
+
234
+ def init_default_visible
235
+ @default_visible = !have_wait_tag?
236
+ end
237
+
238
+ def clear_padding
239
+ @padding_left = @default_padding_left
240
+ @padding_right = @default_padding_right
241
+ @padding_top = @default_padding_top
242
+ @padding_bottom = @default_padding_bottom
243
+ end
244
+
245
+ def clear_margin
246
+ @margin_left = @default_margin_left
247
+ @margin_right = @default_margin_right
248
+ @margin_top = @default_margin_top
249
+ @margin_bottom = @default_margin_bottom
250
+ end
251
+
252
+ def if_dirty
253
+ if dirty?
254
+ yield
255
+ @dirty = false
256
+ end
257
+ end
258
+
259
+ def do_horizontal_centering?
260
+ @horizontal_centering or
261
+ (parent and parent.do_horizontal_centering?)
262
+ end
263
+
264
+ def do_vertical_centering?
265
+ @vertical_centering or
266
+ (parent and parent.do_horizontal_centering?)
267
+ end
268
+
269
+ def horizontal_centering=(new_value)
270
+ dirty! if @horizontal_centering != new_value
271
+ @horizontal_centering = new_value
272
+ end
273
+
274
+ def vertical_centering=(new_value)
275
+ dirty! if @vertical_centering != new_value
276
+ @vertical_centering = new_value
277
+ end
278
+
279
+ def do_horizontal_centering(canvas, x, y, w, h)
280
+ end
281
+
282
+ def previous_element
283
+ sibling_element(-1)
284
+ end
285
+
286
+ def next_element
287
+ sibling_element(1)
288
+ end
289
+
290
+ def available_w
291
+ @w - @padding_left - @padding_right
292
+ end
293
+
294
+ def width
295
+ @width + @padding_left + @padding_right
296
+ end
297
+
298
+ def height
299
+ @height + @padding_top + @padding_bottom
300
+ end
301
+
302
+ def centering_adjusted_width
303
+ @centering_adjusted_width || 0
304
+ end
305
+
306
+ def centering_adjusted_height
307
+ @centering_adjusted_height || 0
308
+ end
309
+
310
+ def inspect(verbose=false)
311
+ if verbose
312
+ self_info = super()
313
+ else
314
+ self_info = "<#{self.class.name}>"
315
+ end
316
+ self_info
317
+ end
318
+
319
+ def clone
320
+ obj = super
321
+ obj.user_property = @user_property.clone
322
+ obj.prop = @prop.clone
323
+ obj
324
+ end
325
+
326
+ def default_prop
327
+ @default_prop.dup
328
+ end
329
+
330
+ def match?(pattern)
331
+ pattern === text
332
+ end
333
+
334
+ def margin_set(*values)
335
+ top, right, bottom, left = parse_four_way(*values)
336
+ @margin_top = top if top
337
+ @margin_right = right if right
338
+ @margin_bottom = bottom if bottom
339
+ @margin_left = left if left
340
+ end
341
+
342
+ def margin_with(params)
343
+ margin_set(params)
344
+ end
345
+
346
+ def padding_set(*values)
347
+ top, right, bottom, left = parse_four_way(*values)
348
+ @padding_top = top if top
349
+ @padding_right = right if right
350
+ @padding_bottom = bottom if bottom
351
+ @padding_left = left if left
352
+ end
353
+
354
+ def padding_with(params)
355
+ padding_set(*extract_four_way(params))
356
+ end
357
+
358
+ def show(&block)
359
+ change_visible(true, &block)
360
+ end
361
+
362
+ def hide(&block)
363
+ change_visible(false, &block)
364
+ end
365
+
366
+ def [](name)
367
+ @user_property[name]
368
+ end
369
+
370
+ def []=(name, value)
371
+ @user_property[name] = value
372
+ end
373
+
374
+ protected
375
+ def user_property=(prop)
376
+ @user_property = prop
377
+ end
378
+
379
+ def prop=(prop)
380
+ @prop = prop
381
+ end
382
+
383
+ private
384
+ def _slide
385
+ if @parent
386
+ @parent.slide
387
+ else
388
+ nil
389
+ end
390
+ end
391
+
392
+ def change_visible(value)
393
+ visible = @visible
394
+ @visible = value
395
+ if block_given?
396
+ begin
397
+ yield
398
+ ensure
399
+ @visible = visible
400
+ end
401
+ end
402
+ end
403
+
404
+ def make_prop_value(name, *values)
405
+ formatter_name = to_class_name(name)
406
+ begin
407
+ unless Format.const_defined?(formatter_name)
408
+ raise NameError
409
+ end
410
+ rescue NameError
411
+ raise UnknownPropertyError.new(name)
412
+ end
413
+ Format.const_get(formatter_name).new(*values)
414
+ end
415
+
416
+ def sibling_element(relative_index)
417
+ if @parent
418
+ ind = @parent.elements.index(self)
419
+ if ind
420
+ @parent.elements[ind + relative_index]
421
+ else
422
+ nil
423
+ end
424
+ else
425
+ nil
426
+ end
427
+ end
428
+
429
+ def normalize_font_property(key, value)
430
+ key = key.to_s
431
+ case key
432
+ when /\A(family)\z/
433
+ ["font_#{$1}", value]
434
+ when /\A(desc)(?:ription)?\z/
435
+ ["font_#{$1}", value]
436
+ when /\A(?:foreground|color|fg_color|fg)\z/
437
+ ["foreground", value]
438
+ when /\A(?:background|bg_color|bg)\z/
439
+ ["background", value]
440
+ when /\A(?:underline|ul)\z/
441
+ ["underline", value]
442
+ when /\A(?:underline|ul)_color\z/
443
+ ["underline_color", value]
444
+ when /\A(rise|superscript|subscript)\z/
445
+ value = -value if $1 == "subscript"
446
+ ["rise", value]
447
+ when /\A(?:strike[_]?through)\z/
448
+ value = value ? "true" : "false" unless value.is_a?(String)
449
+ ["strikethrough", value]
450
+ when /\A(?:strike[_]?through_color)\z/
451
+ ["strikethrough_color", value]
452
+ when /\A(?:fallback)\z/
453
+ value = value ? "true" : "false" unless value.is_a?(String)
454
+ ["fallback", value]
455
+ else
456
+ [key, value]
457
+ end
458
+ end
459
+
460
+ def _draw(canvas, x, y, w, h, simulation)
461
+ around_draw_procs = @around_draw_procs.dup
462
+ around_draw_procs.concat(slide.waited_draw_procs(self))
463
+ _draw_rec(canvas, x, y, w, h, simulation, around_draw_procs)
464
+ end
465
+
466
+ def _draw_rec(canvas, x, y, w, h, simulation, around_draw_procs)
467
+ if around_draw_procs.empty?
468
+ (@pre_draw_procs +
469
+ [method(:draw_element)] +
470
+ @post_draw_procs.reverse).each do |pro,|
471
+ @real_simulation = simulation
472
+ _simulation = simulation
473
+ _simulation = true unless visible?
474
+ x, y, w, h = pro.call(canvas, x, y, w, h, _simulation)
475
+ end
476
+ [x, y, w, h]
477
+ else
478
+ @real_simulation = simulation
479
+ _simulation = simulation
480
+ _simulation = true unless visible?
481
+ pro, = around_draw_procs.pop
482
+ next_proc = Proc.new do |*args|
483
+ args << around_draw_procs
484
+ _draw_rec(*args)
485
+ end
486
+ pro.call(canvas, x, y, w, h, _simulation, next_proc)
487
+ end
488
+ end
489
+
490
+ def _indent(str, width=" ")
491
+ result = ""
492
+ str.each_line do |line|
493
+ result << width + line
494
+ end
495
+ result
496
+ end
497
+ end
498
+ end
499
+ end