prawn 2.1.0 → 2.2.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 (278) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +2 -0
  3. data.tar.gz.sig +0 -0
  4. data/Gemfile +1 -9
  5. data/Rakefile +12 -22
  6. data/lib/prawn.rb +29 -48
  7. data/lib/prawn/document.rb +148 -123
  8. data/lib/prawn/document/bounding_box.rb +33 -26
  9. data/lib/prawn/document/column_box.rb +5 -7
  10. data/lib/prawn/document/internals.rb +6 -6
  11. data/lib/prawn/document/span.rb +20 -17
  12. data/lib/prawn/encoding.rb +65 -67
  13. data/lib/prawn/errors.rb +10 -7
  14. data/lib/prawn/font.rb +78 -62
  15. data/lib/prawn/font/afm.rb +93 -66
  16. data/lib/prawn/font/dfont.rb +2 -10
  17. data/lib/prawn/font/ttc.rb +34 -0
  18. data/lib/prawn/font/ttf.rb +73 -65
  19. data/lib/prawn/font_metric_cache.rb +9 -8
  20. data/lib/prawn/graphics.rb +110 -70
  21. data/lib/prawn/graphics/blend_mode.rb +7 -8
  22. data/lib/prawn/graphics/cap_style.rb +2 -4
  23. data/lib/prawn/graphics/color.rb +23 -26
  24. data/lib/prawn/graphics/dash.rb +22 -12
  25. data/lib/prawn/graphics/join_style.rb +8 -4
  26. data/lib/prawn/graphics/patterns.rb +185 -96
  27. data/lib/prawn/graphics/transformation.rb +11 -9
  28. data/lib/prawn/graphics/transparency.rb +15 -13
  29. data/lib/prawn/grid.rb +20 -20
  30. data/lib/prawn/image_handler.rb +4 -6
  31. data/lib/prawn/images.rb +22 -15
  32. data/lib/prawn/images/image.rb +0 -1
  33. data/lib/prawn/images/jpg.rb +26 -22
  34. data/lib/prawn/images/png.rb +60 -57
  35. data/lib/prawn/measurement_extensions.rb +8 -9
  36. data/lib/prawn/measurements.rb +14 -15
  37. data/lib/prawn/outline.rb +96 -78
  38. data/lib/prawn/repeater.rb +12 -10
  39. data/lib/prawn/security.rb +66 -48
  40. data/lib/prawn/security/arcfour.rb +1 -3
  41. data/lib/prawn/soft_mask.rb +23 -25
  42. data/lib/prawn/stamp.rb +16 -12
  43. data/lib/prawn/text.rb +59 -45
  44. data/lib/prawn/text/box.rb +9 -8
  45. data/lib/prawn/text/formatted.rb +4 -6
  46. data/lib/prawn/text/formatted/arranger.rb +51 -30
  47. data/lib/prawn/text/formatted/box.rb +112 -88
  48. data/lib/prawn/text/formatted/fragment.rb +10 -15
  49. data/lib/prawn/text/formatted/line_wrap.rb +118 -61
  50. data/lib/prawn/text/formatted/parser.rb +134 -110
  51. data/lib/prawn/text/formatted/wrap.rb +42 -32
  52. data/lib/prawn/transformation_stack.rb +3 -4
  53. data/lib/prawn/utilities.rb +6 -21
  54. data/lib/prawn/version.rb +1 -3
  55. data/lib/prawn/view.rb +4 -2
  56. data/manual/basic_concepts/adding_pages.rb +4 -7
  57. data/manual/basic_concepts/basic_concepts.rb +29 -22
  58. data/manual/basic_concepts/creation.rb +8 -11
  59. data/manual/basic_concepts/cursor.rb +2 -5
  60. data/manual/basic_concepts/measurement.rb +3 -6
  61. data/manual/basic_concepts/origin.rb +3 -6
  62. data/manual/basic_concepts/other_cursor_helpers.rb +9 -12
  63. data/manual/basic_concepts/view.rb +20 -16
  64. data/manual/bounding_box/bounding_box.rb +27 -24
  65. data/manual/bounding_box/bounds.rb +9 -12
  66. data/manual/bounding_box/canvas.rb +2 -5
  67. data/manual/bounding_box/creation.rb +4 -7
  68. data/manual/bounding_box/indentation.rb +12 -15
  69. data/manual/bounding_box/nesting.rb +22 -17
  70. data/manual/bounding_box/russian_boxes.rb +8 -9
  71. data/manual/bounding_box/stretchy.rb +10 -13
  72. data/manual/contents.rb +26 -22
  73. data/manual/cover.rb +22 -20
  74. data/manual/document_and_page_options/background.rb +9 -13
  75. data/manual/document_and_page_options/document_and_page_options.rb +23 -20
  76. data/manual/document_and_page_options/metadata.rb +16 -16
  77. data/manual/document_and_page_options/page_margins.rb +16 -20
  78. data/manual/document_and_page_options/page_size.rb +11 -12
  79. data/manual/document_and_page_options/print_scaling.rb +15 -15
  80. data/manual/example_helper.rb +2 -4
  81. data/manual/graphics/blend_mode.rb +10 -9
  82. data/manual/graphics/circle_and_ellipse.rb +2 -5
  83. data/manual/graphics/color.rb +5 -9
  84. data/manual/graphics/common_lines.rb +5 -8
  85. data/manual/graphics/fill_and_stroke.rb +2 -5
  86. data/manual/graphics/fill_rules.rb +7 -10
  87. data/manual/graphics/gradients.rb +25 -21
  88. data/manual/graphics/graphics.rb +49 -43
  89. data/manual/graphics/helper.rb +10 -9
  90. data/manual/graphics/line_width.rb +5 -7
  91. data/manual/graphics/lines_and_curves.rb +5 -8
  92. data/manual/graphics/polygon.rb +4 -8
  93. data/manual/graphics/rectangle.rb +2 -5
  94. data/manual/graphics/rotate.rb +4 -7
  95. data/manual/graphics/scale.rb +12 -15
  96. data/manual/graphics/soft_masks.rb +1 -4
  97. data/manual/graphics/stroke_cap.rb +3 -6
  98. data/manual/graphics/stroke_dash.rb +9 -12
  99. data/manual/graphics/stroke_join.rb +2 -5
  100. data/manual/graphics/translate.rb +7 -10
  101. data/manual/graphics/transparency.rb +5 -8
  102. data/manual/how_to_read_this_manual.rb +4 -6
  103. data/manual/images/absolute_position.rb +4 -7
  104. data/manual/images/fit.rb +5 -8
  105. data/manual/images/horizontal.rb +6 -9
  106. data/manual/images/images.rb +25 -23
  107. data/manual/images/plain_image.rb +3 -6
  108. data/manual/images/scale.rb +7 -10
  109. data/manual/images/vertical.rb +10 -13
  110. data/manual/images/width_and_height.rb +8 -11
  111. data/manual/layout/boxes.rb +3 -6
  112. data/manual/layout/content.rb +5 -8
  113. data/manual/layout/layout.rb +16 -16
  114. data/manual/layout/simple_grid.rb +4 -7
  115. data/manual/outline/add_subsection_to.rb +18 -21
  116. data/manual/outline/insert_section_after.rb +13 -16
  117. data/manual/outline/outline.rb +19 -17
  118. data/manual/outline/sections_and_pages.rb +15 -18
  119. data/manual/repeatable_content/alternate_page_numbering.rb +19 -17
  120. data/manual/repeatable_content/page_numbering.rb +15 -16
  121. data/manual/repeatable_content/repeatable_content.rb +23 -19
  122. data/manual/repeatable_content/repeater.rb +12 -15
  123. data/manual/repeatable_content/stamp.rb +12 -15
  124. data/manual/security/encryption.rb +7 -10
  125. data/manual/security/permissions.rb +17 -14
  126. data/manual/security/security.rb +17 -16
  127. data/manual/table.rb +2 -4
  128. data/manual/text/alignment.rb +14 -17
  129. data/manual/text/color.rb +10 -11
  130. data/manual/text/column_box.rb +5 -8
  131. data/manual/text/fallback_fonts.rb +23 -21
  132. data/manual/text/font.rb +9 -12
  133. data/manual/text/font_size.rb +11 -14
  134. data/manual/text/font_style.rb +4 -7
  135. data/manual/text/formatted_callbacks.rb +23 -21
  136. data/manual/text/formatted_text.rb +31 -25
  137. data/manual/text/free_flowing_text.rb +18 -21
  138. data/manual/text/inline.rb +16 -19
  139. data/manual/text/kerning_and_character_spacing.rb +12 -15
  140. data/manual/text/leading.rb +5 -8
  141. data/manual/text/line_wrapping.rb +33 -17
  142. data/manual/text/paragraph_indentation.rb +11 -14
  143. data/manual/text/positioned_text.rb +13 -16
  144. data/manual/text/registering_families.rb +16 -19
  145. data/manual/text/rendering_and_color.rb +7 -10
  146. data/manual/text/right_to_left_text.rb +24 -19
  147. data/manual/text/rotation.rb +26 -23
  148. data/manual/text/single_usage.rb +6 -9
  149. data/manual/text/text.rb +56 -52
  150. data/manual/text/text_box_excess.rb +18 -17
  151. data/manual/text/text_box_extensions.rb +16 -15
  152. data/manual/text/text_box_overflow.rb +15 -18
  153. data/manual/text/utf8.rb +9 -12
  154. data/manual/text/win_ansi_charset.rb +18 -19
  155. data/prawn.gemspec +37 -27
  156. data/spec/extensions/encoding_helpers.rb +0 -2
  157. data/spec/manual_spec.rb +33 -0
  158. data/spec/prawn/document/bounding_box_spec.rb +546 -0
  159. data/spec/prawn/document/column_box_spec.rb +73 -0
  160. data/spec/prawn/document/security_spec.rb +173 -0
  161. data/spec/prawn/document_annotations_spec.rb +74 -0
  162. data/spec/prawn/document_destinations_spec.rb +13 -0
  163. data/spec/prawn/document_grid_spec.rb +96 -0
  164. data/spec/prawn/document_reference_spec.rb +25 -0
  165. data/spec/prawn/document_span_spec.rb +34 -0
  166. data/spec/prawn/document_spec.rb +751 -0
  167. data/spec/prawn/font_metric_cache_spec.rb +52 -0
  168. data/spec/prawn/font_spec.rb +513 -0
  169. data/spec/prawn/graphics/blend_mode_spec.rb +61 -0
  170. data/spec/prawn/graphics/transparency_spec.rb +79 -0
  171. data/spec/prawn/graphics_spec.rb +817 -0
  172. data/spec/prawn/graphics_stroke_styles_spec.rb +227 -0
  173. data/spec/{image_handler_spec.rb → prawn/image_handler_spec.rb} +13 -15
  174. data/spec/prawn/images/jpg_spec.rb +18 -0
  175. data/spec/prawn/images/png_spec.rb +281 -0
  176. data/spec/prawn/images_spec.rb +170 -0
  177. data/spec/prawn/measurements_extensions_spec.rb +22 -0
  178. data/spec/prawn/outline_spec.rb +408 -0
  179. data/spec/prawn/repeater_spec.rb +163 -0
  180. data/spec/prawn/soft_mask_spec.rb +72 -0
  181. data/spec/prawn/stamp_spec.rb +168 -0
  182. data/spec/prawn/text/box_spec.rb +1113 -0
  183. data/spec/prawn/text/formatted/arranger_spec.rb +464 -0
  184. data/spec/prawn/text/formatted/box_spec.rb +825 -0
  185. data/spec/prawn/text/formatted/fragment_spec.rb +341 -0
  186. data/spec/prawn/text/formatted/line_wrap_spec.rb +491 -0
  187. data/spec/prawn/text/formatted/parser_spec.rb +667 -0
  188. data/spec/prawn/text_draw_text_spec.rb +147 -0
  189. data/spec/prawn/text_rendering_mode_spec.rb +42 -0
  190. data/spec/prawn/text_spacing_spec.rb +93 -0
  191. data/spec/prawn/text_spec.rb +601 -0
  192. data/spec/prawn/text_with_inline_formatting_spec.rb +33 -0
  193. data/spec/{transformation_stack_spec.rb → prawn/transformation_stack_spec.rb} +21 -20
  194. data/spec/prawn/view_spec.rb +45 -0
  195. data/spec/spec_helper.rb +16 -16
  196. metadata +96 -151
  197. metadata.gz.sig +1 -0
  198. data/data/images/16bit.alpha +0 -0
  199. data/data/images/16bit.color +0 -0
  200. data/data/images/16bit.png +0 -0
  201. data/data/images/arrow.png +0 -0
  202. data/data/images/arrow2.png +0 -0
  203. data/data/images/blend_modes_bottom_layer.jpg +0 -0
  204. data/data/images/blend_modes_top_layer.jpg +0 -0
  205. data/data/images/dice.alpha +0 -0
  206. data/data/images/dice.color +0 -0
  207. data/data/images/dice.png +0 -0
  208. data/data/images/dice_interlaced.png +0 -0
  209. data/data/images/fractal.jpg +0 -0
  210. data/data/images/indexed_color.dat +0 -0
  211. data/data/images/indexed_color.png +0 -0
  212. data/data/images/indexed_transparency.png +0 -0
  213. data/data/images/indexed_transparency_alpha.dat +0 -0
  214. data/data/images/indexed_transparency_color.dat +0 -0
  215. data/data/images/letterhead.jpg +0 -0
  216. data/data/images/license.md +0 -8
  217. data/data/images/page_white_text.alpha +0 -0
  218. data/data/images/page_white_text.color +0 -0
  219. data/data/images/page_white_text.png +0 -0
  220. data/data/images/pigs.jpg +0 -0
  221. data/data/images/prawn.png +0 -0
  222. data/data/images/ruport.png +0 -0
  223. data/data/images/ruport_data.dat +0 -0
  224. data/data/images/ruport_transparent.png +0 -0
  225. data/data/images/ruport_type0.png +0 -0
  226. data/data/images/stef.jpg +0 -0
  227. data/data/images/tru256.bmp +0 -0
  228. data/data/images/web-links.dat +0 -1
  229. data/data/images/web-links.png +0 -0
  230. data/data/pdfs/complex_template.pdf +0 -0
  231. data/data/pdfs/contains_ttf_font.pdf +0 -0
  232. data/data/pdfs/encrypted.pdf +0 -0
  233. data/data/pdfs/form.pdf +1 -819
  234. data/data/pdfs/hexagon.pdf +0 -61
  235. data/data/pdfs/indirect_reference.pdf +0 -86
  236. data/data/pdfs/multipage_template.pdf +0 -127
  237. data/data/pdfs/nested_pages.pdf +0 -118
  238. data/data/pdfs/page_without_mediabox.pdf +0 -193
  239. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  240. data/data/pdfs/two_hexagons.pdf +0 -90
  241. data/data/pdfs/version_1_6.pdf +0 -61
  242. data/data/shift_jis_text.txt +0 -1
  243. data/spec/acceptance/png_spec.rb +0 -35
  244. data/spec/annotations_spec.rb +0 -67
  245. data/spec/blend_mode_spec.rb +0 -71
  246. data/spec/bounding_box_spec.rb +0 -501
  247. data/spec/column_box_spec.rb +0 -59
  248. data/spec/destinations_spec.rb +0 -13
  249. data/spec/document_spec.rb +0 -738
  250. data/spec/font_metric_cache_spec.rb +0 -52
  251. data/spec/font_spec.rb +0 -475
  252. data/spec/formatted_text_arranger_spec.rb +0 -452
  253. data/spec/formatted_text_box_spec.rb +0 -716
  254. data/spec/formatted_text_fragment_spec.rb +0 -299
  255. data/spec/graphics_spec.rb +0 -705
  256. data/spec/grid_spec.rb +0 -95
  257. data/spec/images_spec.rb +0 -167
  258. data/spec/inline_formatted_text_parser_spec.rb +0 -568
  259. data/spec/jpg_spec.rb +0 -23
  260. data/spec/line_wrap_spec.rb +0 -366
  261. data/spec/measurement_units_spec.rb +0 -22
  262. data/spec/outline_spec.rb +0 -409
  263. data/spec/png_spec.rb +0 -257
  264. data/spec/reference_spec.rb +0 -25
  265. data/spec/repeater_spec.rb +0 -154
  266. data/spec/security_spec.rb +0 -151
  267. data/spec/soft_mask_spec.rb +0 -78
  268. data/spec/span_spec.rb +0 -43
  269. data/spec/stamp_spec.rb +0 -179
  270. data/spec/stroke_styles_spec.rb +0 -208
  271. data/spec/text_at_spec.rb +0 -142
  272. data/spec/text_box_spec.rb +0 -1042
  273. data/spec/text_rendering_mode_spec.rb +0 -45
  274. data/spec/text_spacing_spec.rb +0 -93
  275. data/spec/text_spec.rb +0 -543
  276. data/spec/text_with_inline_formatting_spec.rb +0 -35
  277. data/spec/transparency_spec.rb +0 -91
  278. data/spec/view_spec.rb +0 -42
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  # bounding_box.rb : Implements a mechanism for shifting the coordinate space
4
2
  #
