rabbit 0.6.4 → 0.9.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 (51) hide show
  1. data/COPYING +1 -1
  2. data/NEWS.en +157 -2
  3. data/NEWS.ja +153 -1
  4. data/README.en +8 -1
  5. data/README.ja +8 -1
  6. data/Rakefile +4 -1
  7. data/TODO +17 -0
  8. data/bin/rabbiter +96 -0
  9. data/lib/rabbit/element/block-element.rb +0 -2
  10. data/lib/rabbit/element/block.rb +5 -4
  11. data/lib/rabbit/element/container-element.rb +2 -1
  12. data/lib/rabbit/element/description-list.rb +5 -2
  13. data/lib/rabbit/element/enum-list.rb +4 -0
  14. data/lib/rabbit/element/image.rb +41 -1
  15. data/lib/rabbit/element/item-list.rb +3 -0
  16. data/lib/rabbit/element/method-list.rb +2 -2
  17. data/lib/rabbit/element/poppler-page.rb +1 -0
  18. data/lib/rabbit/element/slide-element.rb +1 -0
  19. data/lib/rabbit/element/slide.rb +1 -1
  20. data/lib/rabbit/element/table.rb +7 -2
  21. data/lib/rabbit/element/tag.rb +1 -0
  22. data/lib/rabbit/element/text-block-element.rb +11 -0
  23. data/lib/rabbit/element/text-container-element.rb +4 -0
  24. data/lib/rabbit/element/text.rb +6 -3
  25. data/lib/rabbit/element/title-slide.rb +10 -10
  26. data/lib/rabbit/parser/ext/aafigure.rb +31 -0
  27. data/lib/rabbit/parser/rd.rb +2 -1
  28. data/lib/rabbit/parser/rd/ext/aafigure.rb +18 -0
  29. data/lib/rabbit/parser/rd/ext/block-verbatim.rb +27 -1
  30. data/lib/rabbit/parser/rd/ext/inline-verbatim.rb +16 -22
  31. data/lib/rabbit/parser/rd/rd2rabbit-lib.rb +8 -2
  32. data/lib/rabbit/parser/rd/rt/rt2rabbit-lib.rb +7 -1
  33. data/lib/rabbit/parser/wiki/output.rb +35 -6
  34. data/lib/rabbit/rabbit.rb +7 -1
  35. data/lib/rabbit/renderer/display/clutter-embed.rb +2 -0
  36. data/lib/rabbit/renderer/display/comment-drawing-area.rb +2 -0
  37. data/lib/rabbit/renderer/print/base.rb +6 -1
  38. data/lib/rabbit/theme/applier.rb +1 -1
  39. data/lib/rabbit/theme/background-image-toolkit/background-image-toolkit.rb +85 -0
  40. data/lib/rabbit/theme/body-background-image/body-background-image.rb +8 -0
  41. data/lib/rabbit/theme/clear-blue/clear-blue.rb +1 -1
  42. data/lib/rabbit/theme/default/default.rb +12 -4
  43. data/lib/rabbit/theme/per-slide-background-image/per-slide-background-image.rb +7 -35
  44. data/lib/rabbit/theme/table/table.rb +13 -11
  45. data/lib/rabbit/theme/tag/property.rb +4 -0
  46. data/lib/rabbit/theme/tag/tag.rb +35 -0
  47. data/lib/rabbit/theme/title-background-image/title-background-image.rb +19 -17
  48. data/sample/rabbit-en.rd +89 -1
  49. data/sample/rabbit.rd +91 -2
  50. data/sample/table.hiki +34 -0
  51. metadata +106 -32
@@ -22,8 +22,6 @@ module Rabbit
22
22
  end
23
23
 
24
24
  module BlockElement
25
- include Base
26
-
27
25
  def inline_element?
28
26
  false
29
27
  end
@@ -1,15 +1,15 @@
1
- require 'rabbit/element/text-container-element'
2
- require 'rabbit/element/container-element'
3
- require 'rabbit/element/block-element'
1
+ require 'rabbit/element/text-block-element'
4
2
 
5
3
  module Rabbit
6
4
  module Element
7
5
  class Container
8
6
  include ContainerElement
7
+ include BlockElement
9
8
  end
10
9
 
11
10
  class BlockQuote
12
11
  include ContainerElement
12
+ include BlockElement
13
13
  include BlockHorizontalCentering
14
14
 
15
15
  attr_reader :cite, :title
@@ -27,7 +27,7 @@ module Rabbit
27
27
  end
28
28
 
29
29
  class Paragraph
30
- include TextContainerElement
30
+ include TextBlockElement
31
31
 
32
32
  def text
33
33
  "#{super}\n"
