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,11 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # text/formatted/fragment.rb : Implements information about a formatted fragment
4
- #
5
- # Copyright March 2010, Daniel Nelson. All Rights Reserved.
6
- #
7
- # This is free software. Please see the LICENSE and COPYING files for details.
8
-
9
3
  module Prawn
10
4
  module Text
11
5
  module Formatted
@@ -14,11 +8,19 @@ module Prawn
14
8
  #
15
9
  # @private
16
10
  class Fragment
17
- attr_reader :format_state, :text
11
+ attr_reader :format_state
12
+ attr_reader :text
18
13
  attr_writer :width
19
- attr_accessor :line_height, :descender, :ascender
20
- attr_accessor :word_spacing, :left, :baseline
21
-
14
+ attr_accessor :line_height
15
+ attr_accessor :descender
16
+ attr_accessor :ascender
17
+ attr_accessor :word_spacing
18
+ attr_accessor :left
19
+ attr_accessor :baseline
20
+
21
+ # @param text [String]
22
+ # @param format_state [Hash{Symbol => any}]
23
+ # @param document [Prawn::Documnt]
22
24
  def initialize(text, format_state, document)
23
25
  @format_state = format_state
24
26
  @document = document
@@ -30,35 +32,58 @@ module Prawn
30
32
  @text = process_text(@original_text)
31
33
  end
32
34
 
35
+ # Width of fragment.
36
+ #
37
+ # @return [Number]
33
38
  def width
34
39
  if @word_spacing.zero? then @width
35
- else @width + @word_spacing * space_count
40
+ else
41
+ @width + (@word_spacing * space_count)
36
42
  end
37
43
  end
38
44
 
45
+ # Height of fragment.
46
+ #
47
+ # @return [Number]
39
48
  def height
40
49
  top - bottom
41
50
  end
42
51
 
52
+ # Is this a subscript fragment?
53
+ #
54
+ # @return [Boolean]
43
55
  def subscript?
44
56
  styles.include?(:subscript)
45
57
  end
46
58
 
59
+ # Is this a superscript fragment?
60
+ #
61
+ # @return [Boolean]
47
62
  def superscript?
48
63
  styles.include?(:superscript)
49
64
  end
50
65
 
66
+ # Vertical offset of the fragment.
67
+ #
68
+ # @return [Number]
51
69
  def y_offset
52
70
  if subscript? then -descender
53
71
  elsif superscript? then 0.85 * ascender
54
- else 0
72
+ else
73
+ 0
55
74
  end
56
75
  end
57
76
 
77
+ # Fragment bounding box, relative to the containing bounding box.
78
+ #
79
+ # @return [Array(Number, Number, Number, Number)]
58
80
  def bounding_box
59
81
  [left, bottom, right, top]
60
82
  end
61
83
 
84
+ # Fragment bounding box, relative to the containing page.
85
+ #
86
+ # @return [Array(Number, Number, Number, Number)]
62
87
  def absolute_bounding_box
63
88
  box = bounding_box
64
89
  box[0] += @document.bounds.absolute_left
@@ -68,53 +93,90 @@ module Prawn
68
93
  box
69
94
  end
70
95
 
96
+ # Underline endpoints.
97
+ #
98
+ # @return [Array(Array(Number, Number), Array(Number, Number))]
71
99
  def underline_points
72
100
  y = baseline - 1.25
73
101
  [[left, y], [right, y]]
74
102
  end
75
103
 
104
+ # Strikethrough endpoints.
105
+ #
106
+ # @return [Array(Array(Number, Number), Array(Number, Number))]
76
107
  def strikethrough_points
77
- y = baseline + ascender * 0.3
108
+ y = baseline + (ascender * 0.3)
78
109
  [[left, y], [right, y]]
79
110
  end
80
111
 
112
+ # Fragment font styles.
113
+ #
114
+ # @return [Array<Symbol>]
81
115
  def styles
82
116
  @format_state[:styles] || []
83
117
  end
84
118
 
119
+ # Fragment link.
120
+ #
121
+ # @return [String, nil]
85
122
  def link
86
123
  @format_state[:link]
87
124
  end
88
125
 
126
+ # Anchor.
127
+ #
128
+ # @return [PDF::Core::Reference, Array, Hash]
89
129
  def anchor
90
130
  @format_state[:anchor]
91
131
  end
92
132
 
133
+ # Local destination.
134
+ #
135
+ # @return [String]
93
136
  def local
94
137
  @format_state[:local]
95
138
  end
96
139
 
140
+ # Fragment color.
141
+ #
142
+ # @return [Color]
97
143
  def color
98
144
  @format_state[:color]
99
145
  end
100
146
 
147
+ # Fragment font name.
148
+ #
149
+ # @return [String]
101
150
  def font
102
151
  @format_state[:font]
103
152
  end
104
153
 
154
+ # Font size.
155
+ #
156
+ # @return [Number]
105
157
  def size