5
3
  # Copyright May 2008, Gregory Brown. All Rights Reserved.
@@ -170,29 +168,29 @@ module Prawn
170
168
  # end
171
169
  #
172
170
  def canvas(&block)
173
- init_bounding_box(block, :hold_position => true) do |_|
171
+ init_bounding_box(block, hold_position: true) do |_|
174
172
  # Canvas bbox acts like margin_box in that its parent bounds are unset.
175
173
  @bounding_box = BoundingBox.new(
176
174
  self, nil, [0, page.dimensions[3]],
177
- :width => page.dimensions[2],
178
- :height => page.dimensions[3]
175
+ width: page.dimensions[2],
176
+ height: page.dimensions[3]
179
177
  )
180
178
  end
181
179
  end
182
180
 
183
181
  private
184
182
 
185
- def init_bounding_box(user_block, options = {}, &init_block)
183
+ def init_bounding_box(user_block, options = {})
186
184
  unless user_block
187
- fail ArgumentError,
188
- "bounding boxes require a block to be drawn within the box"
185
+ raise ArgumentError,
186
+ 'bounding boxes require a block to be drawn within the box'
189
187
  end
190
188
 
191
189
  parent_box = @bounding_box
192
190
 
193
191
  original_ypos = y
194
192
 
195
- init_block.call(parent_box)
193
+ yield(parent_box)
196
194
 
