rabbit 3.0.4 → 4.0.0

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 (243) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Rakefile +53 -7
  4. data/data/locale/ja/LC_MESSAGES/rabbit.mo +0 -0
  5. data/doc/_config.yml +2 -2
  6. data/doc/en/news.rd +69 -1
  7. data/doc/ja/news.rd +68 -0
  8. data/lib/rabbit/actions.rb +446 -0
  9. data/lib/rabbit/author-configuration.rb +7 -10
  10. data/lib/rabbit/canvas.rb +74 -42
  11. data/lib/rabbit/command/rabbit-slide.rb +11 -13
  12. data/lib/rabbit/command/rabbit-theme.rb +10 -12
  13. data/lib/rabbit/command/rabbit.rb +31 -43
  14. data/lib/rabbit/console.rb +20 -22
  15. data/lib/rabbit/dependency-canvas.rb +2 -2
  16. data/lib/rabbit/element/base.rb +93 -6
  17. data/lib/rabbit/element/block-element.rb +17 -1
  18. data/lib/rabbit/element/block.rb +17 -1
  19. data/lib/rabbit/element/container-element.rb +59 -3
  20. data/lib/rabbit/element/description-list.rb +18 -2
  21. data/lib/rabbit/element/enum-list.rb +18 -2
  22. data/lib/rabbit/element/footnote.rb +18 -2
  23. data/lib/rabbit/element/image-title-slide.rb +17 -1
  24. data/lib/rabbit/element/image.rb +32 -2
  25. data/lib/rabbit/element/index-slide.rb +29 -13
  26. data/lib/rabbit/element/item-list.rb +18 -2
  27. data/lib/rabbit/element/method-list.rb +18 -2
  28. data/lib/rabbit/element/poppler-page.rb +17 -1
  29. data/lib/rabbit/element/poppler-slide.rb +18 -2
  30. data/lib/rabbit/element/poppler-title-slide.rb +18 -2
  31. data/lib/rabbit/element/preformatted.rb +18 -2
  32. data/lib/rabbit/element/slide-element.rb +29 -2
  33. data/lib/rabbit/element/slide.rb +18 -2
  34. data/lib/rabbit/element/syntax-highlighting.rb +17 -1
  35. data/lib/rabbit/element/table.rb +19 -3
  36. data/lib/rabbit/element/tag.rb +18 -2
  37. data/lib/rabbit/element/text-block-element.rb +18 -2
  38. data/lib/rabbit/element/text-container-element.rb +41 -2
  39. data/lib/rabbit/element/text-element.rb +17 -1
  40. data/lib/rabbit/element/text-renderer.rb +17 -1
  41. data/lib/rabbit/element/text.rb +4 -4
  42. data/lib/rabbit/element/title-slide.rb +19 -3
  43. data/lib/rabbit/element/video.rb +157 -56
  44. data/lib/rabbit/element.rb +20 -20
  45. data/lib/rabbit/formatter.rb +18 -1
  46. data/lib/rabbit/frame.rb +102 -90
  47. data/lib/rabbit/front.rb +11 -4
  48. data/lib/rabbit/gem-finder.rb +4 -8
  49. data/lib/rabbit/gem-pusher.rb +4 -4
  50. data/lib/rabbit/gesture/handler.rb +26 -21
  51. data/lib/rabbit/graffiti/config-dialog.rb +18 -2
  52. data/lib/rabbit/graffiti/processor.rb +20 -4
  53. data/lib/rabbit/gtk.rb +48 -14
  54. data/lib/rabbit/html/generator.rb +18 -18
  55. data/{test/helper/fixture.rb → lib/rabbit/icon.rb} +16 -6
  56. data/lib/rabbit/image/base.rb +7 -6
  57. data/lib/rabbit/image/default.rb +17 -1
  58. data/lib/rabbit/image/dia.rb +2 -2
  59. data/lib/rabbit/image/eps.rb +16 -2
  60. data/lib/rabbit/image/gimp.rb +28 -11
  61. data/lib/rabbit/image/mermaid.rb +3 -3
  62. data/lib/rabbit/image/pdf.rb +3 -3
  63. data/lib/rabbit/image/svg.rb +2 -2
  64. data/lib/rabbit/image.rb +8 -8
  65. data/lib/rabbit/info-window.rb +55 -18
  66. data/lib/rabbit/key-handler.rb +381 -0
  67. data/lib/rabbit/keys.rb +31 -2
  68. data/lib/rabbit/logger/base.rb +17 -1
  69. data/lib/rabbit/logger/gui.rb +20 -4
  70. data/lib/rabbit/logger/stderr.rb +16 -2
  71. data/lib/rabbit/logger.rb +4 -4
  72. data/lib/rabbit/menu.rb +200 -220
  73. data/lib/rabbit/parser/base.rb +17 -1
  74. data/lib/rabbit/parser/ext/aafigure.rb +17 -1
  75. data/lib/rabbit/parser/ext/blockdiag.rb +17 -1
  76. data/lib/rabbit/parser/ext/charty.rb +2 -2
  77. data/lib/rabbit/parser/ext/coderay.rb +20 -4
  78. data/lib/rabbit/parser/ext/enscript.rb +31 -15
  79. data/lib/rabbit/parser/ext/entity.rb +17 -1
  80. data/lib/rabbit/parser/ext/image.rb +6 -6
  81. data/lib/rabbit/parser/ext/inline.rb +17 -1
  82. data/lib/rabbit/parser/ext/rouge.rb +7 -4
  83. data/lib/rabbit/parser/ext/tex.rb +18 -2
  84. data/lib/rabbit/parser/ext/video.rb +4 -4
  85. data/lib/rabbit/parser/image.rb +20 -4
  86. data/lib/rabbit/parser/markdown/converter.rb +12 -13
  87. data/lib/rabbit/parser/markdown.rb +18 -2
  88. data/lib/rabbit/parser/pause-support.rb +1 -0
  89. data/lib/rabbit/parser/pdf.rb +3 -3
  90. data/lib/rabbit/parser/rd/ext/base.rb +20 -4
  91. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +24 -28
  92. data/lib/rabbit/parser/rd/ext/character-reference.rb +18 -2
  93. data/lib/rabbit/parser/rd/ext/image.rb +3 -3
  94. data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +6 -6
  95. data/lib/rabbit/parser/rd/ext/refer.rb +18 -2
  96. data/lib/rabbit/parser/rd/ext/video.rb +19 -2
  97. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +24 -8
  98. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +18 -2
  99. data/lib/rabbit/parser/rd/visitor.rb +18 -2
  100. data/lib/rabbit/parser/rd.rb +18 -2
  101. data/lib/rabbit/parser/wiki/output.rb +25 -28
  102. data/lib/rabbit/parser/wiki.rb +18 -2
  103. data/lib/rabbit/parser.rb +8 -6
  104. data/lib/rabbit/path-manipulatable.rb +4 -4
  105. data/lib/rabbit/progress.rb +17 -1
  106. data/lib/rabbit/properties.rb +3 -3
  107. data/lib/rabbit/rabbit.rb +15 -7
  108. data/lib/rabbit/readme-parser.rb +4 -6
  109. data/lib/rabbit/renderer/base.rb +44 -36
  110. data/lib/rabbit/renderer/color.rb +18 -2
  111. data/lib/rabbit/renderer/display/base.rb +10 -12
  112. data/lib/rabbit/renderer/display/button-handler.rb +141 -60
  113. data/lib/rabbit/renderer/display/cursor.rb +4 -5
  114. data/lib/rabbit/renderer/display/drawing-area-base.rb +32 -48
  115. data/lib/rabbit/renderer/display/drawing-area-primitive.rb +10 -61
  116. data/lib/rabbit/renderer/display/drawing-area-view-only.rb +19 -8
  117. data/lib/rabbit/renderer/display/drawing-area.rb +19 -15
  118. data/lib/rabbit/renderer/display/gesture.rb +9 -9
  119. data/lib/rabbit/renderer/display/graffiti.rb +22 -13
  120. data/lib/rabbit/renderer/display/info.rb +22 -2
  121. data/lib/rabbit/renderer/display/magnifier.rb +30 -17
  122. data/lib/rabbit/renderer/display/mask.rb +17 -1
  123. data/lib/rabbit/renderer/display/menu.rb +27 -3
  124. data/lib/rabbit/renderer/display/motion-handler.rb +45 -0
  125. data/lib/rabbit/renderer/display/progress.rb +17 -2
  126. data/lib/rabbit/renderer/display/scroll-handler.rb +60 -13
  127. data/lib/rabbit/renderer/display/search.rb +19 -2
  128. data/lib/rabbit/renderer/display/spotlight.rb +39 -25
  129. data/lib/rabbit/renderer/display.rb +16 -36
  130. data/lib/rabbit/renderer/engine/cairo.rb +4 -11
  131. data/lib/rabbit/renderer/engine.rb +17 -1
  132. data/lib/rabbit/renderer/kernel.rb +2 -20
  133. data/lib/rabbit/renderer/offscreen.rb +8 -14
  134. data/lib/rabbit/renderer/print-layout.rb +2 -2
  135. data/lib/rabbit/renderer/printer.rb +9 -16
  136. data/lib/rabbit/renderer/scene-background-widget.rb +95 -0
  137. data/lib/rabbit/renderer/scene-node-widget.rb +63 -0
  138. data/lib/rabbit/renderer/scene.rb +508 -0
  139. data/lib/rabbit/renderer.rb +6 -6
  140. data/lib/rabbit/search-window.rb +18 -2
  141. data/lib/rabbit/searcher.rb +15 -1
  142. data/lib/rabbit/size.rb +9 -1
  143. data/lib/rabbit/slide-configuration.rb +11 -14
  144. data/lib/rabbit/soap/driver.rb +20 -4
  145. data/lib/rabbit/soap/server.rb +17 -1
  146. data/lib/rabbit/source/argf.rb +5 -5
  147. data/lib/rabbit/source/base.rb +5 -6
  148. data/lib/rabbit/source/file.rb +5 -5
  149. data/lib/rabbit/source/memory.rb +20 -4
  150. data/lib/rabbit/source/uri.rb +9 -11
  151. data/lib/rabbit/source-generator/hiki.rb +2 -7
  152. data/lib/rabbit/source-generator/markdown.rb +2 -7
  153. data/lib/rabbit/source-generator/rd.rb +2 -7
  154. data/lib/rabbit/source-generator.rb +4 -4
  155. data/lib/rabbit/source.rb +5 -5
  156. data/lib/rabbit/task/slide.rb +13 -11
  157. data/lib/rabbit/task/theme.rb +8 -11
  158. data/lib/rabbit/task.rb +3 -3
  159. data/lib/rabbit/theme/applier.rb +27 -11
  160. data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
  161. data/lib/rabbit/theme/color-circle/color-circle.rb +18 -1
  162. data/lib/rabbit/theme/cozmixng/cozmixng.rb +1 -1
  163. data/lib/rabbit/theme/default/default.rb +1 -0
  164. data/lib/rabbit/theme/default-icon/default-icon.rb +1 -1
  165. data/lib/rabbit/theme/default-item-mark-setup/default-item-mark-setup.rb +17 -1
  166. data/lib/rabbit/theme/default-preformatted/default-preformatted.rb +9 -1
  167. data/lib/rabbit/theme/enishi-green/enishi-green.rb +1 -1
  168. data/lib/rabbit/theme/entry.rb +10 -12
  169. data/lib/rabbit/theme/icon/icon.rb +3 -8
  170. data/lib/rabbit/theme/image-slide-number/image-slide-number.rb +5 -5
  171. data/lib/rabbit/theme/image-timer/image-timer.rb +3 -3
  172. data/lib/rabbit/theme/lightning-simple/lightning-simple.rb +1 -0
  173. data/lib/rabbit/theme/lightning-talk/lightning-talk.rb +1 -0
  174. data/lib/rabbit/theme/manager.rb +19 -9
  175. data/lib/rabbit/theme/rabbit-icon/rabbit-icon.rb +1 -1
  176. data/lib/rabbit/theme/ranguba/ranguba.rb +1 -1
  177. data/lib/rabbit/theme/red-frame/red-frame.rb +6 -2
  178. data/lib/rabbit/theme/ruby-gnome2/ruby-gnome2.rb +1 -0
  179. data/lib/rabbit/theme/ruby-gnome2-icon/ruby-gnome2-icon.rb +1 -1
  180. data/lib/rabbit/theme/searcher.rb +23 -7
  181. data/lib/rabbit/theme/slide-number/slide-number.rb +1 -1
  182. data/lib/rabbit/theme/slide-show/slide-show.rb +1 -1
  183. data/lib/rabbit/theme/table/table.rb +2 -2
  184. data/lib/rabbit/theme/video/property.rb +3 -0
  185. data/lib/rabbit/theme/video/video.rb +5 -0
  186. data/lib/rabbit/theme-configuration.rb +9 -11
  187. data/lib/rabbit/utils.rb +12 -94
  188. data/lib/rabbit/version.rb +2 -2
  189. data/lib/rabbit/xmlrpc/client.rb +17 -1
  190. data/lib/rabbit/xmlrpc/server.rb +17 -1
  191. data/po/en/rabbit.edit.po +325 -317
  192. data/po/en/rabbit.po +61 -55
  193. data/po/fr/rabbit.edit.po +325 -317
  194. data/po/fr/rabbit.po +61 -55
  195. data/po/ja/rabbit.edit.po +346 -371
  196. data/po/ja/rabbit.po +83 -80
  197. data/rabbit.gemspec +4 -2
  198. data/sample/block-quote.rab +13 -0
  199. data/sample/description-list.rab +17 -0
  200. data/sample/mermaid.rab +16 -0
  201. data/sample/rabbit-en.hiki +0 -1
  202. data/sample/rabbit-en.md +0 -1
  203. data/sample/rabbit-en.rd +0 -1
  204. data/sample/rabbit.hiki +0 -1
  205. data/sample/rabbit.md +0 -1
  206. data/sample/rabbit.rd +0 -1
  207. data/sample/video.rab +17 -0
  208. metadata +33 -65
  209. data/lib/rabbit/action/basic.rb +0 -304
  210. data/lib/rabbit/action/radio.rb +0 -78
  211. data/lib/rabbit/action/toggle.rb +0 -82
  212. data/lib/rabbit/action.rb +0 -140
  213. data/lib/rabbit/renderer/display/gl.rb +0 -98
  214. data/lib/rabbit/renderer/display/key-handler.rb +0 -321
  215. data/lib/rabbit/renderer/gl.rb +0 -95
  216. data/lib/rabbit/renderer/screen.rb +0 -286
  217. data/lib/rabbit/renderer/widget/drawing-area.rb +0 -93
  218. data/lib/rabbit/stock.rb +0 -31
  219. data/lib/rabbit/trackball.rb +0 -228
  220. data/lib/rabbit/video-window.rb +0 -123
  221. data/test/command/test-rabbit.rb +0 -101
  222. data/test/helper/parser.rb +0 -48
  223. data/test/helper.rb +0 -24
  224. data/test/image/test-dia.rb +0 -54
  225. data/test/image/test-eps.rb +0 -41
  226. data/test/parser/test-markdown.rb +0 -360
  227. data/test/parser/test-rd.rb +0 -43
  228. data/test/parser/test-wiki.rb +0 -71
  229. data/test/run-test.rb +0 -27
  230. data/test/source-generator/test-hiki.rb +0 -68
  231. data/test/source-generator/test-markdown.rb +0 -67
  232. data/test/source-generator/test-rd.rb +0 -69
  233. data/test/test-applier.rb +0 -73
  234. data/test/test-author-configuration.rb +0 -37
  235. data/test/test-canvas.rb +0 -70
  236. data/test/test-color.rb +0 -51
  237. data/test/test-element.rb +0 -103
  238. data/test/test-readme-parser.rb +0 -160
  239. data/test/test-size.rb +0 -155
  240. data/test/test-slide-configuration.rb +0 -74
  241. data/test/test-source.rb +0 -122
  242. data/test/test-theme-configuration.rb +0 -47
  243. data/test/test-utils.rb +0 -64
