rabbit 3.0.5 → 4.0.1

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 (241) hide show
  1. checksums.yaml +4 -4
  2. data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
  3. data/doc/_config.yml +2 -2
  4. data/doc/en/news.rd +63 -0
  5. data/doc/ja/news.rd +63 -0
  6. data/lib/rabbit/actions.rb +446 -0
  7. data/lib/rabbit/author-configuration.rb +7 -10
  8. data/lib/rabbit/canvas.rb +74 -42
  9. data/lib/rabbit/command/rabbit-slide.rb +11 -13
  10. data/lib/rabbit/command/rabbit-theme.rb +10 -12
  11. data/lib/rabbit/command/rabbit.rb +31 -43
  12. data/lib/rabbit/console.rb +20 -22
  13. data/lib/rabbit/dependency-canvas.rb +2 -2
  14. data/lib/rabbit/element/base.rb +93 -6
  15. data/lib/rabbit/element/block-element.rb +17 -1
  16. data/lib/rabbit/element/block.rb +17 -1
  17. data/lib/rabbit/element/container-element.rb +59 -3
  18. data/lib/rabbit/element/description-list.rb +18 -2
  19. data/lib/rabbit/element/enum-list.rb +18 -2
  20. data/lib/rabbit/element/footnote.rb +18 -2
  21. data/lib/rabbit/element/image-title-slide.rb +17 -1
  22. data/lib/rabbit/element/image.rb +32 -2
  23. data/lib/rabbit/element/index-slide.rb +29 -13
  24. data/lib/rabbit/element/item-list.rb +18 -2
  25. data/lib/rabbit/element/method-list.rb +18 -2
  26. data/lib/rabbit/element/poppler-page.rb +17 -1
  27. data/lib/rabbit/element/poppler-slide.rb +18 -2
  28. data/lib/rabbit/element/poppler-title-slide.rb +18 -2
  29. data/lib/rabbit/element/preformatted.rb +18 -2
  30. data/lib/rabbit/element/slide-element.rb +29 -2
  31. data/lib/rabbit/element/slide.rb +18 -2
  32. data/lib/rabbit/element/syntax-highlighting.rb +17 -1
  33. data/lib/rabbit/element/table.rb +19 -3
  34. data/lib/rabbit/element/tag.rb +18 -2
  35. data/lib/rabbit/element/text-block-element.rb +18 -2
  36. data/lib/rabbit/element/text-container-element.rb +41 -2
  37. data/lib/rabbit/element/text-element.rb +17 -1
  38. data/lib/rabbit/element/text-renderer.rb +17 -1
  39. data/lib/rabbit/element/text.rb +4 -4
  40. data/lib/rabbit/element/title-slide.rb +19 -3
  41. data/lib/rabbit/element/video.rb +157 -56
  42. data/lib/rabbit/element.rb +20 -20
  43. data/lib/rabbit/formatter.rb +18 -1
  44. data/lib/rabbit/frame.rb +101 -93
  45. data/lib/rabbit/front.rb +11 -4
  46. data/lib/rabbit/gem-finder.rb +4 -8
  47. data/lib/rabbit/gem-pusher.rb +4 -4
  48. data/lib/rabbit/gesture/handler.rb +26 -21
  49. data/lib/rabbit/graffiti/config-dialog.rb +18 -2
  50. data/lib/rabbit/graffiti/processor.rb +20 -4
  51. data/lib/rabbit/gtk.rb +48 -14
  52. data/lib/rabbit/html/generator.rb +18 -18
  53. data/{test/helper/fixture.rb → lib/rabbit/icon.rb} +16 -6
  54. data/lib/rabbit/image/base.rb +7 -6
  55. data/lib/rabbit/image/default.rb +17 -1
  56. data/lib/rabbit/image/dia.rb +2 -2
  57. data/lib/rabbit/image/eps.rb +16 -2
  58. data/lib/rabbit/image/gimp.rb +28 -11
  59. data/lib/rabbit/image/mermaid.rb +3 -3
  60. data/lib/rabbit/image/pdf.rb +3 -3
  61. data/lib/rabbit/image/svg.rb +2 -2
  62. data/lib/rabbit/image.rb +8 -8
  63. data/lib/rabbit/info-window.rb +55 -18
  64. data/lib/rabbit/key-handler.rb +381 -0
  65. data/lib/rabbit/keys.rb +31 -2
  66. data/lib/rabbit/logger/base.rb +17 -1
  67. data/lib/rabbit/logger/gui.rb +20 -4
  68. data/lib/rabbit/logger/stderr.rb +16 -2
  69. data/lib/rabbit/logger.rb +4 -4
  70. data/lib/rabbit/menu.rb +200 -220
  71. data/lib/rabbit/parser/base.rb +17 -1
  72. data/lib/rabbit/parser/ext/aafigure.rb +17 -1
  73. data/lib/rabbit/parser/ext/blockdiag.rb +17 -1
  74. data/lib/rabbit/parser/ext/charty.rb +2 -2
  75. data/lib/rabbit/parser/ext/coderay.rb +20 -4
  76. data/lib/rabbit/parser/ext/enscript.rb +31 -15
  77. data/lib/rabbit/parser/ext/entity.rb +17 -1
  78. data/lib/rabbit/parser/ext/image.rb +6 -6
  79. data/lib/rabbit/parser/ext/inline.rb +17 -1
  80. data/lib/rabbit/parser/ext/rouge.rb +7 -4
  81. data/lib/rabbit/parser/ext/tex.rb +18 -2
  82. data/lib/rabbit/parser/ext/video.rb +4 -4
  83. data/lib/rabbit/parser/image.rb +20 -4
  84. data/lib/rabbit/parser/markdown/converter.rb +12 -13
  85. data/lib/rabbit/parser/markdown.rb +18 -2
  86. data/lib/rabbit/parser/pause-support.rb +1 -0
  87. data/lib/rabbit/parser/pdf.rb +3 -3
  88. data/lib/rabbit/parser/rd/ext/base.rb +20 -4
  89. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +24 -28
  90. data/lib/rabbit/parser/rd/ext/character-reference.rb +18 -2
  91. data/lib/rabbit/parser/rd/ext/image.rb +3 -3
  92. data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +6 -6
  93. data/lib/rabbit/parser/rd/ext/refer.rb +18 -2
  94. data/lib/rabbit/parser/rd/ext/video.rb +19 -2
  95. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +24 -8
  96. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +18 -2
  97. data/lib/rabbit/parser/rd/visitor.rb +18 -2
  98. data/lib/rabbit/parser/rd.rb +18 -2
  99. data/lib/rabbit/parser/wiki/output.rb +25 -28
  100. data/lib/rabbit/parser/wiki.rb +18 -2
  101. data/lib/rabbit/parser.rb +6 -6
  102. data/lib/rabbit/path-manipulatable.rb +4 -4
  103. data/lib/rabbit/progress.rb +17 -1
  104. data/lib/rabbit/properties.rb +3 -3
  105. data/lib/rabbit/rabbit.rb +15 -7
  106. data/lib/rabbit/readme-parser.rb +4 -6
  107. data/lib/rabbit/renderer/base.rb +44 -36
  108. data/lib/rabbit/renderer/color.rb +18 -2
  109. data/lib/rabbit/renderer/display/base.rb +10 -12
  110. data/lib/rabbit/renderer/display/button-handler.rb +141 -60
  111. data/lib/rabbit/renderer/display/cursor.rb +4 -5
  112. data/lib/rabbit/renderer/display/drawing-area-base.rb +32 -48
  113. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +10 -61
  114. data/lib/rabbit/renderer/display/drawing-area-view-only.rb +19 -8
  115. data/lib/rabbit/renderer/display/drawing-area.rb +19 -15
  116. data/lib/rabbit/renderer/display/gesture.rb +9 -9
  117. data/lib/rabbit/renderer/display/graffiti.rb +22 -13
  118. data/lib/rabbit/renderer/display/info.rb +22 -2
  119. data/lib/rabbit/renderer/display/magnifier.rb +30 -17
  120. data/lib/rabbit/renderer/display/mask.rb +17 -1
  121. data/lib/rabbit/renderer/display/menu.rb +27 -3
  122. data/lib/rabbit/renderer/display/motion-handler.rb +45 -0
  123. data/lib/rabbit/renderer/display/progress.rb +17 -2
  124. data/lib/rabbit/renderer/display/scroll-handler.rb +60 -13
  125. data/lib/rabbit/renderer/display/search.rb +19 -2
  126. data/lib/rabbit/renderer/display/spotlight.rb +39 -25
  127. data/lib/rabbit/renderer/display.rb +16 -36
  128. data/lib/rabbit/renderer/engine/cairo.rb +4 -11
  129. data/lib/rabbit/renderer/engine.rb +17 -1
  130. data/lib/rabbit/renderer/kernel.rb +2 -20
  131. data/lib/rabbit/renderer/offscreen.rb +8 -14
  132. data/lib/rabbit/renderer/print-layout.rb +2 -2
  133. data/lib/rabbit/renderer/printer.rb +9 -16
  134. data/lib/rabbit/renderer/scene-background-widget.rb +95 -0
  135. data/lib/rabbit/renderer/scene-node-widget.rb +63 -0
  136. data/lib/rabbit/renderer/scene.rb +508 -0
  137. data/lib/rabbit/renderer.rb +6 -6
  138. data/lib/rabbit/search-window.rb +18 -2
  139. data/lib/rabbit/searcher.rb +15 -1
  140. data/lib/rabbit/size.rb +9 -1
  141. data/lib/rabbit/slide-configuration.rb +11 -14
  142. data/lib/rabbit/soap/driver.rb +20 -4
  143. data/lib/rabbit/soap/server.rb +17 -1
  144. data/lib/rabbit/source/argf.rb +5 -5
  145. data/lib/rabbit/source/base.rb +5 -6
  146. data/lib/rabbit/source/file.rb +5 -5
  147. data/lib/rabbit/source/memory.rb +20 -4
  148. data/lib/rabbit/source/uri.rb +9 -11
  149. data/lib/rabbit/source-generator/hiki.rb +2 -7
  150. data/lib/rabbit/source-generator/markdown.rb +2 -7
  151. data/lib/rabbit/source-generator/rd.rb +2 -7
  152. data/lib/rabbit/source-generator.rb +4 -4
  153. data/lib/rabbit/source.rb +5 -5
  154. data/lib/rabbit/task/slide.rb +13 -11
  155. data/lib/rabbit/task/theme.rb +8 -11
  156. data/lib/rabbit/task.rb +3 -3
  157. data/lib/rabbit/theme/applier.rb +27 -11
  158. data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
  159. data/lib/rabbit/theme/color-circle/color-circle.rb +18 -1
  160. data/lib/rabbit/theme/cozmixng/cozmixng.rb +1 -1
  161. data/lib/rabbit/theme/default/default.rb +1 -0
  162. data/lib/rabbit/theme/default-icon/default-icon.rb +1 -1
  163. data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +17 -1
  164. data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +9 -1
  165. data/lib/rabbit/theme/enishi-green/enishi-green.rb +1 -1
  166. data/lib/rabbit/theme/entry.rb +10 -12
  167. data/lib/rabbit/theme/icon/icon.rb +3 -8
  168. data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +5 -5
  169. data/lib/rabbit/theme/image-timer/image-timer.rb +3 -3
  170. data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +1 -0
  171. data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +1 -0
  172. data/lib/rabbit/theme/manager.rb +19 -9
  173. data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +1 -1
  174. data/lib/rabbit/theme/ranguba/ranguba.rb +1 -1
  175. data/lib/rabbit/theme/red-frame/red-frame.rb +6 -2
  176. data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +1 -0
  177. data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +1 -1
  178. data/lib/rabbit/theme/searcher.rb +23 -7
  179. data/lib/rabbit/theme/slide-number/slide-number.rb +1 -1
  180. data/lib/rabbit/theme/slide-show/slide-show.rb +1 -1
  181. data/lib/rabbit/theme/table/table.rb +2 -2
  182. data/lib/rabbit/theme/video/property.rb +3 -0
  183. data/lib/rabbit/theme/video/video.rb +5 -0
  184. data/lib/rabbit/theme-configuration.rb +9 -11
  185. data/lib/rabbit/utils.rb +12 -94
  186. data/lib/rabbit/version.rb +1 -1
  187. data/lib/rabbit/xmlrpc/client.rb +17 -1
  188. data/lib/rabbit/xmlrpc/server.rb +17 -1
  189. data/po/en/rabbit.edit.po +324 -316
  190. data/po/en/rabbit.po +61 -55
  191. data/po/fr/rabbit.edit.po +324 -316
  192. data/po/fr/rabbit.po +61 -55
  193. data/po/ja/rabbit.edit.po +345 -370
  194. data/po/ja/rabbit.po +83 -80
  195. data/rabbit.gemspec +4 -2
  196. data/sample/block-quote.rab +13 -0
  197. data/sample/description-list.rab +17 -0
  198. data/sample/mermaid.rab +16 -0
  199. data/sample/rabbit-en.hiki +0 -1
  200. data/sample/rabbit-en.md +0 -1
  201. data/sample/rabbit-en.rd +0 -1
  202. data/sample/rabbit.hiki +0 -1
  203. data/sample/rabbit.md +0 -1
  204. data/sample/rabbit.rd +0 -1
  205. data/sample/video.rab +17 -0
  206. metadata +33 -65
  207. data/lib/rabbit/action/basic.rb +0 -304
  208. data/lib/rabbit/action/radio.rb +0 -78
  209. data/lib/rabbit/action/toggle.rb +0 -82
  210. data/lib/rabbit/action.rb +0 -140
  211. data/lib/rabbit/renderer/display/gl.rb +0 -98
  212. data/lib/rabbit/renderer/display/key-handler.rb +0 -321
  213. data/lib/rabbit/renderer/gl.rb +0 -95
  214. data/lib/rabbit/renderer/screen.rb +0 -286
  215. data/lib/rabbit/renderer/widget/drawing-area.rb +0 -93
  216. data/lib/rabbit/stock.rb +0 -31
  217. data/lib/rabbit/trackball.rb +0 -228
  218. data/lib/rabbit/video-window.rb +0 -123
  219. data/test/command/test-rabbit.rb +0 -101
  220. data/test/helper/parser.rb +0 -48
  221. data/test/helper.rb +0 -24
  222. data/test/image/test-dia.rb +0 -54
  223. data/test/image/test-eps.rb +0 -41
  224. data/test/parser/test-markdown.rb +0 -360
  225. data/test/parser/test-rd.rb +0 -43
  226. data/test/parser/test-wiki.rb +0 -71
  227. data/test/run-test.rb +0 -27
  228. data/test/source-generator/test-hiki.rb +0 -68
  229. data/test/source-generator/test-markdown.rb +0 -67
  230. data/test/source-generator/test-rd.rb +0 -69
  231. data/test/test-applier.rb +0 -73
  232. data/test/test-author-configuration.rb +0 -37
  233. data/test/test-canvas.rb +0 -70
  234. data/test/test-color.rb +0 -51
  235. data/test/test-element.rb +0 -103
  236. data/test/test-readme-parser.rb +0 -160
  237. data/test/test-size.rb +0 -155
  238. data/test/test-slide-configuration.rb +0 -74
  239. data/test/test-source.rb +0 -122
  240. data/test/test-theme-configuration.rb +0 -47
  241. data/test/test-utils.rb +0 -64
