prawn 2.4.0 → 2.5.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 (203) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/prawn/document/bounding_box.rb +213 -141
  4. data/lib/prawn/document/column_box.rb +61 -26
  5. data/lib/prawn/document/internals.rb +25 -16
  6. data/lib/prawn/document/span.rb +20 -18
  7. data/lib/prawn/document.rb +257 -171
  8. data/lib/prawn/encoding.rb +2 -5
  9. data/lib/prawn/errors.rb +23 -34
  10. data/lib/prawn/font.rb +248 -135
  11. data/lib/prawn/font_metric_cache.rb +11 -10
  12. data/lib/prawn/fonts/afm.rb +85 -45
  13. data/lib/prawn/fonts/dfont.rb +7 -1
  14. data/lib/prawn/fonts/otf.rb +4 -1
  15. data/lib/prawn/fonts/to_unicode_cmap.rb +151 -0
  16. data/lib/prawn/fonts/ttc.rb +7 -2
  17. data/lib/prawn/fonts/ttf.rb +305 -93
  18. data/lib/prawn/fonts.rb +14 -0
  19. data/lib/prawn/graphics/blend_mode.rb +25 -28
  20. data/lib/prawn/graphics/cap_style.rb +9 -12
  21. data/lib/prawn/graphics/color.rb +57 -34
  22. data/lib/prawn/graphics/dash.rb +45 -42
  23. data/lib/prawn/graphics/join_style.rb +17 -11
  24. data/lib/prawn/graphics/patterns.rb +190 -69
  25. data/lib/prawn/graphics/transformation.rb +48 -41
  26. data/lib/prawn/graphics/transparency.rb +16 -40
  27. data/lib/prawn/graphics.rb +363 -253
  28. data/lib/prawn/grid.rb +184 -57
  29. data/lib/prawn/image_handler.rb +27 -10
  30. data/lib/prawn/images/image.rb +8 -10
  31. data/lib/prawn/images/jpg.rb +42 -19
  32. data/lib/prawn/images/png.rb +92 -41
  33. data/lib/prawn/images.rb +44 -57
  34. data/lib/prawn/measurement_extensions.rb +39 -8
  35. data/lib/prawn/measurements.rb +60 -5
  36. data/lib/prawn/outline.rb +114 -108
  37. data/lib/prawn/repeater.rb +51 -35
  38. data/lib/prawn/security/arcfour.rb +4 -4
  39. data/lib/prawn/security.rb +75 -70
  40. data/lib/prawn/soft_mask.rb +42 -30
  41. data/lib/prawn/stamp.rb +38 -42
  42. data/lib/prawn/text/box.rb +146 -96
  43. data/lib/prawn/text/formatted/arranger.rb +87 -26
  44. data/lib/prawn/text/formatted/box.rb +221 -150
  45. data/lib/prawn/text/formatted/fragment.rb +130 -14
  46. data/lib/prawn/text/formatted/line_wrap.rb +33 -24
  47. data/lib/prawn/text/formatted/parser.rb +112 -72
  48. data/lib/prawn/text/formatted/wrap.rb +12 -17
  49. data/lib/prawn/text/formatted.rb +75 -0
  50. data/lib/prawn/text.rb +441 -196
  51. data/lib/prawn/transformation_stack.rb +29 -10
  52. data/lib/prawn/utilities.rb +13 -13
  53. data/lib/prawn/version.rb +2 -1
  54. data/lib/prawn/view.rb +68 -53
  55. data/lib/prawn.rb +23 -18
  56. data.tar.gz.sig +0 -0
  57. metadata +54 -177
  58. metadata.gz.sig +0 -0
  59. data/.yardopts +0 -10
  60. data/Gemfile +0 -5
  61. data/Rakefile +0 -25
  62. data/manual/absolute_position.pdf +0 -0
  63. data/manual/basic_concepts/adding_pages.rb +0 -26
  64. data/manual/basic_concepts/basic_concepts.rb +0 -43
  65. data/manual/basic_concepts/creation.rb +0 -38
  66. data/manual/basic_concepts/cursor.rb +0 -32
  67. data/manual/basic_concepts/measurement.rb +0 -24
  68. data/manual/basic_concepts/origin.rb +0 -37
  69. data/manual/basic_concepts/other_cursor_helpers.rb +0 -39
  70. data/manual/basic_concepts/view.rb +0 -48
  71. data/manual/bounding_box/bounding_box.rb +0 -41
  72. data/manual/bounding_box/bounds.rb +0 -48
  73. data/manual/bounding_box/canvas.rb +0 -23
  74. data/manual/bounding_box/creation.rb +0 -22
  75. data/manual/bounding_box/indentation.rb +0 -45
  76. data/manual/bounding_box/nesting.rb +0 -52
  77. data/manual/bounding_box/russian_boxes.rb +0 -40
  78. data/manual/bounding_box/stretchy.rb +0 -29
  79. data/manual/contents.rb +0 -35
  80. data/manual/cover.rb +0 -43
  81. data/manual/document_and_page_options/background.rb +0 -29
  82. data/manual/document_and_page_options/document_and_page_options.rb +0 -34
  83. data/manual/document_and_page_options/metadata.rb +0 -25
  84. data/manual/document_and_page_options/page_margins.rb +0 -36
  85. data/manual/document_and_page_options/page_size.rb +0 -34
  86. data/manual/document_and_page_options/print_scaling.rb +0 -23
  87. data/manual/example_helper.rb +0 -8
  88. data/manual/graphics/blend_mode.rb +0 -52
  89. data/manual/graphics/circle_and_ellipse.rb +0 -21
  90. data/manual/graphics/color.rb +0 -22
  91. data/manual/graphics/common_lines.rb +0 -29
  92. data/manual/graphics/fill_and_stroke.rb +0 -41
  93. data/manual/graphics/fill_rules.rb +0 -38
  94. data/manual/graphics/gradients.rb +0 -43
  95. data/manual/graphics/graphics.rb +0 -64
  96. data/manual/graphics/helper.rb +0 -34
  97. data/manual/graphics/line_width.rb +0 -36
  98. data/manual/graphics/lines_and_curves.rb +0 -40
  99. data/manual/graphics/polygon.rb +0 -27
  100. data/manual/graphics/rectangle.rb +0 -20
  101. data/manual/graphics/rotate.rb +0 -25
  102. data/manual/graphics/scale.rb +0 -42
  103. data/manual/graphics/soft_masks.rb +0 -44
  104. data/manual/graphics/stroke_cap.rb +0 -30
  105. data/manual/graphics/stroke_dash.rb +0 -47
  106. data/manual/graphics/stroke_join.rb +0 -29
  107. data/manual/graphics/translate.rb +0 -29
  108. data/manual/graphics/transparency.rb +0 -33
  109. data/manual/how_to_read_this_manual.rb +0 -39
  110. data/manual/images/absolute_position.rb +0 -22
  111. data/manual/images/fit.rb +0 -20
  112. data/manual/images/horizontal.rb +0 -24
  113. data/manual/images/images.rb +0 -41
  114. data/manual/images/plain_image.rb +0 -17
  115. data/manual/images/scale.rb +0 -21
  116. data/manual/images/vertical.rb +0 -30
  117. data/manual/images/width_and_height.rb +0 -24
  118. data/manual/layout/boxes.rb +0 -26
  119. data/manual/layout/content.rb +0 -24
  120. data/manual/layout/layout.rb +0 -27
  121. data/manual/layout/simple_grid.rb +0 -22
  122. data/manual/outline/add_subsection_to.rb +0 -60
  123. data/manual/outline/insert_section_after.rb +0 -46
  124. data/manual/outline/outline.rb +0 -33
  125. data/manual/outline/sections_and_pages.rb +0 -66
  126. data/manual/repeatable_content/alternate_page_numbering.rb +0 -36
  127. data/manual/repeatable_content/page_numbering.rb +0 -55
  128. data/manual/repeatable_content/repeatable_content.rb +0 -35
  129. data/manual/repeatable_content/repeater.rb +0 -54
  130. data/manual/repeatable_content/stamp.rb +0 -40
  131. data/manual/security/encryption.rb +0 -28
  132. data/manual/security/permissions.rb +0 -43
  133. data/manual/security/security.rb +0 -28
  134. data/manual/table.rb +0 -16
  135. data/manual/text/alignment.rb +0 -43
  136. data/manual/text/color.rb +0 -24
  137. data/manual/text/column_box.rb +0 -30
  138. data/manual/text/fallback_fonts.rb +0 -41
  139. data/manual/text/font.rb +0 -40
  140. data/manual/text/font_size.rb +0 -44
  141. data/manual/text/font_style.rb +0 -25
  142. data/manual/text/formatted_callbacks.rb +0 -70
  143. data/manual/text/formatted_text.rb +0 -61
  144. data/manual/text/free_flowing_text.rb +0 -50
  145. data/manual/text/inline.rb +0 -40
  146. data/manual/text/kerning_and_character_spacing.rb +0 -38
  147. data/manual/text/leading.rb +0 -24
  148. data/manual/text/line_wrapping.rb +0 -60
  149. data/manual/text/paragraph_indentation.rb +0 -31
  150. data/manual/text/positioned_text.rb +0 -37
  151. data/manual/text/registering_families.rb +0 -51
  152. data/manual/text/rendering_and_color.rb +0 -36
  153. data/manual/text/right_to_left_text.rb +0 -54
  154. data/manual/text/rotation.rb +0 -52
  155. data/manual/text/single_usage.rb +0 -36
  156. data/manual/text/text.rb +0 -75
  157. data/manual/text/text_box_excess.rb +0 -35
  158. data/manual/text/text_box_extensions.rb +0 -48
  159. data/manual/text/text_box_overflow.rb +0 -51
  160. data/manual/text/utf8.rb +0 -27
  161. data/manual/text/win_ansi_charset.rb +0 -62
  162. data/prawn.gemspec +0 -51
  163. data/spec/data/curves.pdf +0 -66
  164. data/spec/extensions/encoding_helpers.rb +0 -11
  165. data/spec/prawn/document/bounding_box_spec.rb +0 -550
  166. data/spec/prawn/document/column_box_spec.rb +0 -75
  167. data/spec/prawn/document/security_spec.rb +0 -176
  168. data/spec/prawn/document_annotations_spec.rb +0 -76
  169. data/spec/prawn/document_destinations_spec.rb +0 -15
  170. data/spec/prawn/document_grid_spec.rb +0 -99
  171. data/spec/prawn/document_reference_spec.rb +0 -27
  172. data/spec/prawn/document_span_spec.rb +0 -44
  173. data/spec/prawn/document_spec.rb +0 -805
  174. data/spec/prawn/font_metric_cache_spec.rb +0 -54
  175. data/spec/prawn/font_spec.rb +0 -544
  176. data/spec/prawn/graphics/blend_mode_spec.rb +0 -63
  177. data/spec/prawn/graphics/transparency_spec.rb +0 -81
  178. data/spec/prawn/graphics_spec.rb +0 -872
  179. data/spec/prawn/graphics_stroke_styles_spec.rb +0 -229
  180. data/spec/prawn/image_handler_spec.rb +0 -53
  181. data/spec/prawn/images/jpg_spec.rb +0 -20
  182. data/spec/prawn/images/png_spec.rb +0 -283
  183. data/spec/prawn/images_spec.rb +0 -229
  184. data/spec/prawn/measurements_extensions_spec.rb +0 -24
  185. data/spec/prawn/outline_spec.rb +0 -512
  186. data/spec/prawn/repeater_spec.rb +0 -166
  187. data/spec/prawn/soft_mask_spec.rb +0 -74
  188. data/spec/prawn/stamp_spec.rb +0 -173
  189. data/spec/prawn/text/box_spec.rb +0 -1110
  190. data/spec/prawn/text/formatted/arranger_spec.rb +0 -466
  191. data/spec/prawn/text/formatted/box_spec.rb +0 -849
  192. data/spec/prawn/text/formatted/fragment_spec.rb +0 -343
  193. data/spec/prawn/text/formatted/line_wrap_spec.rb +0 -495
  194. data/spec/prawn/text/formatted/parser_spec.rb +0 -697
  195. data/spec/prawn/text_draw_text_spec.rb +0 -150
  196. data/spec/prawn/text_rendering_mode_spec.rb +0 -48
  197. data/spec/prawn/text_spacing_spec.rb +0 -95
  198. data/spec/prawn/text_spec.rb +0 -603
  199. data/spec/prawn/text_with_inline_formatting_spec.rb +0 -35
  200. data/spec/prawn/transformation_stack_spec.rb +0 -66
  201. data/spec/prawn/view_spec.rb +0 -63
  202. data/spec/prawn_manual_spec.rb +0 -35
  203. data/spec/spec_helper.rb +0 -48