197
195
  self.y = @bounding_box.absolute_top
198
196
  user_block.call
@@ -209,9 +207,10 @@ module Prawn
209
207
  self.y = @bounding_box.absolute_bottom
210
208
  end
211
209
 
212
- created_box, @bounding_box = @bounding_box, parent_box
210
+ created_box = @bounding_box
211
+ @bounding_box = parent_box
213
212
 
214
- return created_box
213
+ created_box
215
214
  end
216
215
 
217
216
  # Low level layout helper that simplifies coordinate math.
@@ -222,13 +221,14 @@ module Prawn
222
221
  class BoundingBox
223
222
  def initialize(document, parent, point, options = {}) # @private
224
223
  unless options[:width]
225
- fail ArgumentError, "BoundingBox needs the :width option to be set"
224
+ raise ArgumentError, 'BoundingBox needs the :width option to be set'
226
225
  end
227
226
 
228
227
  @document = document
229
228
  @parent = parent
230
229
  @x, @y = point
231
- @width, @height = options[:width], options[:height]
230
+ @width = options[:width]
231
+ @height = options[:height]
232
232
  @total_left_padding = 0
233
233
  @total_right_padding = 0
234
234
  @stretched_height = nil
@@ -280,7 +280,7 @@ module Prawn
280
280
  # end