@@ -1,5 +1,21 @@
1
- require 'rabbit/utils'
2
- require 'rabbit/parser/ext/escape'
1
+ # Copyright (C) 2007-2025 Sutou Kouhei <kou@cozmixng.org>
2
+ #
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 2 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
+
17
+ require_relative "../../utils"
18
+ require_relative "escape"
3
19
 
4
20
  module Rabbit
5
21
  module Parser
@@ -23,20 +39,20 @@ module Rabbit
23
39
  end
24
40
 
25
41
  module_function
26
- def check_availability(lang, logger)
42
+ def check_availability(lang)
27
43
  if @@enscript_highlight.has_key?(lang)
28
44
  true
29
45
  else
30
- logger.warn(_("enscript: unsupported language: %s") % lang)
46
+ Rabbit.logger.warn(_("enscript: unsupported language: %s") % lang)
31
47
  false
32
48
  end
33
49
  end
34
50
 
35
- def highlight(lang, text, logger)
51
+ def highlight(lang, text)
36
52
  begin
37
53
  require 'nokogiri'
38
54
  rescue
39
- logger.warning("Syntax highlight by enscript requires nokogiri.")
55
+ Rabbit.logger.warning("Syntax highlight by enscript requires nokogiri.")
40
56
  return nil
41
57
  end