@@ -1,15 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # column_box.rb: Extends BoundingBox to allow for columns of text
4
- #
5
- # Author Paul Ostazeski.
6
- #
7
- # This is free software. Please see the LICENSE and COPYING files for details.
8
-
9
3
  require_relative 'bounding_box'
10
4
 
11
5
  module Prawn
12
- class Document
6
+ class Document # rubocop: disable Style/Documentation
13
7
  # @group Experimental API
14
8
 
15
9
  # A column box is a bounding box with the additional property that when
@@ -17,16 +11,26 @@ module Prawn
17
11
  # same page, and only flow to the next page when all the columns are
18
12
  # filled.
19
13
  #
20
- # column_box accepts the same parameters as bounding_box, as well as the
21
- # number of :columns and a :spacer (in points) between columns. If resetting
22
- # the top margin is desired on a new page (e.g. to allow for initial page
23
- # wide column titles) the option :reflow_margins => true can be set.
24
- #
25
- # Defaults are :columns = 3, :spacer = font_size, and
26
- # :reflow_margins => false
27
- #
28
- # Under PDF::Writer, "spacer" was known as "gutter"
14
+ # `column_box` accepts the same parameters as {bounding_box}, as well as the
15
+ # number of `:columns` and a `:spacer` (in points) between columns. If
16
+ # resetting the top margin is desired on a new page (e.g. to allow for
17
+ # initial page wide column titles) the option `reflow_margins: true` can be
18
+ # set.
29
19
  #