281
281
  #
282
282
  # @private
283
- def indent(left_padding, right_padding = 0, &block)
283
+ def indent(left_padding, right_padding = 0)
284
284
  add_left_padding(left_padding)
285
285
  add_right_padding(right_padding)
286
286
  yield
@@ -319,7 +319,8 @@ module Prawn
319
319
  @width += right_padding
320
320
  end
321
321
 
322
- # Relative right x-coordinate of the bounding box. (Equal to the box width)
322
+ # Relative right x-coordinate of the bounding box. (Equal to the box
323
+ # width)
323
324
  #
324
325
  # Example, position some text 3 pts from the right of the containing box:
325
326
  #
@@ -456,8 +457,10 @@ module Prawn
456
457
  #
457
458
  def height
458
459
  return @height if @height
459
- @stretched_height = [(absolute_top - @document.y),
460
- @stretched_height.to_f].max
460
+ @stretched_height = [
461
+ (absolute_top - @document.y),
462
+ @stretched_height.to_f
463
+ ].max
461
464
  end
462
465
 
463
466
  # an alias for absolute_left
@@ -485,8 +488,9 @@ module Prawn
485
488
  end
486
489
  end
487
490
 
488
- # Returns +false+ when the box has a defined height, +true+ when the height
489
- # is being calculated on the fly based on the current vertical position.
491
+ # Returns +false+ when the box has a defined height, +true+ when the
492
+ # height is being calculated on the fly based on the current vertical
493
+ # position.
490
494
  #