@@ -44,6 +44,7 @@ module Rabbit
44
44
 
45
45
  class WaitBlock
46
46
  include ContainerElement
47
+ include BlockElement
47
48
 
48
49
  def have_wait_tag?
49
50
  true
@@ -6,9 +6,10 @@ module Rabbit
6
6
  module ContainerElement
7
7
  extend Forwardable
8
8
 
9
- include BlockElement
10
9
  include Enumerable
11
10
 
11
+ include Base
12
+
12
13
  attr_reader :elements
13
14
 
14
15
  def_delegators(:@elements, :empty?, :each, :first, :last)
@@ -1,10 +1,11 @@
1
1
  require 'rabbit/element/container-element'
2
- require 'rabbit/element/text-container-element'
2
+ require 'rabbit/element/text-block-element'
3
3
 
4
4
  module Rabbit
5
5
  module Element
6
6
  class DescriptionList
7
7
  include ContainerElement
8
+ include BlockElement
8
9
 
9
10
  def to_html(generator)
10
11
  "<dl>\n#{super}\n</dl>"
@@ -13,6 +14,7 @@ module Rabbit
13
14
 
14
15
  class DescriptionListItem
15
16
  include ContainerElement
17
+ include BlockElement
16
18
 
17
19
  attr_reader :term, :content
18
20
 
@@ -26,7 +28,7 @@ module Rabbit
26
28
  end
27
29
 
28
30
  class DescriptionTerm
29
- include TextContainerElement
31
+ include TextBlockElement
30
32
 
31
33
  def to_rd
32
34
  ": #{text}"
@@ -39,6 +41,7 @@ module Rabbit
39
41
 
40
42
  class DescriptionContent
41
43
  include ContainerElement
44
+ include BlockElement
42
45
 
43
46
  def text
44
47
  super.gsub(/^/, " ")
@@ -1,9 +1,11 @@
1
1
  require 'rabbit/element/container-element'
2
+ require 'rabbit/element/block-element'
2
3
 
3
4
  module Rabbit
4
5
  module Element
5
6
  class EnumList
6
7
  include ContainerElement
8
+ include BlockElement
7
9
 
8
10
  def to_html(generator)
9
11
  "<ol>\n#{super}\n</ol>"
@@ -12,6 +14,8 @@ module Rabbit
12
14
 
13
15
  class EnumListItem
14
16
  include ContainerElement
17
+ include BlockElement
18
+
15
19
  attr_accessor :order
16
20
 
17
21
  def to_rd
@@ -4,6 +4,7 @@ require 'rabbit/element/block-element'
4
4
  module Rabbit
5
5
  module Element
6
6
  class Image
7
+ include Base
7
8
  include BlockElement
8
9
  include BlockHorizontalCentering
9
10
 
@@ -16,10 +17,19 @@ module Rabbit
16
17
  attr_reader :caption
17
18
  attr_reader :normalized_width, :normalized_height
18
19
  attr_reader :relative_width, :relative_height
20
+ attr_reader :relative_margin_top, :relative_margin_bottom
21
+ attr_reader :relative_margin_left, :relative_margin_right
22
+ attr_reader :relative_padding_top, :relative_padding_bottom
23
+ attr_reader :relative_padding_left, :relative_padding_right
19
24
 
20
25
  def initialize(filename, prop)
21
26
  @filename = filename
22
27
  super(filename, prop)
28
+ normalized_prop = {}
29
+ prop.each do |name, value|
30
+ normalized_prop[name.gsub(/-/, '_')] = value
31
+ end
32
+ prop = normalized_prop
23
33
  %w(caption dither_mode).each do |name|
24
34
  instance_variable_set("@#{name}", prop[name])
25
35
  end
@@ -35,6 +45,10 @@ module Rabbit
35
45
  x_dither y_dither
36
46
  normalized_width normalized_height
37
47
  relative_width relative_height
48
+ relative_margin_top relative_margin_bottom
49
+ relative_margin_left relative_margin_right
50
+ relative_padding_top relative_padding_bottom
51
+ relative_padding_left relative_padding_right
38
52
  ).each do |name|
39
53
  begin
40
54
  instance_variable_set("@#{name}", prop[name] && Integer(prop[name]))
@@ -42,6 +56,7 @@ module Rabbit
42
56
  raise InvalidImageSizeError.new(filename, name, prop[name])
43
57
  end
44
58
  end
59
+
45
60
  setup_draw_parameters(prop)
46
61
  resize(@width, @height)
47
62
  end
@@ -133,9 +148,34 @@ module Rabbit
133
148
  [x, y + height, w, h - height]
134
149
  end
135
150
 