106
158
  @format_state[:size]
107
159
  end
108
160
 
161
+ # Character spacing.
162
+ #
163
+ # @return [Number]
109
164
  def character_spacing
110
165
  @format_state[:character_spacing] ||
111
166
  @document.character_spacing
112
167
  end
113
168
 
169
+ # Text direction.
170
+ #
171
+ # @return [:ltr, :rtl]
114
172
  def direction
115
173
  @format_state[:direction]
116
174
  end
117
175
 
176
+ # Set default text direction.
177
+ #
178
+ # @param direction [:ltr, :rtl]
179
+ # @return [void]
118
180
  def default_direction=(direction)
119
181
  unless @format_state[:direction]
120
182
  @format_state[:direction] = direction
@@ -122,15 +184,24 @@ module Prawn
122
184
  end
123
185
  end
124
186
 
187
+ # Keep trailing spaces.
188
+ #
189
+ # @return [void]
125
190
  def include_trailing_white_space!
126
191
  @format_state.delete(:exclude_trailing_white_space)
127
192
  @text = process_text(@original_text)
128
193
  end
129
194
 
195
+ # Number of spaces in the text.
196
+ #
197
+ # @return [Integer]
130
198
  def space_count
131
199
  @text.count(' ')
132
200
  end
133
201
 
202
+ # Callbacks.
203
+ #
204
+ # @return [Array]
134
205
  def callback_objects
135
206
  callback = @format_state[:callback]
136
207
  if callback.nil?
@@ -142,62 +213,107 @@ module Prawn
142
213
  end
143
214
  end
144
215
 
216
+ # Horizontal coordinate of the right side of the fragment.
217
+ #
218
+ # @return [Number]
145
219
  def right
146
220
  left + width
147
221
  end
148
222
 
223
+ # Vertical coordinate of the top side of the fragment.
224
+ #
225
+ # @return [Number]
149
226
  def top
150
227
  baseline + ascender
151
228
  end
152
229
 
230
+ # Vertical coordinate of the bottom side of the fragment.
231
+ #
232
+ # @return [Number]
153
233
  def bottom
154
234
  baseline - descender
155
235
  end
156
236
 
237
+ # Coordinates of the top left corner of the fragment.
238
+ #
239
+ # @return [Array(Number, Number)]
157
240
  def top_left
158
241
  [left, top]
159
242
  end
160
243
 
244
+ # Coordinates of the top right corner of the fragment.
245
+ #
246
+ # @return [Array(Number, Number)]
161
247
  def top_right
162
248
  [right, top]
163
249
  end
164
250
 
251
+ # Coordinates of the bottom right corner of the fragment.
252
+ #
253
+ # @return [Array(Number, Number)]
165
254
  def bottom_right
166
255
  [right, bottom]
167
256
  end
168
257
 
258
+ # Coordinates of the bottom left corner of the fragment.
259
+ #
260
+ # @return [Array(Number, Number)]
169
261
  def bottom_left
170
262
  [left, bottom]
171
263
  end
172
264
 
265
+ # Absolute horizontal coordinate of the left side of the fragment.
266
+ #
267
+ # @return [Number]
173
268
  def absolute_left
174
269
  absolute_bounding_box[0]
175
270
  end
176
271
 
272
+ # Absolute horizontal coordinate of the right side of the fragment.
273
+ #
274
+ # @return [Number]
177
275
  def absolute_right
178
276
  absolute_bounding_box[2]
179
277
  end
180
278
 
279
+ # Absolute vertical coordinate of the top side of the fragment.
280
+ #
281
+ # @return [Number]
181
282
  def absolute_top
182
283
  absolute_bounding_box[3]
183
284
  end
184
285
 
286
+ # Absolute vertical coordinate of the bottom side of the fragment.
287
+ #
288
+ # @return [Number]
185
289
  def absolute_bottom
186
290
  absolute_bounding_box[1]
187
291
  end
188
292
 
293
+ # Absolute coordinates of the top left corner of the fragment.
294
+ #
295
+ # @return [Array(Number, Number)]
189
296
  def absolute_top_left
190
297
  [absolute_left, absolute_top]
191
298
  end
192
299
 
300
+ # Absolute coordinates of the top right corner of the fragment.
301
+ #
302
+ # @return [Array(Number, Number)]
193
303
  def absolute_top_right
194
304
  [absolute_right, absolute_top]
195
305
  end
196
306
 
307
+ # Absolute coordinates of the bottom left corner of the fragment.
308
+ #
309
+ # @return [Array(Number, Number)]
197
310
  def absolute_bottom_left
198
311
  [absolute_left, absolute_bottom]
199
312
  end
200
313
 
314
+ # Absolute coordinates of the bottom right corner of the fragment.
315
+ #
316
+ # @return [Array(Number, Number)]
201
317
  def absolute_bottom_right
202
318
  [absolute_right, absolute_bottom]
203
319
  end
