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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/prawn/document/bounding_box.rb +213 -141
- data/lib/prawn/document/column_box.rb +61 -26
- data/lib/prawn/document/internals.rb +25 -16
- data/lib/prawn/document/span.rb +20 -18
- data/lib/prawn/document.rb +257 -171
- data/lib/prawn/encoding.rb +2 -5
- data/lib/prawn/errors.rb +23 -34
- data/lib/prawn/font.rb +248 -135
- data/lib/prawn/font_metric_cache.rb +11 -10
- data/lib/prawn/fonts/afm.rb +85 -45
- data/lib/prawn/fonts/dfont.rb +7 -1
- data/lib/prawn/fonts/otf.rb +4 -1
- data/lib/prawn/fonts/to_unicode_cmap.rb +151 -0
- data/lib/prawn/fonts/ttc.rb +7 -2
- data/lib/prawn/fonts/ttf.rb +305 -93
- data/lib/prawn/fonts.rb +14 -0
- data/lib/prawn/graphics/blend_mode.rb +25 -28
- data/lib/prawn/graphics/cap_style.rb +9 -12
- data/lib/prawn/graphics/color.rb +57 -34
- data/lib/prawn/graphics/dash.rb +45 -42
- data/lib/prawn/graphics/join_style.rb +17 -11
- data/lib/prawn/graphics/patterns.rb +190 -69
- data/lib/prawn/graphics/transformation.rb +48 -41
- data/lib/prawn/graphics/transparency.rb +16 -40
- data/lib/prawn/graphics.rb +363 -253
- data/lib/prawn/grid.rb +184 -57
- data/lib/prawn/image_handler.rb +27 -10
- data/lib/prawn/images/image.rb +8 -10
- data/lib/prawn/images/jpg.rb +42 -19
- data/lib/prawn/images/png.rb +92 -41
- data/lib/prawn/images.rb +44 -57
- data/lib/prawn/measurement_extensions.rb +39 -8
- data/lib/prawn/measurements.rb +60 -5
- data/lib/prawn/outline.rb +114 -108
- data/lib/prawn/repeater.rb +51 -35
- data/lib/prawn/security/arcfour.rb +4 -4
- data/lib/prawn/security.rb +75 -70
- data/lib/prawn/soft_mask.rb +42 -30
- data/lib/prawn/stamp.rb +38 -42
- data/lib/prawn/text/box.rb +146 -96
- data/lib/prawn/text/formatted/arranger.rb +87 -26
- data/lib/prawn/text/formatted/box.rb +221 -150
- data/lib/prawn/text/formatted/fragment.rb +130 -14
- data/lib/prawn/text/formatted/line_wrap.rb +33 -24
- data/lib/prawn/text/formatted/parser.rb +112 -72
- data/lib/prawn/text/formatted/wrap.rb +12 -17
- data/lib/prawn/text/formatted.rb +75 -0
- data/lib/prawn/text.rb +441 -196
- data/lib/prawn/transformation_stack.rb +29 -10
- data/lib/prawn/utilities.rb +13 -13
- data/lib/prawn/version.rb +2 -1
- data/lib/prawn/view.rb +68 -53
- data/lib/prawn.rb +23 -18
- data.tar.gz.sig +0 -0
- metadata +54 -177
- metadata.gz.sig +0 -0
- data/.yardopts +0 -10
- data/Gemfile +0 -5
- data/Rakefile +0 -25
- data/manual/absolute_position.pdf +0 -0
- data/manual/basic_concepts/adding_pages.rb +0 -26
- data/manual/basic_concepts/basic_concepts.rb +0 -43
- data/manual/basic_concepts/creation.rb +0 -38
- data/manual/basic_concepts/cursor.rb +0 -32
- data/manual/basic_concepts/measurement.rb +0 -24
- data/manual/basic_concepts/origin.rb +0 -37
- data/manual/basic_concepts/other_cursor_helpers.rb +0 -39
- data/manual/basic_concepts/view.rb +0 -48
- data/manual/bounding_box/bounding_box.rb +0 -41
- data/manual/bounding_box/bounds.rb +0 -48
- data/manual/bounding_box/canvas.rb +0 -23
- data/manual/bounding_box/creation.rb +0 -22
- data/manual/bounding_box/indentation.rb +0 -45
- data/manual/bounding_box/nesting.rb +0 -52
- data/manual/bounding_box/russian_boxes.rb +0 -40
- data/manual/bounding_box/stretchy.rb +0 -29
- data/manual/contents.rb +0 -35
- data/manual/cover.rb +0 -43
- data/manual/document_and_page_options/background.rb +0 -29
- data/manual/document_and_page_options/document_and_page_options.rb +0 -34
- data/manual/document_and_page_options/metadata.rb +0 -25
- data/manual/document_and_page_options/page_margins.rb +0 -36
- data/manual/document_and_page_options/page_size.rb +0 -34
- data/manual/document_and_page_options/print_scaling.rb +0 -23
- data/manual/example_helper.rb +0 -8
- data/manual/graphics/blend_mode.rb +0 -52
- data/manual/graphics/circle_and_ellipse.rb +0 -21
- data/manual/graphics/color.rb +0 -22
- data/manual/graphics/common_lines.rb +0 -29
- data/manual/graphics/fill_and_stroke.rb +0 -41
- data/manual/graphics/fill_rules.rb +0 -38
- data/manual/graphics/gradients.rb +0 -43
- data/manual/graphics/graphics.rb +0 -64
- data/manual/graphics/helper.rb +0 -34
- data/manual/graphics/line_width.rb +0 -36
- data/manual/graphics/lines_and_curves.rb +0 -40
- data/manual/graphics/polygon.rb +0 -27
- data/manual/graphics/rectangle.rb +0 -20
- data/manual/graphics/rotate.rb +0 -25
- data/manual/graphics/scale.rb +0 -42
- data/manual/graphics/soft_masks.rb +0 -44
- data/manual/graphics/stroke_cap.rb +0 -30
- data/manual/graphics/stroke_dash.rb +0 -47
- data/manual/graphics/stroke_join.rb +0 -29
- data/manual/graphics/translate.rb +0 -29
- data/manual/graphics/transparency.rb +0 -33
- data/manual/how_to_read_this_manual.rb +0 -39
- data/manual/images/absolute_position.rb +0 -22
- data/manual/images/fit.rb +0 -20
- data/manual/images/horizontal.rb +0 -24
- data/manual/images/images.rb +0 -41
- data/manual/images/plain_image.rb +0 -17
- data/manual/images/scale.rb +0 -21
- data/manual/images/vertical.rb +0 -30
- data/manual/images/width_and_height.rb +0 -24
- data/manual/layout/boxes.rb +0 -26
- data/manual/layout/content.rb +0 -24
- data/manual/layout/layout.rb +0 -27
- data/manual/layout/simple_grid.rb +0 -22
- data/manual/outline/add_subsection_to.rb +0 -60
- data/manual/outline/insert_section_after.rb +0 -46
- data/manual/outline/outline.rb +0 -33
- data/manual/outline/sections_and_pages.rb +0 -66
- data/manual/repeatable_content/alternate_page_numbering.rb +0 -36
- data/manual/repeatable_content/page_numbering.rb +0 -55
- data/manual/repeatable_content/repeatable_content.rb +0 -35
- data/manual/repeatable_content/repeater.rb +0 -54
- data/manual/repeatable_content/stamp.rb +0 -40
- data/manual/security/encryption.rb +0 -28
- data/manual/security/permissions.rb +0 -43
- data/manual/security/security.rb +0 -28
- data/manual/table.rb +0 -16
- data/manual/text/alignment.rb +0 -43
- data/manual/text/color.rb +0 -24
- data/manual/text/column_box.rb +0 -30
- data/manual/text/fallback_fonts.rb +0 -41
- data/manual/text/font.rb +0 -40
- data/manual/text/font_size.rb +0 -44
- data/manual/text/font_style.rb +0 -25
- data/manual/text/formatted_callbacks.rb +0 -70
- data/manual/text/formatted_text.rb +0 -61
- data/manual/text/free_flowing_text.rb +0 -50
- data/manual/text/inline.rb +0 -40
- data/manual/text/kerning_and_character_spacing.rb +0 -38
- data/manual/text/leading.rb +0 -24
- data/manual/text/line_wrapping.rb +0 -60
- data/manual/text/paragraph_indentation.rb +0 -31
- data/manual/text/positioned_text.rb +0 -37
- data/manual/text/registering_families.rb +0 -51
- data/manual/text/rendering_and_color.rb +0 -36
- data/manual/text/right_to_left_text.rb +0 -54
- data/manual/text/rotation.rb +0 -52
- data/manual/text/single_usage.rb +0 -36
- data/manual/text/text.rb +0 -75
- data/manual/text/text_box_excess.rb +0 -35
- data/manual/text/text_box_extensions.rb +0 -48
- data/manual/text/text_box_overflow.rb +0 -51
- data/manual/text/utf8.rb +0 -27
- data/manual/text/win_ansi_charset.rb +0 -62
- data/prawn.gemspec +0 -51
- data/spec/data/curves.pdf +0 -66
- data/spec/extensions/encoding_helpers.rb +0 -11
- data/spec/prawn/document/bounding_box_spec.rb +0 -550
- data/spec/prawn/document/column_box_spec.rb +0 -75
- data/spec/prawn/document/security_spec.rb +0 -176
- data/spec/prawn/document_annotations_spec.rb +0 -76
- data/spec/prawn/document_destinations_spec.rb +0 -15
- data/spec/prawn/document_grid_spec.rb +0 -99
- data/spec/prawn/document_reference_spec.rb +0 -27
- data/spec/prawn/document_span_spec.rb +0 -44
- data/spec/prawn/document_spec.rb +0 -805
- data/spec/prawn/font_metric_cache_spec.rb +0 -54
- data/spec/prawn/font_spec.rb +0 -544
- data/spec/prawn/graphics/blend_mode_spec.rb +0 -63
- data/spec/prawn/graphics/transparency_spec.rb +0 -81
- data/spec/prawn/graphics_spec.rb +0 -872
- data/spec/prawn/graphics_stroke_styles_spec.rb +0 -229
- data/spec/prawn/image_handler_spec.rb +0 -53
- data/spec/prawn/images/jpg_spec.rb +0 -20
- data/spec/prawn/images/png_spec.rb +0 -283
- data/spec/prawn/images_spec.rb +0 -229
- data/spec/prawn/measurements_extensions_spec.rb +0 -24
- data/spec/prawn/outline_spec.rb +0 -512
- data/spec/prawn/repeater_spec.rb +0 -166
- data/spec/prawn/soft_mask_spec.rb +0 -74
- data/spec/prawn/stamp_spec.rb +0 -173
- data/spec/prawn/text/box_spec.rb +0 -1110
- data/spec/prawn/text/formatted/arranger_spec.rb +0 -466
- data/spec/prawn/text/formatted/box_spec.rb +0 -849
- data/spec/prawn/text/formatted/fragment_spec.rb +0 -343
- data/spec/prawn/text/formatted/line_wrap_spec.rb +0 -495
- data/spec/prawn/text/formatted/parser_spec.rb +0 -697
- data/spec/prawn/text_draw_text_spec.rb +0 -150
- data/spec/prawn/text_rendering_mode_spec.rb +0 -48
- data/spec/prawn/text_spacing_spec.rb +0 -95
- data/spec/prawn/text_spec.rb +0 -603
- data/spec/prawn/text_with_inline_formatting_spec.rb +0 -35
- data/spec/prawn/transformation_stack_spec.rb +0 -66
- data/spec/prawn/view_spec.rb +0 -63
- data/spec/prawn_manual_spec.rb +0 -35
- 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
|
22
|
-
# the top margin is desired on a new page (e.g. to allow for
|
23
|
-
# wide column titles) the option :
|
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
|
-
|
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
|
-
#
|
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
|
-
#
|
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
|
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
|
-
#
|
42
|
-
#
|
43
|
-
#
|
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
|
-
#
|
52
|
+
# @devnote
|
53
|
+
# FIXME: More circular references in PDF::Core::Page.
|
50
54
|
delegate %i[ref ref! deref] => :renderer
|
51
55
|
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
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
|
-
#
|
58
|
-
#
|
59
|
-
#
|
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
|
data/lib/prawn/document/span.rb
CHANGED
@@ -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
|
-
#
|
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
|
-
#
|
17
|
-
#
|
16
|
+
# This method is typically used for flowing a column of text from one page
|
17
|
+
# to the next.
|
18
18
|
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
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
|
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
|