491
495
  def stretchy?
492
496
  !@height
@@ -496,14 +500,14 @@ module Prawn
496
500
  #
497
501
  def reference_bounds
498
502
  if stretchy?
499
- fail "Can't find reference bounds: my parent is unset" unless @parent
503
+ raise "Can't find reference bounds: my parent is unset" unless @parent
500
504
  @parent.reference_bounds
501
505
  else
502
506
  self
503
507
  end
504
508
  end
505
509
 
506
- alias_method :update_height, :height
510
+ alias update_height height
507
511
 
508
512
  # Returns a deep copy of these bounds (including all parent bounds but
509
513
  # not copying the reference to the Document).
@@ -512,10 +516,13 @@ module Prawn
512
516
  def deep_copy
513
517
  copy = dup
514
518
  # Deep-copy the parent bounds
515
- copy.instance_variable_set("@parent", if BoundingBox === @parent
516
- @parent.deep_copy
517
- end)
518
- copy.instance_variable_set("@document", nil)
519
+ copy.instance_variable_set(
520
+ '@parent',
521
+ if @parent.is_a?(BoundingBox)
522
+ @parent.deep_copy
523
+ end
524
+ )
525
+ copy.instance_variable_set('@document', nil)
519
526
  copy
520
527
  end
521
528
 