@@ -211,7 +327,7 @@ module Prawn
211
327
  string = string.rstrip
212
328
 
213
329
  if soft_hyphens_need_processing?(string)
214
- string = process_soft_hyphens(string[0..-2]) + string[-1..-1]
330
+ string = process_soft_hyphens(string[0..-2]) + string[-1..]
215
331
  end
216
332
  elsif soft_hyphens_need_processing?(string)
217
333
  string = process_soft_hyphens(string)
@@ -1,40 +1,49 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # core/text/formatted/line_wrap.rb : Implements individual line wrapping of
4
- # formatted text
5
- #
6
- # Copyright February 2010, Daniel Nelson. All Rights Reserved.
7
- #
8
- # This is free software. Please see the LICENSE and COPYING files for details.
9
- #
10
-
11
3
  module Prawn
12
4
  module Text
13
- module Formatted #:nodoc:
5
+ module Formatted
6
+ # Implements individual line wrapping of formatted text.
7
+ #
14
8
  # @private
15
- class LineWrap #:nodoc:
16
- # The width of the last wrapped line
9
+ class LineWrap
10
+ # The width of the last wrapped line.
17
11
  #
12
+ # @return [Number]
18
13
  def width
19
14
  @accumulated_width || 0
20
15
  end
21
16
 
22
- # The number of spaces in the last wrapped line
17
+ # The number of spaces in the last wrapped line.
18
+ # @return [Integer]
23
19
  attr_reader :space_count
24
20
 
25
- # Whether this line is the last line in the paragraph
21
+ # Whether this line is the last line in the paragraph.
22
+ #
23
+ # @return [Boolean]
26
24
  def paragraph_finished?
27
25
  @newline_encountered || next_string_newline? || @arranger.finished?
28
26
  end
29
27
 
28
+ # Break the fragment into tokens.
29
+ #
30
+ # @param fragment [String]
31
+ # @return [Array<String>]
30
32
  def tokenize(fragment)
31
33
  fragment.scan(scan_pattern(fragment.encoding))
32
34
  end
33
35
 
34
- # Work in conjunction with the PDF::Formatted::Arranger
35
- # defined in the :arranger option to determine what formatted text
36
- # will fit within the width defined by the :width option
36
+ # Work in conjunction with the {Prawn::Text::Formatted::Arranger}
37
+ # defined in the `:arranger` option to determine what formatted text
38
+ # will fit within the width defined by the `:width` option.
37
39
  #
40
+ # @param options [Hash{Symbol => any}]
41
+ # @option options :document [Prawn::Document]
42
+ # @option options :kerning [Boolean]
43
+ # @option options :width [Number]
44
+ # @option options :disable_wrap_by_char [Boolean]
45
+ # @option options :arranger [Prawn::Text::Formatted::Arranger]
46
+ # @return [String]
38
47
  def wrap_line(options)
39
48
  initialize_line(options)
40
49
 
@@ -138,7 +147,7 @@ module Prawn
138
147
  "[^#{ebc}]+",
139
148
  "[#{ews}]+",
140
149
  "#{ehy}+[^#{ebc}]*",
141
- eshy.to_s
150
+ eshy.to_s,
142
151
  ]
143
152
 
144
153
  pattern = patterns
@@ -154,17 +163,17 @@ module Prawn
154
163
  #
155
164
  def word_division_scan_pattern(encoding = ::Encoding::UTF_8)
156
165
  common_whitespaces =
157
- ["\t", "\n", "\v", "\r", ' '].map do |c|
166
+ ["\t", "\n", "\v", "\r", ' '].map { |c|
158
167
  c.encode(encoding)
159
- end
168
+ }
160
169
 
161
170
  Regexp.union(
162
171
  common_whitespaces +
163
172
  [
164
173
  zero_width_space(encoding),
165
174
  soft_hyphen(encoding),
166
- hyphen(encoding)
167
- ].compact
175
+ hyphen(encoding),
176
+ ].compact,
168
177
  )
169
178
  end
170
179
 
@@ -179,7 +188,7 @@ module Prawn
179
188
  [
180
189
  whitespace(encoding),
181
190
  soft_hyphen(encoding),
182
- hyphen(encoding)
191
+ hyphen(encoding),
183
192
  ].join('')
184
193
  end
185
194
 
@@ -230,7 +239,7 @@ module Prawn
230
239
  else
231
240
  update_output_based_on_last_fragment(
232
241
  fragment,
233
- soft_hyphen(fragment.encoding)
242
+ soft_hyphen(fragment.encoding),
234
243
  )
235
244
  update_line_status_based_on_last_output
236
245
  pull_preceding_fragment_to_join_this_one?(fragment)
@@ -251,7 +260,7 @@ module Prawn
251
260
  @arranger.update_last_string(
252
261
  @fragment_output,
253
262
  remaining_text,
254
- normalized_soft_hyphen
263
+ normalized_soft_hyphen,
255
264
  )
256
265
  end
257
266