151
+ def adjust_margin(w, h)
152
+ @margin_top =
153
+ make_relative_size(@relative_margin_top, h) || @margin_top
154
+ @margin_bottom =
155
+ make_relative_size(@relative_margin_bottom, h) || @margin_bottom
156
+ @margin_left =
157
+ make_relative_size(@relative_margin_left, w) || @margin_left
158
+ @margin_right =
159
+ make_relative_size(@relative_margin_right, w) || @margin_right
160
+ end
161
+
162
+ def adjust_padding(w, h)
163
+ @padding_top =
164
+ make_relative_size(@relative_padding_top, h) || @padding_top
165
+ @padding_bottom =
166
+ make_relative_size(@relative_padding_bottom, h) || @padding_bottom
167
+ @padding_left =
168
+ make_relative_size(@relative_padding_left, w) || @padding_left
169
+ @padding_right =
170
+ make_relative_size(@relative_padding_right, w) || @padding_right
171
+ end
172
+
136
173
  def adjust_size(canvas, x, y, w, h)
137
174
  base_w = w
138
- base_h = (@oh || h) - @padding_top - @padding_bottom
175
+ base_h = @oh || h
176
+ adjust_margin(base_w, base_h)
177
+ adjust_padding(base_w, base_h)
178
+ base_h = base_h - @padding_top - @padding_bottom
139
179
  if @as_large_as_possible
140
180
  iw = base_w - x
141
181
  ih = base_h - y
@@ -1,9 +1,11 @@
1
1
  require 'rabbit/element/container-element'
2
+ require 'rabbit/element/block-element'
2
3
 
3
4
  module Rabbit
4
5
  module Element
5
6
  class ItemList
6
7
  include ContainerElement
8
+ include BlockElement
7
9
 
8
10
  def to_html(generator)
9
11
  "<ul>\n#{super}\n</ul>"
@@ -12,6 +14,7 @@ module Rabbit
12
14
 
13
15
  class ItemListItem
14
16
  include ContainerElement
17
+ include BlockElement
15
18
 
16
19
  def to_rd
17
20
  prefix = "* "
@@ -1,5 +1,5 @@
1
1
  require 'rabbit/element/container-element'
2
- require 'rabbit/element/text-container-element'
2
+ require 'rabbit/element/text-block-element'
3
3
 
4
4
  module Rabbit
5
5
  module Element
@@ -26,7 +26,7 @@ module Rabbit
26
26
  end
27
27
 
28
28
  class MethodTerm
29
- include TextContainerElement
29
+ include TextBlockElement
30
30
 
31
31
  attr_accessor :name
32
32
  end
@@ -3,6 +3,7 @@ require 'rabbit/element/block-element'
3
3
  module Rabbit
4
4
  module Element
5
5
  class PopplerPage
6
+ include Base
6
7
  include BlockElement
7
8
  include BlockHorizontalCentering
8
9
 
@@ -4,6 +4,7 @@ module Rabbit
4
4
  module Element
5
5
  module SlideElement
6
6
  include ContainerElement
7
+ include BlockElement
7
8
 
8
9
  attr_accessor :index, :drawing_index, :transition
9
10
  def initialize(title_element)
@@ -28,7 +28,7 @@ module Rabbit
28
28
  end
29
29
 
30
30
  class HeadLine
31
- include TextContainerElement
31
+ include TextBlockElement
32
32
 
33
33
  def to_rd
34
34
  "= #{text}"
@@ -1,10 +1,12 @@
1
1
  require 'rabbit/element/text-element'
2
2
  require 'rabbit/element/container-element'
3
+ require 'rabbit/element/block-element'
3
4
 
4
5
  module Rabbit
5
6
  module Element
6
7
  class Table
7
8
  include ContainerElement
9
+ include BlockElement
8
10
 
9
11
  attr_reader :caption
10
12
  def initialize(prop={})
@@ -47,6 +49,7 @@ module Rabbit
47
49
 
48
50
  class TableHead
49
51
  include ContainerElement
52
+ include BlockElement
50
53
 
51
54
  def text
52
55
  "#{super}\n"
@@ -59,6 +62,7 @@ module Rabbit
59
62
 
60
63
  class TableBody
61
64
  include ContainerElement
65
+ include BlockElement
62
66
 
63
67
  def to_html(generator)
64
68
  "<tbody>\n#{super}\n</tbody>"
@@ -67,6 +71,7 @@ module Rabbit
67
71
 
68
72
  class TableRow
69
73
  include ContainerElement
74
+ include BlockElement
70
75
 
71
76
  def text
72
77
  super.gsub(/\n/, ", ")
@@ -82,7 +87,7 @@ module Rabbit
82
87
  end
83
88
 
84
89
  class TableHeader