42
58
 
@@ -53,19 +69,19 @@ module Rabbit
53
69
  ]
54
70
  if SystemRunner.run("enscript", *args)
55
71
  html_file.open
56
- html_to_rabbit(html_file.read, logger)
72
+ html_to_rabbit(html_file.read)
57
73
  else
58
74
  nil
59
75
  end
60
76
  end
61
77
 
62
- def html_to_rabbit(html, logger)
78
+ def html_to_rabbit(html)
63
79
  node = Nokogiri::HTML(extract_newline_around_pre(html))
64
80
  pre = find_element(node, "pre")
65
81
  address = find_element(node, "address")
66
- element = node_to_rabbit(pre, logger)
82
+ element = node_to_rabbit(pre)
67
83
  if element
68
- logger.info(address.text) if address
84
+ Rabbit.logger.info(address.text) if address
69
85
  PreformattedBlock.new(element)
70
86
  else
71
87
  nil
@@ -81,21 +97,21 @@ module Rabbit
81
97
  node.css(name)[0]
82
98
  end
83
99
 
84
- def node_to_rabbit(node, logger)
85
- element = element_to_rabbit(node, logger)
100
+ def node_to_rabbit(node)
101
+ element = element_to_rabbit(node)
86
102
  return nil if element.nil?
87
103
  node.children.each do |child|