20
+ # @overload column_box(point, options = {})
21
+ # @param point [Array(Number, Number)]
22
+ # @param options [Hash{Symbol => any}]
23
+ # @option options :width [Number]
24
+ # width of the new column box, must be specified.
25
+ # @option options :height [Number]
26
+ # height of the new column box, stretchy box if omitted.
27
+ # @option options :hold_position [Boolean]
28
+ # whether to put cursor at the bottom of the column box.
29
+ # @option options :columns [Integer] (3)
30
+ # @option options :spacer [Number] (font_size)
31
+ # @option options :reflow_margins [Boolean] (false)
32
+ # @yieldparam parent_box [BoundingBox] parent bounding box
33
+ # @return [void]
30
34
  def column_box(*args, &block)
31
35
  init_column_box(block) do |parent_box|
32
36
  map_to_absolute!(args[0])
@@ -48,11 +52,20 @@ module Prawn
48
52
  @bounding_box = parent_box
49
53
  end
50
54
 
51
- # Implements the necessary functionality to allow Document#column_box to
55
+ # Implements the necessary functionality to allow {Document#column_box} to
52
56
  # work.
53
57
  #
54
58
  class ColumnBox < BoundingBox
55
- def initialize(document, parent, point, options = {}) #:nodoc:
59
+ # @param point [Array(Number, Number)]
60
+ # @param options [Hash{Symbol => any}]
61
+ # @option options :width [Number]
62
+ # width of the new column box, must be specified.
63
+ # @option options :height [Number]
64
+ # height of the new column box, stretchy box if omitted.
65
+ # @option options :columns [Integer] (3)
66
+ # @option options :spacer [Number] (font_size)
67
+ # @option options :reflow_margins [Boolean] (false)
68
+ def initialize(document, parent, point, options = {})
56
69
  super