@@ -525,7 +532,7 @@ module Prawn
525
532
  #
526
533
  # @private
527
534
  def self.restore_deep_copy(bounds, document)
528
- bounds.instance_variable_set("@document", document)
535
+ bounds.instance_variable_set('@document', document)
529
536
  bounds
530
537
  end
531
538
  end
@@ -1,12 +1,10 @@
1
- # encoding: utf-8
2
- #
3
1
  # column_box.rb: Extends BoundingBox to allow for columns of text
4
2
  #
5
3
  # Author Paul Ostazeski.
6
4
  #
7
5
  # This is free software. Please see the LICENSE and COPYING files for details.
8
6
 
9
- require_relative "bounding_box"
7
+ require_relative 'bounding_box'
10
8
 
11
9
  module Prawn
12
10
  class Document
@@ -36,10 +34,10 @@ module Prawn
36
34
 
37
35
  private
38
36
 
39
- def init_column_box(user_block, options = {}, &init_block)
37
+ def init_column_box(user_block, options = {})
40
38
  parent_box = @bounding_box
41
39
 
42
- init_block.call(parent_box)
40
+ yield(parent_box)
43
41
 
44
42
  self.y = @bounding_box.absolute_top
45
43
  user_block.call
@@ -55,7 +53,7 @@ module Prawn
55
53
  def initialize(document, parent, point, options = {}) #:nodoc:
56
54
  super
57
55
  @columns = options[:columns] || 3
58
- @spacer = options[:spacer] || @document.font_size
56
+ @spacer = options[:spacer] || @document.font_size
59
57
  @current_column = 0
60
58
  @reflow_margins = options[:reflow_margins]
61
59
  end
@@ -109,7 +107,7 @@ module Prawn
109
107
  def move_past_bottom
110
108
  @current_column = (@current_column + 1) % @columns
111
109
  @document.y = @y
112
- if 0 == @current_column
110
+ if @current_column.zero?
113
111
  if @reflow_margins
114
112
  @y = @parent.absolute_top
115
113
  end
@@ -1,12 +1,10 @@
1
- # encoding: utf-8
2
- #
3
1
  # internals.rb : Implements document internals for Prawn
4
2
  #
5
3
  # Copyright August 2008, Gregory Brown. All Rights Reserved.
6
4
  #
7
5
  # This is free software. Please see the LICENSE and COPYING files for details.
8
6
 
9
- require "forwardable"
7
+ require 'forwardable'
10
8
 
11
9
  module Prawn
12
10
  class Document
@@ -23,8 +21,10 @@ module Prawn
23
21
  # but they are used in documentation and possibly in extensions.
24
22
  # Perhaps they will become part of the extension API?
25
23
  # Anyway, for now it's not clear what we should do w. them.
26
- delegate [ :graphic_state,
27
- :on_page_create ] => :renderer
24
+ delegate [
25
+ :graphic_state,
26
+ :on_page_create
27
+ ] => :renderer
28
28
 
29
29
  def save_graphics_state(state = nil, &block)
30
30
  save_transformation_stack
@@ -45,7 +45,7 @@ module Prawn
45
45
  delegate [:compression_enabled?] => :renderer
46
46
 
47
47
  # FIXME: More circular references in PDF::Core::Page.
48
- delegate [ :ref, :ref!, :deref ] => :renderer
48
+ delegate [:ref, :ref!, :deref] => :renderer
49
49
 
50
50
  # FIXME: Another circular reference, because we mix in a module from
51
51
  # PDF::Core to provide destinations, which in theory should not
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  # span.rb : Implements text columns
4
2
  #
5
3
  # Copyright September 2008, Gregory Brown. All Rights Reserved.
@@ -28,26 +26,31 @@ module Prawn
28
26
  #
29
27
  def span(width, options = {})
30
28
  Prawn.verify_options [:position], options
31
- original_position = self.y
29
+ original_position = y
32
30
 
33
31
  # FIXME: Any way to move this upstream?