88
104
  if child.text?
89
105
  element << Text.new(Escape.escape_meta_character(child.text))
90
106
  else
91
- child_element = node_to_rabbit(child, logger)
107
+ child_element = node_to_rabbit(child)
92
108
  element << child_element unless child_element.nil?
93
109
  end
94
110
  end
95
111
  element
96
112
  end
97
113
 
98
- def element_to_rabbit(element, logger)
114
+ def element_to_rabbit(element)
99
115
  case element.name
100
116
  when "pre"
101
117
  PreformattedText.new
@@ -110,7 +126,7 @@ module Rabbit
110
126
  text
111
127
  else
112
128
  format = _("enscript: unsupported element name: %s")
113
- logger.warn(format % element.name)
129
+ Rabbit.logger.warn(format % element.name)
114
130
  nil
115
131
  end
116
132
  end
@@ -1,4 +1,20 @@
1
- require 'rabbit/element'
1
+ # Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
2
+ #
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 2 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
+
17
+ require_relative "../../element"
2
18
 
3
19
  module Rabbit
4
20
  module Parser
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2007-2022 Sutou Kouhei <kou@cozmixng.org>
1
+ # Copyright (C) 2007-2025 Sutou Kouhei <kou@cozmixng.org>
2
2
  #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -19,8 +19,8 @@ require "cgi"