data/lib/rabbit/utils.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2004-2024 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
@@ -25,43 +25,6 @@ module Rabbit
25
25
  end
26
26
  end
27
27
 
28
- def require_safe(path)
29
- require path
30
- rescue LoadError
31
- $".reject! {|x| /\A#{Regexp.escape(path)}/ =~ x}
32
- raise
33
- end
34
-
35
- def require_files_under_directory_in_load_path(dir, silent=true)
36
- normalize = Proc.new do |base_path, path|
37
- path.sub(/\A#{Regexp.escape(base_path)}\/?/, '').sub(/\.[^.]+$/, '')
38
- end
39
-
40
- $LOAD_PATH.each do |path|
41
- source_glob = ::File.join(path, dir, '*')
42
- Dir.glob(source_glob) do |source|
43
- next if File.directory?(source)
44
- begin
45
- before = Time.now
46
- normalized_path = normalize[path, source]
47
- require_safe normalized_path
48
- unless silent
49
- STDERR.puts([Time.now - before, normalized_path].inspect)
50
- end
51
- rescue LoadError, RuntimeError # Should be changed to Gtk::InitError?
52
- if $!.is_a?(RuntimeError)
53
- raise if /\ACannot open display:\s*\d*\z/ !~ $!.message
54
- end
55
- unless silent
56
- STDERR.puts(path)
57
- STDERR.puts($!.message)
58
- STDERR.puts($@)
59
- end
60
- end
61
- end
62
- end
63
- end
64
-
65
28
  def collect_under_module(mod, klass)
66
29
  mod.constants.collect do |x|
67
30
  mod.const_get(x)
@@ -78,22 +41,6 @@ module Rabbit
78
41
  collect_under_module(mod, Module)
79
42
  end
80
43
 
81
- def corresponding_objects(objects)
82
- objects.find_all do |object|
83
- object.respond_to?(:priority)
84
- end.sort_by do |object|
85
- object.priority
86
- end.last
87
- end
88
-
89
- def corresponding_class_under_module(mod)
90
- corresponding_objects(collect_classes_under_module(mod))
91
- end
92
-
93
- def corresponding_module_under_module(mod)
94
- corresponding_objects(collect_modules_under_module(mod))
95
- end
96
-
97
44
  def arg_list(arity)
98
45
  args = []
99
46
  if arity == -1
@@ -122,6 +69,7 @@ module Rabbit
122
69
  end
123
70
 
124
71
  def process_pending_events
72
+ return
125
73
  if events_pending_available?
126
74
  while Gtk.events_pending?
127
75
  Gtk.main_iteration
@@ -251,14 +199,17 @@ module Rabbit
251
199
  end
252
200
  end
253
201
 
254
- def combination(elements)
255
- return [] if elements.empty?
256
- first, *rest = elements
257
- results = combination(rest)
258
- if results.empty?
259
- [[], [first]]
202
+ def power_set(elements, &block)
203
+ if block_given?
204
+ 0.upto(elements.size) do |i|
205
+ elements.combination(i, &block)
206
+ end
260
207
  else
261
- results + results.collect {|result| [first, *result]}
208
+ set = []
209
+ power_set(elements) do |s|
210
+ set << s
211
+ end
212
+ set
262
213
  end
263
214
  end
264
215
 
@@ -434,39 +385,6 @@ module Rabbit
434
385
  end
435
386
  end
436
387
 
437
- module Converter
438
- module_function
439
- if "".respond_to?(:encoding)
440
- def keep_kcode(new_kcode)
441
- yield
442
- end
443
- else
444
- def keep_kcode(new_kcode)
445
- kcode = $KCODE
446
- $KCODE = new_kcode
447
- yield
448
- ensure
449
- $KCODE = kcode
450
- end
451
- end
452
-
453
- def to_utf8(str)
454
- str.encode(Encoding::UTF_8)
455
- end
456
-
457
- def to_eucjp(str)
458
- str.encode(Encoding::EUCJP)
459
- end
460
-
461
- def to_utf8_from_eucjp(str)
462
- str.encode(Encoding::UTF_8, Encoding::EUCJP)
463
- end
464
-
465
- def to_eucjp_from_utf8(str)
466
- str.encode(Encoding::EUCJP, Encoding::UTF_8)
467
- end
468
- end
469
-
470
388
  module ModuleLoader
471
389
  LOADERS = {}
472
390
 
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2012-2023 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
@@ -15,5 +15,5 @@
15
15
  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16
16
 
17
17
  module Rabbit
18
- VERSION = "3.0.4"
18
+ VERSION = "4.0.0"
19
19
  end
@@ -1,6 +1,22 @@
1
+ # Copyright (C) 2005-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 "xmlrpc/client"
2
18
 
3
- require "rabbit/xmlrpc/base"
19
+ require_relative "base"
4
20
 
5
21
  module Rabbit
6
22
  module XMLRPC
@@ -1,7 +1,23 @@
1
+ # Copyright (C) 2005-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 "webrick"
2
18
  require "xmlrpc/server"
3
19
 
4
- require "rabbit/xmlrpc/base"
20
+ require_relative "base"
5
21
 
6
22
  module Rabbit
7
23
  module XMLRPC