57
70
  @columns = options[:columns] || 3
58
71
  @spacer = options[:spacer] || @document.font_size
@@ -60,39 +73,46 @@ module Prawn
60
73
  @reflow_margins = options[:reflow_margins]
61
74
  end
62
75
 
63
- # The column width, not the width of the whole box,
64
- # before left and/or right padding
76
+ # The column width, not the width of the whole box, before left and/or
77
+ # right padding.
78
+ #
79
+ # @return [Number]
65
80
  def bare_column_width
66
- (@width - @spacer * (@columns - 1)) / @columns
81
+ (@width - (@spacer * (@columns - 1))) / @columns
67
82
  end
68
83
 
69
- # The column width after padding.
70
- # Used to calculate how long a line of text can be.
84
+ # The column width after padding. Used to calculate how long a line of
85
+ # text can be.
71
86
  #
87
+ # @return [Number]
72
88
  def width
73
89
  bare_column_width - (@total_left_padding + @total_right_padding)
74
90
  end
75
91
 
76
92
  # Column width including the spacer.
77
93
  #
94
+ # @return [Number]
78
95
  def width_of_column
79
96
  bare_column_width + @spacer
80
97
  end
81
98
 
82
- # x coordinate of the left edge of the current column
99
+ # x coordinate of the left edge of the current column.
83
100
  #