19
19
  require "open-uri"
20
20
  require "fileutils"
21
21
 
22
- require "rabbit/element"
23
- require "rabbit/filename"
22
+ require_relative "../../element"
23
+ require_relative "../../filename"
24
24
 
25
25
  module Rabbit
26
26
  module Parser
@@ -32,7 +32,7 @@ module Rabbit
32
32
  begin
33
33
  image = Element::Image.new(path, prop, canvas: canvas)
34
34
  rescue Error
35
- canvas.logger.warn($!.message)
35
+ Rabbit.logger.warn($!.message)
36
36
  nil
37
37
  else
38
38
  if prop["align"] == "right" and body
@@ -65,7 +65,7 @@ module Rabbit
65
65
  begin
66
66
  image_file, prop = yield(src_file)
67
67
  rescue ImageLoadError
68
- canvas.logger.warn($!.message)
68
+ Rabbit.logger.warn($!.message)
69
69
  end
70
70
  return nil if image_file.nil?
71
71
  image = make_image(canvas,
@@ -143,7 +143,7 @@ module Rabbit
143
143
  end
144
144
  end
145
145
  rescue SocketError, OpenURI::HTTPError
146
- canvas.logger.warn("#{$!.message}: #{uri}")
146
+ Rabbit.logger.warn("#{$!.message}: #{uri}")
147
147
  end
148
148
  end
149
149
 
@@ -1,4 +1,20 @@
1
- require 'rabbit/element'
1
+ # Copyright (C) 2007-2025 Sutou Kouhei <kou@cozmixng.org>
2
+ #
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 2 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
+
17
+ require_relative "../../element"
2
18
 
3
19
  module Rabbit
4
20
  module Parser
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2017 Kouhei Sutou <kou@cozmixng.org>
1
+ # Copyright (C) 2017-2025 Sutou Kouhei <kou@cozmixng.org>
2
2
  #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -16,8 +16,8 @@
16
16
 
17
17
  require "rouge"
18
18
 
19
- require "rabbit/utils"
20
- require "rabbit/parser/ext/escape"
19
+ require_relative "../../utils"
20
+ require_relative "escape"
21
21
 
22
22
  module Rabbit
23
23
  module Parser
@@ -26,10 +26,13 @@ module Rabbit
26
26
  include GetText
27
27
 
28
28
  module_function
29
- def highlight(lang, text, logger)
29
+ def highlight(lang, text, prop)
30
30
  lexer = ::Rouge::Lexer.find(lang).new
31
31
  formatter = RabbitFormatter.new
32
32
  block = Element::SyntaxHighlightingBlock.new
33
+ prop.each do |key, value|
34
+ block.user_property[key] = value
35
+ end
33
36
  text_container = Element::TextContainer.new
34
37
  formatter.format(lexer.lex(text.strip)) do |element|
35
38
  text_container << element
@@ -1,3 +1,19 @@
1
+ # Copyright (C) 2007-2025 Sutou Kouhei <kou@cozmixng.org>
2
+ #
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 2 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
+
1
17
  module Rabbit
2
18
  module Parser
3
19
  module Ext
@@ -5,7 +21,7 @@ module Rabbit
5
21
  include GetText
6
22
 
7
23
  module_function
8
- def make_image_by_LaTeX(path, prop, logger)
24
+ def make_image_by_LaTeX(path, prop)
9
25
  image_file = Tempfile.new("rabbit-image")
10
26
  latex_file = Tempfile.new("rabbit-image-latex")
11
27
  dir = File.dirname(latex_file.path)
@@ -43,7 +59,7 @@ module Rabbit
43
59
  end
44
60
  end
45
61
 
46
- def make_image_by_mimeTeX(path, prop, logger)
62
+ def make_image_by_mimeTeX(path, prop)
47
63
  image_file = Tempfile.new("rabbit-image-mimetex")
48
64
  args = ["-e", image_file.path, "-f", path]
49
65
  commands = ["mimetex", "mimetex.cgi"]
@@ -1,5 +1,5 @@
1
1
  # Copyright (C) 2012 Narihiro Nakamura <authornari@gmail.com>
2
- # Copyright (C) 2018 Kouhei Sutou <kou@cozmixng.org>
2
+ # Copyright (C) 2018-2025 Sutou Kouhei <kou@cozmixng.org>
3
3
  #
4
4
  # This program is free software; you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -15,8 +15,8 @@
15
15
  # with this program; if not, write to the Free Software Foundation, Inc.,
16
16
  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
17
 
18
- require "rabbit/element"
19
- require "rabbit/parser/ext/image"
18
+ require_relative "../../element"
19
+ require_relative "image"
20
20
 
21
21
  module Rabbit
22
22
  module Parser
@@ -27,7 +27,7 @@ module Rabbit
27
27
  begin
28
28
  Element::Video.new(path, prop)
29
29
  rescue Error
30
- canvas.logger.warn($!.message)
30
+ Rabbit.logger.warn($!.message)
31
31
  nil
32
32
  end
33
33
  end
@@ -1,8 +1,24 @@
1
- require "rabbit/utils"
1
+ # Copyright (C) 2007-2025 Sutou Kouhei <kou@cozmixng.org>
2
+ #
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 2 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2
16
 
3
- require "rabbit/image"
4
- require "rabbit/element"
5
- require "rabbit/parser/base"
17
+ require_relative "../utils"
18
+
19
+ require_relative "../image"
20
+ require_relative "../element"
21
+ require_relative "base"
6
22
 
7
23
  module Rabbit
8
24
  module Parser
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012-2024 Sutou Kouhei <kou@cozmixng.org>
1
+ # Copyright (C) 2012-2025 Sutou Kouhei <kou@cozmixng.org>
2
2
  #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -16,14 +16,14 @@
16
16
 
17
17
  require "English"
18
18
 
19
- require "rabbit/gettext"
20
- require "rabbit/parser/pause-support"
21
- require "rabbit/parser/ext/blockdiag"
22
- require "rabbit/parser/ext/escape"
23
- require "rabbit/parser/ext/image"
24
- require "rabbit/parser/ext/inline"
25
- require "rabbit/parser/ext/rouge"
26
- require "rabbit/parser/ext/tex"
19
+ require_relative "../../gettext"
20
+ require_relative "../pause-support"
21
+ require_relative "../ext/blockdiag"
22
+ require_relative "../ext/escape"
23
+ require_relative "../ext/image"
24
+ require_relative "../ext/inline"
25
+ require_relative "../ext/rouge"
26
+ require_relative "../ext/tex"
27
27
 
28
28
  module Rabbit
29
29
  module Parser
@@ -332,7 +332,7 @@ module Rabbit
332
332
  case language
333
333
  when "blockdiag"
334
334
  make_image_from_file(element, content) do |src_file, prop|
335
- Ext::BlockDiag.make_image(src_file.path, prop, @canvas)
335
+ Ext::BlockDiag.make_image(src_file.path, prop)
336
336
  end
337
337
  when "mermaid"
338
338
  make_image_from_file(element,
@@ -341,8 +341,7 @@ module Rabbit
341
341
  src_file
342
342
  end
343
343
  else
344
- logger = @canvas.logger
345
- Ext::Rouge.highlight(language, content, logger)
344
+ Ext::Rouge.highlight(language, content, element.attr)
346
345
  end
347
346
  end
348
347
 
@@ -385,7 +384,7 @@ module Rabbit
385
384
 
386
385
  def convert_math(element)
387
386
  make_image_from_file(element, element.value) do |src_file, prop|
388
- Ext::TeX.make_image_by_LaTeX(src_file.path, prop, @canvas)
387
+ Ext::TeX.make_image_by_LaTeX(src_file.path, prop)
389
388
  end
390
389
  end
391
390
 
@@ -1,7 +1,23 @@
1
+ # Copyright (C) 2012-2025 Sutou Kouhei <kou@cozmixng.org>
2
+ #
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 2 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
+
1
17
  require "kramdown"
2
18
  require "kramdown-parser-gfm"
3
19
 
4
- require "rabbit/parser/base"
20
+ require_relative "base"
5
21
 
6
22
  module Kramdown
7
23
  module Parser
@@ -102,7 +118,7 @@ module Rabbit
102
118
  end
103
119
  end
104
120
 
105
- require "rabbit/parser/markdown/converter"
121
+ require_relative "markdown/converter"
106
122
 
107
123
  module Rabbit
108
124
  module Parser
@@ -18,6 +18,7 @@ module Rabbit
18
18
  def burn_out_pause_targets
19
19
  @slides.each do |slide|
20
20
  (pause_targets[slide] || []).each do |target|
21
+ slide.register_default_wait_target(target)
21
22
  slide.register_default_wait_proc(target.parent) do |*args|
22
23
  target.show do
23
24
  next_proc = args.pop
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2007-2018 Kouhei Sutou <kou@cozmixng.org>
1
+ # Copyright (C) 2007-2025 Sutou Kouhei <kou@cozmixng.org>
2
2
  #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -18,8 +18,8 @@ require "tempfile"
18
18
 
19
19
  require "poppler"
20
20
 
21
- require "rabbit/element"
22
- require "rabbit/parser/base"
21
+ require_relative "../element"
22
+ require_relative "base"
23
23
 
24
24
  module Rabbit
25
25
  module Parser
@@ -1,7 +1,23 @@
1
- require 'English'
2
- require 'erb'
1
+ # Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
2
+ #
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 2 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3
16
 
4
- require 'rabbit/element'
17
+ require "English"
18
+ require "erb"
19
+
20
+ require_relative "../../../element"
5
21
 
6
22
  module Rabbit
7
23
  module Parser
@@ -39,7 +55,7 @@ module Rabbit
39
55
  begin
40
56
  result = __send__(entry, label, source, content, visitor)
41
57
  rescue NameError
42
- visitor.logger.error($!)
58
+ Rabbit.logger.error($!)
43
59
  raise
44
60
  end
45
61
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2004-2022 Sutou Kouhei <kou@cozmixng.org>
1
+ # Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
2
2
  #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -16,19 +16,19 @@
16
16
 
17
17
  require "tempfile"
18
18
 
19
- require "rabbit/rabbit"
20
- require "rabbit/utils"
21
- require "rabbit/parser/rd/rt/rt2rabbit-lib"
22
- require "rabbit/parser/rd/ext/base"
23
- require "rabbit/parser/rd/ext/image"
24
- require "rabbit/parser/rd/ext/video"
25
- require "rabbit/parser/ext/aafigure"
26
- require "rabbit/parser/ext/blockdiag"
27
- require "rabbit/parser/ext/charty"
28
- require "rabbit/parser/ext/coderay"
29
- require "rabbit/parser/ext/enscript"
30
- require "rabbit/parser/ext/rouge"
31
- require "rabbit/parser/ext/tex"
19
+ require_relative "../../../rabbit"
20
+ require_relative "../../../utils"
21
+ require_relative "../../ext/aafigure"
22
+ require_relative "../../ext/blockdiag"
23
+ require_relative "../../ext/charty"
24
+ require_relative "../../ext/coderay"
25
+ require_relative "../../ext/enscript"
26
+ require_relative "../../ext/rouge"
27
+ require_relative "../../ext/tex"
28
+ require_relative "../rt/rt2rabbit-lib"
29
+ require_relative "base"
30
+ require_relative "image"
31
+ require_relative "video"
32
32
 
33
33
  module Rabbit
34
34
  module Parser
@@ -70,11 +70,10 @@ module Rabbit
70
70
  lang = $1.downcase
71
71
 
72
72
  src, prop = parse_source(source)
73
- logger = visitor.logger
74
73
 
75
74
  result = nil
76
- if Parser::Ext::Enscript.check_availability(lang, logger)
77
- result = Parser::Ext::Enscript.highlight(lang, src, logger)
75
+ if Parser::Ext::Enscript.check_availability(lang)
76
+ result = Parser::Ext::Enscript.highlight(lang, src)
78
77
  end
79
78
  result || default_ext_block_verbatim(label, src, src, visitor)
80
79
  end
@@ -82,29 +81,28 @@ module Rabbit
82
81
  def ext_block_verb_LaTeX(label, source, content, visitor)
83
82
  return nil unless /\ALaTeX\z/i =~ label
84
83
  make_image_from_file(source, visitor) do |src_file, prop|
85
- Parser::Ext::TeX.make_image_by_LaTeX(src_file.path, prop, visitor)
84
+ Parser::Ext::TeX.make_image_by_LaTeX(src_file.path, prop)
86
85
  end
87
86
  end
88
87
 
89
88
  def ext_block_verb_mimeTeX(label, source, content, visitor)
90
89
  return nil unless /\AmimeTeX\z/i =~ label
91
90
  make_image_from_file(source, visitor) do |src_file, prop|
92
- Parser::Ext::TeX.make_image_by_mimeTeX(src_file.path, prop,
93
- visitor)
91
+ Parser::Ext::TeX.make_image_by_mimeTeX(src_file.path, prop)
94
92
  end
95
93
  end
96
94
 
97
95
  def ext_block_verb_aafigure(label, source, content, visitor)
98
96
  return nil unless /\Aaafigure\z/i =~ label
99
97
  make_image_from_file(source, visitor) do |src_file, prop|
100
- Parser::Ext::AAFigure.make_image(src_file.path, prop, visitor)
98
+ Parser::Ext::AAFigure.make_image(src_file.path, prop)
101
99
  end
102
100
  end
103
101
 
104
102
  def ext_block_verb_blockdiag(label, source, content, visitor)
105
103
  return nil unless /\Ablockdiag\z/i =~ label
106
104
  make_image_from_file(source, visitor) do |src_file, prop|
107
- Parser::Ext::BlockDiag.make_image(src_file.path, prop, visitor)
105
+ Parser::Ext::BlockDiag.make_image(src_file.path, prop)
108
106
  end
109
107
  end
110
108
 
@@ -113,16 +111,15 @@ module Rabbit
113
111
  lang = $1.downcase
114
112
 
115
113
  src, prop = parse_source(source)
116
- logger = visitor.logger
117
114
 
118
- result = Parser::Ext::CodeRay.highlight(lang, src, logger)
115
+ result = Parser::Ext::CodeRay.highlight(lang, src)
119
116
  result || default_ext_block_verbatim(label, src, src, visitor)
120
117
  end
121
118
 
122
119
  def ext_block_verb_rt(label, source, content, visitor)
123
120
  return nil unless /\Art\z/i =~ label
124
121
  unless defined?(RT2RabbitVisitor)
125
- visitor.logger.warn(_("RTtool isn't available"))
122
+ Rabbit.logger.warn(_("RTtool isn't available"))
126
123
  return nil
127
124
  end
128
125
  rt_visitor = RT2RabbitVisitor.new(visitor)
@@ -166,16 +163,15 @@ module Rabbit
166
163
  lang = $1.downcase
167
164
 
168
165
  src, prop = parse_source(source)
169
- logger = visitor.logger
170
166
 
171
- result = Parser::Ext::Rouge.highlight(lang, src, logger)
167
+ result = Parser::Ext::Rouge.highlight(lang, src, prop)
172
168
  result || default_ext_block_verbatim(label, src, src, visitor)
173
169
  end
174
170
 
175
171
  def ext_block_verb_charty(label, source, content, visitor)
176
172
  return nil unless /\Acharty\z/i =~ label
177
173
  make_image_from_file(source, visitor) do |src_file, prop|
178
- Parser::Ext::Charty.make_image(src_file.path, prop, visitor)
174
+ Parser::Ext::Charty.make_image(src_file.path, prop)
179
175
  end
180
176
  end
181
177
 
@@ -1,5 +1,21 @@
1
- require 'rabbit/element'
2
- require 'rabbit/parser/ext/entity'
1
+ # Copyright (C) 2012-2025 Sutou Kouhei <kou@cozmixng.org>
2
+ #
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 2 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
+
17
+ require_relative "../../../element"
18
+ require_relative "../../ext/entity"
3
19
 
4
20
  module Rabbit
5
21
  module Parser
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2004-2022 Sutou Kouhei <kou@cozmixng.org>
1
+ # Copyright (C) 2004-2025 Sutou Kouhei <kou@cozmixng.org>
2
2
  #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -14,8 +14,8 @@
14
14
  # with this program; if not, write to the Free Software Foundation, Inc.,
15
15
  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
16
 
17
- require 'rabbit/element'
18
- require 'rabbit/parser/ext/image'
17
+ require_relative "../../../element"
18
+ require_relative "../../ext/image"
19
19
 
20
20
  module Rabbit
21
21
  module Parser
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2007-2023 Sutou Kouhei <kou@cozmixng.org>
1
+ # Copyright (C) 2007-2025 Sutou Kouhei <kou@cozmixng.org>
2
2
  #
3
3
  # This program is free software; you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -14,11 +14,11 @@
14
14
  # with this program; if not, write to the Free Software Foundation, Inc.,
15
15
  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
16
 
17
- require 'rabbit/utils'
18
- require 'rabbit/parser/ext/inline'
19
- require 'rabbit/parser/rd/ext/base'
20
- require 'rabbit/parser/rd/ext/image'
21
- require 'rabbit/parser/rd/ext/character-reference'
17
+ require_relative "../../../utils"
18
+ require_relative "../../ext/inline"
19
+ require_relative "base"
20
+ require_relative "image"
21
+ require_relative "character-reference"
22
22
 
23
23
  module Rabbit
24
24
  module Parser