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,103 @@
1
+ require "tempfile"
2
+
3
+ require 'rabbit/rabbit'
4
+ require 'rabbit/utils'
5
+ begin
6
+ require 'rabbit/parser/rd/rt/rt2rabbit-lib'
7
+ rescue LoadError
8
+ end
9
+ require 'rabbit/parser/rd/ext/base'
10
+ require 'rabbit/parser/rd/ext/image'
11
+ require 'rabbit/parser/rd/ext/enscript'
12
+ require 'rabbit/parser/rd/ext/tex'
13
+ require 'rabbit/parser/rd/ext/anthy'
14
+
15
+ module Rabbit
16
+ module Parser
17
+ class RD
18
+ module Ext
19
+ class BlockVerbatim < Base
20
+ include Image
21
+ include Enscript
22
+ include TeX
23
+ include Anthy
24
+ include GetText
25
+
26
+ def default_ext_block_verbatim(label, source, content, visitor)
27
+ content = visitor.apply_to_String(content.rstrip)
28
+ text = Text.new(content)
29
+ PreformattedBlock.new(PreformattedText.new(text))
30
+ end
31
+
32
+ def ext_block_verb_quote(label, source, content, visitor)
33
+ return nil unless /^_$/i =~ label
34
+ default_ext_block_verbatim("", source, source, visitor)
35
+ end
36
+
37
+ def ext_block_verb_img(label, source, content, visitor)
38
+ return nil unless /^(?:image|img)$/i =~ label
39
+ src, prop = parse_source(source)
40
+ return nil if prop['src'].nil?
41
+ make_image(visitor, prop['src'], prop)
42
+ end
43
+
44
+ def ext_block_verb_enscript(label, source, content, visitor)
45
+ return nil unless /^enscript (\w+)$/i =~ label
46
+ lang = $1.downcase.untaint
47
+ enscript_block(label, lang, source, content, visitor)
48
+ end
49
+
50
+ def ext_block_verb_anthy(label, source, content, visitor)
51
+ return nil unless /^anthy$/i =~ label
52
+ anthy_hiragana_to_kanji(label, source, content, visitor)
53
+ end
54
+
55
+ def ext_block_verb_LaTeX(label, source, content, visitor)
56
+ return nil unless /^LaTeX$/i =~ label
57
+ make_image_by_LaTeX(source, visitor)
58
+ end
59
+
60
+ def ext_block_verb_mimeTeX(label, source, content, visitor)
61
+ return nil unless /^mimeTeX$/i =~ label
62
+ make_image_by_mimeTeX(source, visitor)
63
+ end
64
+
65
+ def ext_block_verb_rt(label, source, content, visitor)
66
+ return nil unless /^rt$/i =~ label
67
+ unless defined?(RT2RabbitVisitor)
68
+ visitor.logger.warn(_("RTtool isn't available"))
69
+ return nil
70
+ end
71
+ rt_visitor = RT2RabbitVisitor.new(visitor)
72
+ rt_visitor.visit(RT::RTParser.parse(content))
73
+ end
74
+
75
+ def ext_block_verb_block_quote(label, source, content, visitor)
76
+ return nil unless /^blockquote$/i =~ label
77
+ src, prop = parse_source(source)
78
+ tree = ::RD::RDTree.new("=begin\n#{src}\n=end\n")
79
+ elems = tree.root.children.collect do |child|
80
+ child.accept(visitor)
81
+ end
82
+ BlockQuote.new(elems, prop)
83
+ end
84
+
85
+ def ext_block_verb_wait(label, source, content, visitor)
86
+ return nil unless /^wait$/i =~ label
87
+
88
+ src, prop = parse_source(source)
89
+ tree = ::RD::RDTree.new("=begin\n#{src}\n=end\n")
90
+
91
+ wait_block = WaitBlock.new
92
+ visitor.register_pause(wait_block)
93
+
94
+ tree.root.children.each do |child|
95
+ wait_block << child.accept(visitor)
96
+ end
97
+ wait_block
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,24 @@
1
+ require 'rabbit/parser/ext/enscript'
2
+
3
+ module Rabbit
4
+ module Parser
5
+ class RD
6
+ module Ext
7
+ module Enscript
8
+ include GetText
9
+
10
+ def enscript_block(label, lang, source, content, visitor)
11
+ src, prop = parse_source(source)
12
+ logger = visitor.logger
13
+
14
+ result = nil
15
+ if Parser::Ext::Enscript.check_availability(lang, logger)
16
+ result = Parser::Ext::Enscript.highlight(lang, src, logger)
17
+ end
18
+ result || default_ext_block_verbatim(label, src, src, visitor)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,38 @@
1
+ require 'rabbit/element'
2
+ require 'rabbit/parser/ext/entity'
3
+
4
+ module Rabbit
5
+ module Parser
6
+ class RD
7
+ module Ext
8
+ module Entity
9
+ include Element
10
+
11
+ class << self
12
+ def included(mod)
13
+ self.instance_methods.each do |meth|
14
+ mod.method_added(meth)
15
+ end
16
+ end
17
+ end
18
+
19
+ TABLE = Parser::Ext::Entity::TABLE
20
+ def ext_inline_verb_entity_reference(label, source, content, visitor)
21
+ label = label.to_s
22
+ return nil unless /^&([^;]+);(.*)$/ =~ label
23
+ return nil unless TABLE.include?($1)
24
+
25
+ key = $1
26
+ rest = $2
27
+ if rest.empty?
28
+ Text.new(TABLE[key])
29
+ else
30
+ rest = visitor.apply_to_Verb(::RD::Verb.new(rest))
31
+ TextContainer.new([Text.new(TABLE[key]), rest])
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,27 @@
1
+ require 'rabbit/element'
2
+ require 'rabbit/parser/ext/image'
3
+
4
+ module Rabbit
5
+ module Parser
6
+ class RD
7
+ module Ext
8
+ module Image
9
+ include Parser::Ext::Image
10
+
11
+ def img(label, content, visitor)
12
+ label = label.to_s
13
+ return nil unless /^img:\s*(.+)$/ =~ label
14
+ make_image(visitor.canvas, $1)
15
+ end
16
+
17
+ def make_image_from_file(source, visitor)
18
+ src, prop = parse_source(source)
19
+ super(visitor.canvas, src) do |src_file_path|
20
+ [yield(src_file_path, prop), prop]
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,89 @@
1
+ require 'rabbit/utils'
2
+ require 'rabbit/parser/ext/inline'
3
+ require 'rabbit/parser/rd/ext/base'
4
+ require 'rabbit/parser/rd/ext/image'
5
+ require 'rabbit/parser/rd/ext/entity'
6
+
7
+ module Rabbit
8
+ module Parser
9
+ class RD
10
+ module Ext
11
+ class InlineVerbatim < Base
12
+ extend Utils
13
+ include Image
14
+ include Entity
15
+
16
+ Inline = Parser::Ext::Inline
17
+
18
+ def default_ext_inline_verbatim(label, source, content, visitor)
19
+ Verbatim.new(Text.new(source))
20
+ end
21
+
22
+ # def ext_inline_verb_img(label, content, visitor)
23
+ # img(label, content, visitor)
24
+ # end
25
+
26
+ def ext_inline_verb_quote(label, source, content, visitor)
27
+ label = label.to_s
28
+ return nil unless /^quote:(.*)$/ =~ label
29
+ default_ext_inline_verb($1, visitor.apply_to_String($1), $1, visitor)
30
+ end
31
+
32
+ def ext_inline_verb_del(label, source, content, visitor)
33
+ label = label.to_s
34
+ return nil unless /^del:(.*)$/ =~ label
35
+ DeletedText.new(Text.new(visitor.apply_to_String($1)))
36
+ end
37
+
38
+ def ext_inline_verb_sub(label, source, content, visitor)
39
+ label = label.to_s
40
+ return nil unless /^sub:(.*)$/ =~ label
41
+ sub_text = $1
42
+ if /\A\s*\z/ =~ sub_text
43
+ sub_text = Text.new(sub_text)
44
+ else
45
+ sub_text = visitor.apply_to_Verb(::RD::Verb.new(sub_text))
46
+ end
47
+ Inline.sub(sub_text)
48
+ end
49
+
50
+ def ext_inline_verb_sup(label, source, content, visitor)
51
+ label = label.to_s
52
+ return nil unless /^sup:(.*)$/ =~ label
53
+ sup_text = $1
54
+ if /\A\s*\z/ =~ sup_text
55
+ sup_text = Text.new(sup_text)
56
+ else
57
+ sup_text = visitor.apply_to_Verb(::RD::Verb.new(sup_text))
58
+ end
59
+ Inline.sup(sup_text)
60
+ end
61
+
62
+ def ext_inline_verb_note(label, source, content, visitor)
63
+ label = label.to_s
64
+ return nil unless /^note:(.*)$/ =~ label
65
+ target = $1
66
+ if /^\w+:/ =~ target
67
+ target = visitor.apply_to_Verb(::RD::Verb.new(target))
68
+ else
69
+ target = Text.new(visitor.apply_to_String(target))
70
+ end
71
+ Inline.note(target)
72
+ end
73
+
74
+ def ext_inline_verb_lang(label, source, content, visitor)
75
+ label = label.to_s
76
+ return nil unless /^lang:([a-z]{2,2}):(.*)$/ =~ label
77
+ Inline.lang($1, Text.new(visitor.apply_to_String($2)))
78
+ end
79
+
80
+ def ext_inline_verb_wait(label, source, content, visitor)
81
+ label = label.to_s
82
+ return nil unless /^wait$/ =~ label
83
+ WaitTag.new
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,34 @@
1
+ require 'rabbit/parser/rd/ext/base'
2
+ require 'rabbit/parser/rd/ext/image'
3
+
4
+ module Rabbit
5
+ module Parser
6
+ class RD
7
+ module Ext
8
+ class Refer < Base
9
+ include Image
10
+
11
+ def default_ext_refer(label, source, content, visitor)
12
+ ref = ReferText.new(content)
13
+ ref.to = label.element_label
14
+ ref
15
+ end
16
+
17
+ # For backward compatibility.
18
+ # def ext_refer_img(label, content, visitor)
19
+ # img(label, content, visitor)
20
+ # end
21
+
22
+ def ext_refer_quote(label, source, content, visitor)
23
+ return nil unless /^quote:(.*)$/ =~ label.element_label
24
+ quoted_name = $1
25
+ quoted_label = ::RD::Reference::RDLabel.new(quoted_name,
26
+ label.filename)
27
+ source = quoted_label.to_s if label.to_s == source
28
+ default_ext_refer(quoted_label, source, content)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,24 @@
1
+ require 'rabbit/parser/ext/tex'
2
+
3
+ module Rabbit
4
+ module Parser
5
+ class RD
6
+ module Ext
7
+ module TeX
8
+ def make_image_by_LaTeX(source, visitor)
9
+ make_image_from_file(source, visitor) do |src_file_path, prop|
10
+ Parser::Ext::TeX.make_image_by_LaTeX(src_file_path, prop, visitor)
11
+ end
12
+ end
13
+
14
+ def make_image_by_mimeTeX(source, visitor)
15
+ make_image_from_file(source, visitor) do |src_file_path, prop|
16
+ Parser::Ext::TeX.make_image_by_mimeTeX(src_file_path, prop,
17
+ visitor)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,424 @@
1
+ require "forwardable"
2
+
3
+ require "rabbit/element"
4
+ require 'rabbit/parser/pause-support'
5
+ require 'rabbit/parser/ext/escape'
6
+ require 'rabbit/parser/rd/visitor'
7
+ require "rabbit/parser/rd/ext/refer"
8
+ require "rabbit/parser/rd/ext/inline-verbatim"
9
+ require "rabbit/parser/rd/ext/block-verbatim"
10
+
11
+ module Rabbit
12
+ module Parser
13
+ class RD
14
+ class RD2RabbitVisitor < Visitor
15
+ extend Forwardable
16
+
17
+ include ::RD::MethodParse
18
+ include Element
19
+ include PauseSupport
20
+
21
+ SYSTEM_NAME = "RD2RabbitLVisitor"
22
+ SYSTEM_VERSION = "0.0.2"
23
+ VERSION = ::RD::Version.new_from_version_string(SYSTEM_NAME,
24
+ SYSTEM_VERSION)
25
+
26
+ # must-have constants
27
+ OUTPUT_SUFFIX = ""
28
+ INCLUDE_SUFFIX = ["rabbit", "rb"]
29
+
30
+ EXTENSIONS = {
31
+ "refer" => Ext::Refer,
32
+ "inline_verbatim" => Ext::InlineVerbatim,
33
+ "block_verbatim" => Ext::BlockVerbatim,
34
+ }
35
+
36
+ def_delegators(:@canvas, :logger, :full_path, :tmp_dir_name)
37
+
38
+ attr_reader :canvas
39
+ def initialize(canvas)
40
+ @canvas = canvas
41
+
42
+ @slides = []
43
+ @slide = nil
44
+ @slide_property_mode = false
45
+ @index = {}
46
+
47
+ init_extensions
48
+ super()
49
+ end
50
+
51
+ def visit(tree)
52
+ prepare_labels(tree, "label-")
53
+ prepare_footnotes(tree)
54
+ super(tree)
55
+ end
56
+
57
+ def apply_to_DocumentElement(element, contents)
58
+ target = nil
59
+ mode = :ignore
60
+ contents.each do |content|
61
+ case content
62
+ when nil
63
+ mode = :ignore
64
+ when Slide
65
+ target = Body.new
66
+ content << target
67
+ @canvas << content
68
+ mode = :display
69
+ when TitleSlide
70
+ target = content
71
+ @canvas << content
72
+ mode = :display
73
+ when SlidePropertySetter
74
+ target = content
75
+ mode = :property
76
+ else
77
+ case mode
78
+ when :display
79
+ target << content
80
+ when :property
81
+ target.apply(content)
82
+ end
83
+ end
84
+ end
85
+ burn_out_pause_targets
86
+ burn_out_foot_texts
87
+ end
88
+
89
+ def apply_to_Headline(element, title)
90
+ anchor = get_anchor(element)
91
+ slide, @slide = @slide, nil
92
+ case element.level
93
+ when 1
94
+ if @slides.empty?
95
+ @slide = TitleSlide.new(Title.new(title))
96
+ else
97
+ @slide = Slide.new(HeadLine.new(title))
98
+ end
99
+ @foot_texts << []
100
+ @slides << @slide
101
+ @slide
102
+ when 2
103
+ SlidePropertySetter.new(slide)
104
+ else
105
+ nil
106
+ end
107
+ end
108
+
109
+ def apply_to_Include(element)
110
+ paths = element.tree.include_paths
111
+ fname = search_file(element.filename, paths, @include_suffix)
112
+ if fname
113
+ File.open(fname) do |f|
114
+ instance_eval(f.read, fname, 0)
115
+ end
116
+ end
117
+ end
118
+
119
+ def apply_to_TextBlock(element, content)
120
+ paragraph = Paragraph.new(content)
121
+ register_pause(paragraph) if paragraph.have_wait_tag?
122
+ paragraph
123
+ end
124
+
125
+ def apply_to_Verbatim(element)
126
+ content = []
127
+ element.each_line do |line|
128
+ content << line
129
+ end
130
+ content_str = content.join("")
131
+ /\A#\s*([^\n]+)(?:\n)?(?m:(.*)?)\z/ =~ content_str
132
+ apply_to_extension("block_verbatim", $1, $2.to_s, content_str)
133
+ end
134
+
135
+ def apply_to_ItemList(element, items)
136
+ apply_to_List(element, items, ItemList)
137
+ end
138
+
139
+ def apply_to_EnumList(element, items)
140
+ i = 1
141
+ apply_to_List(element, items, EnumList) do |list, item|
142
+ item.order = i
143
+ i += 1
144
+ end
145
+ end
146
+
147
+ def apply_to_DescList(element, items)
148
+ apply_to_List(element, items, DescriptionList)
149
+ end
150
+
151
+ def apply_to_MethodList(element, items)
152
+ apply_to_List(element, items, MethodList)
153
+ end
154
+
155
+ def apply_to_List(element, items, klass)
156
+ list = klass.new()
157
+ items.each do |item|
158
+ list << item
159
+ if block_given?
160
+ yield(list, item)
161
+ end
162
+ end
163
+ list
164
+ end
165
+
166
+ def apply_to_ItemListItem(element, content)
167
+ apply_to_ListItem(element, content, ItemListItem.new)
168
+ end
169
+
170
+ def apply_to_EnumListItem(element, content)
171
+ apply_to_ListItem(element, content, EnumListItem.new)
172
+ end
173
+
174
+ def apply_to_DescListItem(element, term, description)
175
+ desc_term = DescriptionTerm.new(Paragraph.new(term))
176
+ desc_content = DescriptionContent.new
177
+ apply_to_ListItem(element, description, desc_content)
178
+ DescriptionListItem.new(desc_term, desc_content)
179
+ end
180
+
181
+ def apply_to_MethodListItem(element, term, description)
182
+ method_term = parse_method(term)
183
+ method_description = MethodDescription.new
184
+ apply_to_ListItem(element, description, method_description)
185
+ MethodListItem.new(method_term, method_description)
186
+ end
187
+
188
+ def apply_to_ListItem(element, contents, item)
189
+ contents.each do |content|
190
+ item << content
191
+ end
192
+ waited_paragraphs = item.elements.find_all do |element|
193
+ element.is_a?(Paragraph) and element.have_wait_tag?
194
+ end
195
+ unless waited_paragraphs.empty?
196
+ waited_paragraphs.each do |paragraph|
197
+ paragraph.default_visible = true
198
+ paragraph.clear_theme
199
+ unregister_pause(paragraph)
200
+ end
201
+
202
+ item.default_visible = false
203
+ item.clear_theme
204
+ register_pause(item)
205
+ end
206
+ item
207
+ end
208
+
209
+ def apply_to_StringElement(element)
210
+ content = element.content.gsub(/\n\s*/, '')
211
+ Text.new(apply_to_String(content))
212
+ end
213
+
214
+ def apply_to_Emphasis(element, content)
215
+ Emphasis.new(content)
216
+ end
217
+
218
+ def apply_to_Code(element, content)
219
+ Code.new(content)
220
+ end
221
+
222
+ def apply_to_Var(element, content)
223
+ Variable.new(content)
224
+ end
225
+
226
+ def apply_to_Keyboard(element, content)
227
+ Keyboard.new(content)
228
+ end
229
+
230
+ def apply_to_Index(element, content)
231
+ Index.new(content)
232
+ end
233
+
234
+ def apply_to_Reference_with_RDLabel(element, content)
235
+ source = content.collect{|elem| elem.text}
236
+ apply_to_extension("refer", element.label, source, content)
237
+ end
238
+
239
+ def apply_to_Reference_with_URL(element, content)
240
+ ref = ReferText.new(content)
241
+ ref.to = element.label.url
242
+ ref
243
+ end
244
+
245
+ def apply_to_Footnote(element, content)
246
+ if @slide.nil?
247
+ Text.new("")
248
+ else
249
+ num = get_footnote_num(element)
250
+ unless num
251
+ raise ArgumentError, "[BUG?] #{element} is not registered."
252
+ end
253
+ add_foot_text(num, content)
254
+ Footnote.new(num)
255
+ end
256
+ end
257
+
258
+ def apply_to_Foottext(element, content)
259
+ num = get_footnote_num(element)
260
+ raise ArgumentError, "[BUG] #{element} isn't registered." unless num
261
+ FootText.new(num, content)
262
+ end
263
+
264
+ def apply_to_Verb(element)
265
+ source = apply_to_String(element.content)
266
+ content = element.content
267
+ apply_to_extension("inline_verbatim", element.to_label,
268
+ source, content)
269
+ end
270
+
271
+ def apply_to_String(str)
272
+ Parser::Ext::Escape.escape_meta_character(str)
273
+ end
274
+
275
+ def create_have_text_element(klass, content)
276
+ raise "Why???" if content.size > 1
277
+ klass.new(content.collect{|x| x.text}.join(""))
278
+ end
279
+
280
+ private
281
+ def prepare_footnotes(tree)
282
+ @footnotes = tree.find_all{|i| i.is_a? ::RD::Footnote}
283
+ @foot_texts = []
284
+ end
285
+
286
+ def get_footnote_num(fn)
287
+ unless fn.is_a?(::RD::Footnote)
288
+ raise ArgumentError, "#{fn} must be Footnote."
289
+ end
290
+ i = @footnotes.index(fn)
291
+ if i
292
+ i + 1
293
+ else
294
+ nil
295
+ end
296
+ end
297
+
298
+ def parse_method(method)
299
+ klass, kind, method, args = ::RD::MethodParse.analize_method(method)
300
+
301
+ term = MethodTerm.new
302
+
303
+ if kind == :function
304
+ klass = kind = nil
305
+ else
306
+ kind = ::RD::MethodParse.kind2str(kind)
307
+ end
308
+
309
+ case method
310
+ when "self"
311
+ klass, kind, method, args = ::RD::MethodParse.analize_method(args)
312
+
313
+ term = make_pre_inited_method_term(klass, kind)
314
+ term << MethodName.new(Text.new("self"))
315
+ add_args_to_method_term(term, args)
316
+ term
317
+ when "[]"
318
+ args.strip!
319
+ args.sub!(/^\((.*)\)$/, '\\1')
320
+ args.split(/,/)
321
+ term = make_pre_inited_method_term(klass, kind)
322
+ term << MethodName.new(Text.new("["))
323
+ args.each do |arg|
324
+ term << Variable.new(Text.new(arg))
325
+ end
326
+ term << MethodName.new(Text.new("] = "))
327
+ term
328
+ when "[]="
329
+ args.tr!(' ', '')
330
+ args.sub!(/^\((.*)\)$/, '\\1')
331
+ ary = args.split(/,/)
332
+
333
+ case ary.length
334
+ when 1
335
+ args = []
336
+ val = 'val'
337
+ when 2
338
+ args, val = *ary
339
+ args = [Variable.new(Text.new(args))]
340
+ when 3
341
+ args = ary[0, 2].inject([]) do |result, x|
342
+ result + [Variable.new(Text.new(x)), Code.new(Text.new(", "))]
343
+ end
344
+ args.pop # removed too much ", "
345
+ val = ary[2]
346
+ end
347
+
348
+ term = make_pre_inited_method_term(klass, kind)
349
+ term << MethodName.new(Text.new("["))
350
+ args.each do |arg|
351
+ term << arg
352
+ end
353
+ term << MethodName.new(Text.new("] = "))
354
+ term << Variable.new(Text.new(val))
355
+ term
356
+ else
357
+ term = make_pre_inited_method_term(klass, kind)
358
+ term << MethodName.new(Text.new(method))
359
+ term.name = method
360
+ add_args_to_method_term(term, args)
361
+ term
362
+ end
363
+ end
364
+
365
+ def make_pre_inited_method_term(klass, kind)
366
+ term = MethodTerm.new
367
+ term << ClassName.new(Text.new(klass)) if klass
368
+ term << MethodKind.new(Text.new(kind)) if kind
369
+ term
370
+ end
371
+
372
+ def add_args_to_method_term(term, args)
373
+ first = true
374
+ prev_index = 0
375
+ args.scan(/(?:&#?)?\w+;?/) do |m|
376
+ code = $PREMATCH[prev_index..-1]
377
+ term << Code.new(Text.new(code)) unless code.empty?
378
+ prev_index = $PREMATCH.size + m.size
379
+ if /(?:&#?)\w+;/ =~ m
380
+ term << Code.new(Text.new(m))
381
+ else
382
+ term << Variable.new(Text.new(m))
383
+ end
384
+ end
385
+ term << Code.new(Text.new($POSTMATCH)) if $POSTMATCH
386
+ term
387
+ end
388
+
389
+ def add_foot_text(num, foot_text)
390
+ unless @footnotes[num - 1]
391
+ raise ArgumentError, "[BUG] footnote ##{num} isn't here."
392
+ end
393
+ @foot_texts.last << [foot_text, num - 1]
394
+ end
395
+
396
+ def burn_out_foot_texts
397
+ @slides.each do |slide|
398
+ ftb = FootTextBlock.new
399
+ current_foot_texts = @foot_texts.shift
400
+ while ft_info = current_foot_texts.shift
401
+ ft, num = ft_info
402
+ ftb << apply_to_Foottext(@footnotes[num], ft)
403
+ end
404
+ slide << ftb
405
+ end
406
+ end
407
+
408
+ class SlidePropertySetter
409
+ def initialize(slide)
410
+ @slide = slide
411
+ end
412
+
413
+ def apply(element)
414
+ return unless element.is_a?(Element::DescriptionList)
415
+ element.each do |item|
416
+ name = Parser.normalize_property_name(item.term.text)
417
+ @slide[name] = item.content.text.strip
418
+ end
419
+ end
420
+ end
421
+ end
422
+ end
423
+ end
424
+ end