101
+ # @return [Number]
84
102
  def left_side
85
103
  absolute_left + (width_of_column * @current_column)
86
104
  end
87
105
 
88
- # Relative position of the left edge of the current column
106
+ # Relative position of the left edge of the current column.
89
107
  #
108
+ # @return [Number]
90
109
  def left
91
110
  width_of_column * @current_column
92
111
  end
93
112
 
94
- # x co-orordinate of the right edge of the current column
113
+ # x coordinate of the right edge of the current column.
95
114
  #
115
+ # @return [Number]
96
116
  def right_side
97
117
  columns_from_right = @columns - (1 + @current_column)
98
118
  absolute_right - (width_of_column * columns_from_right)
@@ -100,12 +120,15 @@ module Prawn
100
120
 
101
121
  # Relative position of the right edge of the current column.
102
122
  #
123
+ # @return [Number]
103
124
  def right
104
125
  left + width
105
126
  end
106
127
 
107
128
  # Moves to the next column or starts a new page if currently positioned at
108
129
  # the rightmost column.
130
+ #
131
+ # @return [void]
109
132
  def move_past_bottom
110
133
  @current_column = (@current_column + 1) % @columns
111
134
  @document.y = @y
@@ -120,20 +143,32 @@ module Prawn
120
143
  # Override the padding functions so as not to split the padding amount
121
144
  # between all columns on the page.
122
145
 
146
+ # @private
147
+ # @param left_padding [Number]
148
+ # @return [void]
123
149
  def add_left_padding(left_padding)
124
150
  @total_left_padding += left_padding
125
151
  @x += left_padding
126
152
  end
127
153
 
154
+ # @private
155
+ # @param left_padding [Number]
156
+ # @return [void]
128
157
  def subtract_left_padding(left_padding)
129
158
  @total_left_padding -= left_padding
130
159
  @x -= left_padding
131
160
  end
132
161
 
162
+ # @private
163
+ # @param right_padding [Number]
164
+ # @return [void]
133
165
  def add_right_padding(right_padding)
134
166
  @total_right_padding += right_padding
135
167
  end
136
168
 
169
+ # @private
170
+ # @param right_padding [Number]
171
+ # @return [void]
137
172
  def subtract_right_padding(right_padding)
138
173
  @total_right_padding -= right_padding
139
174
  end
@@ -1,11 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # internals.rb : Implements document internals for Prawn
4
- #
5
- # Copyright August 2008, Gregory Brown. All Rights Reserved.
6
- #
7
- # This is free software. Please see the LICENSE and COPYING files for details.
8
-
9
3
  require 'forwardable'
10
4
 
11
5
  module Prawn
@@ -28,37 +22,52 @@ module Prawn
28
22
  on_page_create
29
23
  ] => :renderer
30
24
 
25
+ # Save current graphics state.
26
+ #
27
+ # @yield Restores graphic state after the block.
28
+ # @return [void]
31
29
  def save_graphics_state(state = nil, &block)
32
30
  save_transformation_stack
33
31
  renderer.save_graphics_state(state, &block)
32
+ restore_transformation_stack if block
34
33
  end
35
34
 
35
+ # Restore graphic state.
36
+ #
37
+ # @return [void]
36
38
  def restore_graphics_state
37
39
  restore_transformation_stack
38
40
  renderer.restore_graphics_state
39
41
  end
40
42
 
41
- # FIXME: This is a circular reference, because in theory Prawn should
42
- # be passing instances of renderer to PDF::Core::Page, but it's
43
- # passing Prawn::Document objects instead.
43
+ # @devnote
44
+ # FIXME: This is a circular reference, because in theory Prawn should be
45
+ # passing instances of renderer to PDF::Core::Page, but it's passing
46
+ # Prawn::Document objects instead.
44
47
  #