34
- left_boundary = case(options[:position] || :left)
35
- when :left
36
- margin_box.absolute_left
37
- when :center
38
- margin_box.absolute_left + margin_box.width / 2.0 - width / 2.0
39
- when :right
40
- margin_box.absolute_right - width
41
- when Numeric
42
- margin_box.absolute_left + options[:position]
43
- else
44
- fail ArgumentError, "Invalid option for :position"
45
- end
32
+ left_boundary =
33
+ case options.fetch(:position, :left)
34
+ when :left
35
+ margin_box.absolute_left
36
+ when :center
37
+ margin_box.absolute_left + margin_box.width / 2.0 - width / 2.0
38
+ when :right
39
+ margin_box.absolute_right - width
40
+ when Numeric
41
+ margin_box.absolute_left + options[:position]
42
+ else
43
+ raise ArgumentError, 'Invalid option for :position'
44
+ end
46
45
 
47
46
  # we need to bust out of whatever nested bounding boxes we're in.
48
47
  canvas do
49
- bounding_box([left_boundary,
50
- margin_box.absolute_top], :width => width) do
48
+ bounding_box(
49
+ [
50
+ left_boundary,
51
+ margin_box.absolute_top
52
+ ], width: width
53
+ ) do
51
54
  self.y = original_position
52
55
  yield
53
56
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Copyright September 2008, Gregory Brown, James Healy All Rights Reserved.
4
2
  #
5
3
  # This is free software. Please see the LICENSE and COPYING files for details.
@@ -10,78 +8,78 @@ module Prawn
10
8
  #
11
9
  class WinAnsi #:nodoc:
12
10
  CHARACTERS = %w[
13
- .notdef .notdef .notdef .notdef
14
- .notdef .notdef .notdef .notdef
15
- .notdef .notdef .notdef .notdef
16
- .notdef .notdef .notdef .notdef
17
- .notdef .notdef .notdef .notdef
18
- .notdef .notdef .notdef .notdef
19
- .notdef .notdef .notdef .notdef
20
- .notdef .notdef .notdef .notdef
11
+ .notdef .notdef .notdef .notdef
12
+ .notdef .notdef .notdef .notdef
13
+ .notdef .notdef .notdef .notdef
14
+ .notdef .notdef .notdef .notdef
15
+ .notdef .notdef .notdef .notdef
16
+ .notdef .notdef .notdef .notdef
17
+ .notdef .notdef .notdef .notdef
18
+ .notdef .notdef .notdef .notdef
21
19
 
22
- space exclam quotedbl numbersign
23
- dollar percent ampersand quotesingle
24
- parenleft parenright asterisk plus
25
- comma hyphen period slash
26
- zero one two three
27
- four five six seven
28
- eight nine colon semicolon
29
- less equal greater question
20
+ space exclam quotedbl numbersign
21
+ dollar percent ampersand quotesingle
22
+ parenleft parenright asterisk plus
23
+ comma hyphen period slash
24
+ zero one two three
25
+ four five six seven
26
+ eight nine colon semicolon
27
+ less equal greater question
30
28
 
31
- at A B C
32
- D E F G
33
- H I J K
34
- L M N O
35
- P Q R S
36
- T U V W
37
- X Y Z bracketleft
38
- backslash bracketright asciicircum underscore
29
+ at A B C
30
+ D E F G
31
+ H I J K
32
+ L M N O
33
+ P Q R S
34
+ T U V W
35
+ X Y Z bracketleft
36
+ backslash bracketright asciicircum underscore
39
37
 
40
- grave a b c
41
- d e f g
42
- h i j k
43
- l m n o
44
- p q r s
45
- t u v w
46
- x y z braceleft
47
- bar braceright asciitilde .notdef
38
+ grave a b c
39
+ d e f g
40
+ h i j k
41
+ l m n o
42
+ p q r s
43
+ t u v w
44
+ x y z braceleft
45
+ bar braceright asciitilde .notdef
48
46
 
49
- Euro .notdef quotesinglbase florin
50
- quotedblbase ellipsis dagger daggerdbl
51
- circumflex perthousand Scaron guilsinglleft
52
- OE .notdef Zcaron .notdef
53
- .notdef quoteleft quoteright quotedblleft
54
- quotedblright bullet endash emdash
55
- tilde trademark scaron guilsinglright
56
- oe .notdef zcaron ydieresis
47
+ Euro .notdef quotesinglbase florin
48
+ quotedblbase ellipsis dagger daggerdbl
49
+ circumflex perthousand Scaron guilsinglleft
50
+ OE .notdef Zcaron .notdef
51
+ .notdef quoteleft quoteright quotedblleft
52
+ quotedblright bullet endash emdash
53
+ tilde trademark scaron guilsinglright
54
+ oe .notdef zcaron ydieresis
57
55
 
58
- space exclamdown cent sterling
59
- currency yen brokenbar section
60
- dieresis copyright ordfeminine guillemotleft
61
- logicalnot hyphen registered macron
62
- degree plusminus twosuperior threesuperior
63
- acute mu paragraph periodcentered
64
- cedilla onesuperior ordmasculine guillemotright
65
- onequarter onehalf threequarters questiondown
56
+ space exclamdown cent sterling
57
+ currency yen brokenbar section
58
+ dieresis copyright ordfeminine guillemotleft
59
+ logicalnot hyphen registered macron
60
+ degree plusminus twosuperior threesuperior
61
+ acute mu paragraph periodcentered
62
+ cedilla onesuperior ordmasculine guillemotright
63
+ onequarter onehalf threequarters questiondown
66
64
 
67
- Agrave Aacute Acircumflex Atilde
68
- Adieresis Aring AE Ccedilla
69
- Egrave Eacute Ecircumflex Edieresis
70
- Igrave Iacute Icircumflex Idieresis
71
- Eth Ntilde Ograve Oacute
72
- Ocircumflex Otilde Odieresis multiply
73
- Oslash Ugrave Uacute Ucircumflex
74
- Udieresis Yacute Thorn germandbls
65
+ Agrave Aacute Acircumflex Atilde
66
+ Adieresis Aring AE Ccedilla
67
+ Egrave Eacute Ecircumflex Edieresis
68
+ Igrave Iacute Icircumflex Idieresis
69
+ Eth Ntilde Ograve Oacute
70
+ Ocircumflex Otilde Odieresis multiply
71
+ Oslash Ugrave Uacute Ucircumflex
72
+ Udieresis Yacute Thorn germandbls
75
73
 
76
- agrave aacute acircumflex atilde
77
- adieresis aring ae ccedilla
78
- egrave eacute ecircumflex edieresis
79
- igrave iacute icircumflex idieresis
80
- eth ntilde ograve oacute
81
- ocircumflex otilde odieresis divide
82
- oslash ugrave uacute ucircumflex
83
- udieresis yacute thorn ydieresis
84
- ]
74
+ agrave aacute acircumflex atilde
75
+ adieresis aring ae ccedilla
76
+ egrave eacute ecircumflex edieresis
77
+ igrave iacute icircumflex idieresis
78
+ eth ntilde ograve oacute
79
+ ocircumflex otilde odieresis divide
80
+ oslash ugrave uacute ucircumflex
81
+ udieresis yacute thorn ydieresis
82
+ ].freeze
85
83
  end