85
- include TextElement
90
+ include TextContainerElement
86
91
 
87
92
  def to_html(generator)
88
93
  "<th>#{super}</th>"
@@ -90,7 +95,7 @@ module Rabbit
90
95
  end
91
96
 
92
97
  class TableCell
93
- include TextElement
98
+ include TextContainerElement
94
99
 
95
100
  def to_html(generator)
96
101
  "<td>#{super}</td>"
@@ -1,4 +1,5 @@
1
1
  require 'rabbit/element/base'
2
+ require 'rabbit/element/text-container-element'
2
3
 
3
4
  module Rabbit
4
5
  module Element
@@ -0,0 +1,11 @@
1
+ require 'rabbit/element/text-container-element'
2
+ require 'rabbit/element/block-element'
3
+
4
+ module Rabbit
5
+ module Element
6
+ module TextBlockElement
7
+ include TextContainerElement
8
+ include BlockElement
9
+ end
10
+ end
11
+ end
@@ -70,6 +70,10 @@ module Rabbit
70
70
  super or @elements.any? {|elem| elem.have_numerical_font_size?}
71
71
  end
72
72
 
73
+ def inline_element?
74
+ true
75
+ end
76
+
73
77
  protected
74
78
  def initial_font_size_for_compute_font_size
75
79
  [
@@ -1,6 +1,6 @@
1
1
  require 'rabbit/element/text-element'
2
2
  require 'rabbit/element/text-container-element'
3
- require 'rabbit/element/block-element'
3
+ require 'rabbit/element/text-block-element'
4
4
 
5
5
  module Rabbit
6
6
  module Element
@@ -12,9 +12,12 @@ module Rabbit
12
12
  include TextContainerElement
13
13
  end
14
14
 
15
+ class TextBlock
16
+ include TextBlockElement
17
+ end
18
+
15
19
  class PreformattedBlock
16
- include TextContainerElement
17
- include BlockHorizontalCentering
20
+ include TextBlockElement
18
21
 
19
22
  def to_html(generator)
20
23
  "<pre>#{super}</pre>"
@@ -1,5 +1,5 @@
1
1
  require 'rabbit/element/slide-element'
2
- require 'rabbit/element/text-container-element'
2
+ require 'rabbit/element/text-block-element'
3
3
  require 'rabbit/element/description-list'
4
4
 
5
5
  module Rabbit
@@ -80,7 +80,7 @@ module Rabbit
80
80
  end
81
81
 
82
82
  class Title
83
- include TextContainerElement
83
+ include TextBlockElement
84
84
 
85
85
  def to_rd
86
86
  "= #{text}"
@@ -92,7 +92,7 @@ module Rabbit
92
92
  end
93
93
 
94
94
  class Subtitle
95
- include TextContainerElement
95
+ include TextBlockElement
96
96
 
97
97
  def to_rd
98
98
  ": subtitle\n #{text}"
@@ -104,7 +104,7 @@ module Rabbit
104
104
  end
105
105
 
106
106
  class Author
107
- include TextContainerElement
107
+ include TextBlockElement
108
108
 
109
109
  def to_rd
110
110
  ": author\n #{text}"
@@ -116,7 +116,7 @@ module Rabbit
116
116
  end
117
117
 
118
118
  class ContentSource
119
- include TextContainerElement
119
+ include TextBlockElement
120
120
 
121
121
  def to_rd
122
122
  ": content-source\n #{text}"
@@ -128,7 +128,7 @@ module Rabbit
128
128
  end
129
129
 
130
130
  class Institution
131
- include TextContainerElement
131
+ include TextBlockElement
132
132
 
133
133
  def to_rd
134
134
  ": institution\n #{text}"
@@ -140,7 +140,7 @@ module Rabbit
140
140
  end
141
141
 
142
142
  class Date
143
- include TextContainerElement
143
+ include TextBlockElement
144
144
 
145
145
  def to_rd
146
146
  ": date\n #{text}"
@@ -152,7 +152,7 @@ module Rabbit
152
152
  end
153
153
 
154
154
  class Place
155
- include TextContainerElement
155
+ include TextBlockElement
156
156
 
157
157
  def to_rd
158
158
  ": place\n #{text}"
@@ -164,7 +164,7 @@ module Rabbit
164
164
  end
165
165
 
166
166
  class When
167
- include TextContainerElement
167
+ include TextBlockElement
168
168
 
169
169
  def to_rd
170
170
  ": when\n #{text}"
@@ -176,7 +176,7 @@ module Rabbit
176
176
  end
177
177
 
178
178
  class Where
179
- include TextContainerElement
179
+ include TextBlockElement
180
180
 
181
181
  def to_rd
182
182
  ": where\n #{text}"