45
48
  # A proper design would probably not require Prawn to directly instantiate
46
49
  # PDF::Core::Page objects at all!
47
50
  delegate [:compression_enabled?] => :renderer
48
51
 
49
- # FIXME: More circular references in PDF::Core::Page.
52
+ # @devnote
53
+ # FIXME: More circular references in PDF::Core::Page.
50
54
  delegate %i[ref ref! deref] => :renderer
51
55
 
52
- # FIXME: Another circular reference, because we mix in a module from
53
- # PDF::Core to provide destinations, which in theory should not
54
- # rely on a Prawn::Document object but is currently wired up that way.
56
+ # @devnote
57
+ # FIXME: Another circular reference, because we mix in a module from
58
+ # PDF::Core to provide destinations, which in theory should not rely on
59
+ # a Prawn::Document object but is currently wired up that way.
55
60
  delegate [:names] => :renderer
56
61
 
57
- # FIXME: Circular reference because we mix PDF::Core::Text into
58
- # Prawn::Document. PDF::Core::Text should either be split up or
59
- # moved in its entirety back up into Prawn.
62
+ # @devnote
63
+ # FIXME: Circular reference because we mix PDF::Core::Text into
64
+ # Prawn::Document. PDF::Core::Text should either be split up or moved in
65
+ # its entirety back up into Prawn.
60
66
  delegate [:add_content] => :renderer
61
67
 
68
+ # Document renderer.
69
+ #
70
+ # @return [PDF::Core::Renderer]
62
71
  def renderer
63
72
  @renderer ||= PDF::Core::Renderer.new(state)
64
73
  end
@@ -7,27 +7,29 @@
7
7
  # This is free software. Please see the LICENSE and COPYING files for details.
8
8
 
9
9
  module Prawn
10
- class Document
10
+ class Document # rubocop: disable Style/Documentation
11
11
  # @group Stable API
12
12
 
13
- # A span is a special purpose bounding box that allows a column of
14
- # elements to be positioned relative to the margin_box.
13
+ # A span is a special purpose bounding box that allows a column of elements
14
+ # to be positioned relative to the margin_box.
15
15
  #
16
- # Arguments:
17
- # +width+:: The width of the column in PDF points
16
+ # This method is typically used for flowing a column of text from one page
17
+ # to the next.
18
18
  #
19
- # Options:
20
- # <tt>:position</tt>:: One of :left, :center, :right or an x offset
21
- #
22
- # This method is typically used for flowing a column of text from one
23
- # page to the next.
24
- #
25
- # span(350, :position => :center) do
26
- # text "Here's some centered text in a 350 point column. " * 100
27
- # end
19
+ # @example
20
+ # span(350, position: :center) do
21
+ # text "Here's some centered text in a 350 point column. " * 100
22
+ # end
28
23
  #
24
+ # @param width [Number] The width of the column in PDF points
25
+ # @param options [Hash{Symbol => any }]
26
+ # @option options :position [:left, :center, :right, Number]
27
+ # position of the span relative to the page margins.
28
+ # @yield
29
+ # @return [void]
30
+ # @raise [ArgumentError] For unsupported `:position` value.
29
31
  def span(width, options = {})
30
- Prawn.verify_options [:position], options
32
+ Prawn.verify_options([:position], options)
31
33
  original_position = y
32
34
 
33
35
  # FIXME: Any way to move this upstream?
@@ -36,7 +38,7 @@ module Prawn
36
38
  when :left
37
39
  margin_box.absolute_left
38
40
  when :center
39
- margin_box.absolute_left + margin_box.width / 2.0 - width / 2.0
41
+ margin_box.absolute_left + (margin_box.width / 2.0) - (width / 2.0)
40
42
  when :right
41
43
  margin_box.absolute_right - width
42
44
  when Numeric
@@ -50,9 +52,9 @@ module Prawn
50
52
  bounding_box(
51
53
  [
52
54
  left_boundary,
53
- margin_box.absolute_top
55
+ margin_box.absolute_top,
54
56
  ],
55
- width: width
57
+ width: width,
56
58
  ) do
57
59
  self.y = original_position
58
60
  yield