86
84
  end
87
85
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # errors.rb : Implements custom error classes for Prawn
4
2
  #
5
3
  # Copyright April 2008, Gregory Brown. All Rights Reserved.
@@ -43,9 +41,9 @@ module Prawn
43
41
  #
44
42
  UnknownOption = Class.new(StandardError)
45
43
 
46
- # this error is raised when a user attempts to embed an image of an unsupported
47
- # type. This can either a completely unsupported format, or a dialect of a
48
- # supported format (ie. some types of PNG)
44
+ # this error is raised when a user attempts to embed an image of an
45
+ # unsupported type. This can either a completely unsupported format, or
46
+ # a dialect of a supported format (ie. some types of PNG)
49
47
  UnsupportedImageType = Class.new(StandardError)
50
48
 
51
49
  # This error is raised when a named element has alredy been
@@ -63,17 +61,22 @@ module Prawn
63
61
  # This error is raised when a required option has not been set
64
62
  RequiredOption = Class.new(StandardError)
65
63
 
66
- # This error is raised when a requested outline item with a given title does not exist
64
+ # This error is raised when a requested outline item with a given title does
65
+ # not exist
67
66
  UnknownOutlineTitle = Class.new(StandardError)
68
67
 
69
68
  # This error is raised when a block is required, but not provided
70
69
  BlockRequired = Class.new(StandardError)
71
70
 
72
- # This error is rased when a graphics method is called with improper arguments
71
+ # This error is rased when a graphics method is called with improper
72
+ # arguments
73
73
  InvalidGraphicsPath = Class.new(StandardError)
74
74
 
75
75
  # Raised when unrecognized content is provided for a table cell.
76
76
  #
77
77
  UnrecognizedTableContent = Class.new(StandardError)
78
+
79
+ # This error is raised when an incompatible join style is specified
80
+ InvalidJoinStyle = Class.new(StandardError)
78
81
  end
79
82
  end