prawn 2.0.2 → 2.3.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 (277) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/GPLv2 +20 -21
  5. data/Gemfile +3 -9
  6. data/Rakefile +20 -23
  7. data/lib/prawn.rb +37 -49
  8. data/lib/prawn/document.rb +181 -133
  9. data/lib/prawn/document/bounding_box.rb +41 -29
  10. data/lib/prawn/document/column_box.rb +7 -7
  11. data/lib/prawn/document/internals.rb +18 -8
  12. data/lib/prawn/document/span.rb +21 -16
  13. data/lib/prawn/encoding.rb +69 -68
  14. data/lib/prawn/errors.rb +12 -7
  15. data/lib/prawn/font.rb +115 -69
  16. data/lib/prawn/font_metric_cache.rb +14 -8
  17. data/lib/prawn/{font → fonts}/afm.rb +102 -68
  18. data/lib/prawn/{font → fonts}/dfont.rb +5 -11
  19. data/lib/prawn/fonts/otf.rb +11 -0
  20. data/lib/prawn/fonts/ttc.rb +36 -0
  21. data/lib/prawn/{font → fonts}/ttf.rb +87 -68
  22. data/lib/prawn/graphics.rb +120 -80
  23. data/lib/prawn/graphics/blend_mode.rb +65 -0
  24. data/lib/prawn/graphics/cap_style.rb +3 -3
  25. data/lib/prawn/graphics/color.rb +27 -25
  26. data/lib/prawn/graphics/dash.rb +23 -11
  27. data/lib/prawn/graphics/join_style.rb +9 -3
  28. data/lib/prawn/graphics/patterns.rb +197 -67
  29. data/lib/prawn/graphics/transformation.rb +17 -8
  30. data/lib/prawn/graphics/transparency.rb +17 -13
  31. data/lib/prawn/grid.rb +48 -47
  32. data/lib/prawn/image_handler.rb +5 -5
  33. data/lib/prawn/images.rb +39 -30
  34. data/lib/prawn/images/image.rb +2 -1
  35. data/lib/prawn/images/jpg.rb +28 -22
  36. data/lib/prawn/images/png.rb +107 -66
  37. data/lib/prawn/measurement_extensions.rb +10 -9
  38. data/lib/prawn/measurements.rb +19 -15
  39. data/lib/prawn/outline.rb +97 -77
  40. data/lib/prawn/repeater.rb +14 -10
  41. data/lib/prawn/security.rb +81 -61
  42. data/lib/prawn/security/arcfour.rb +2 -2
  43. data/lib/prawn/soft_mask.rb +26 -26
  44. data/lib/prawn/stamp.rb +20 -13
  45. data/lib/prawn/text.rb +68 -52
  46. data/lib/prawn/text/box.rb +11 -8
  47. data/lib/prawn/text/formatted.rb +5 -5
  48. data/lib/prawn/text/formatted/arranger.rb +78 -49
  49. data/lib/prawn/text/formatted/box.rb +134 -100
  50. data/lib/prawn/text/formatted/fragment.rb +11 -14
  51. data/lib/prawn/text/formatted/line_wrap.rb +121 -63
  52. data/lib/prawn/text/formatted/parser.rb +139 -117
  53. data/lib/prawn/text/formatted/wrap.rb +43 -31
  54. data/lib/prawn/transformation_stack.rb +44 -0
  55. data/lib/prawn/utilities.rb +7 -22
  56. data/lib/prawn/version.rb +2 -2
  57. data/lib/prawn/view.rb +17 -7
  58. data/manual/basic_concepts/adding_pages.rb +6 -7
  59. data/manual/basic_concepts/basic_concepts.rb +31 -22
  60. data/manual/basic_concepts/creation.rb +10 -11
  61. data/manual/basic_concepts/cursor.rb +4 -5
  62. data/manual/basic_concepts/measurement.rb +6 -7
  63. data/manual/basic_concepts/origin.rb +5 -6
  64. data/manual/basic_concepts/other_cursor_helpers.rb +11 -12
  65. data/manual/basic_concepts/view.rb +22 -16
  66. data/manual/bounding_box/bounding_box.rb +29 -24
  67. data/manual/bounding_box/bounds.rb +11 -12
  68. data/manual/bounding_box/canvas.rb +4 -5
  69. data/manual/bounding_box/creation.rb +6 -7
  70. data/manual/bounding_box/indentation.rb +14 -15
  71. data/manual/bounding_box/nesting.rb +24 -17
  72. data/manual/bounding_box/russian_boxes.rb +14 -13
  73. data/manual/bounding_box/stretchy.rb +12 -13
  74. data/manual/contents.rb +28 -22
  75. data/manual/cover.rb +33 -28
  76. data/manual/document_and_page_options/background.rb +11 -13
  77. data/manual/document_and_page_options/document_and_page_options.rb +25 -20
  78. data/manual/document_and_page_options/metadata.rb +18 -16
  79. data/manual/document_and_page_options/page_margins.rb +18 -20
  80. data/manual/document_and_page_options/page_size.rb +13 -12
  81. data/manual/document_and_page_options/print_scaling.rb +17 -15
  82. data/manual/example_helper.rb +5 -4
  83. data/manual/graphics/blend_mode.rb +52 -0
  84. data/manual/graphics/circle_and_ellipse.rb +4 -5
  85. data/manual/graphics/color.rb +7 -9
  86. data/manual/graphics/common_lines.rb +7 -8
  87. data/manual/graphics/fill_and_stroke.rb +4 -5
  88. data/manual/graphics/fill_rules.rb +9 -10
  89. data/manual/graphics/gradients.rb +27 -21
  90. data/manual/graphics/graphics.rb +48 -39
  91. data/manual/graphics/helper.rb +12 -9
  92. data/manual/graphics/line_width.rb +8 -7
  93. data/manual/graphics/lines_and_curves.rb +7 -8
  94. data/manual/graphics/polygon.rb +6 -8
  95. data/manual/graphics/rectangle.rb +4 -5
  96. data/manual/graphics/rotate.rb +6 -7
  97. data/manual/graphics/scale.rb +14 -15
  98. data/manual/graphics/soft_masks.rb +4 -5
  99. data/manual/graphics/stroke_cap.rb +6 -7
  100. data/manual/graphics/stroke_dash.rb +11 -12
  101. data/manual/graphics/stroke_join.rb +5 -6
  102. data/manual/graphics/translate.rb +9 -10
  103. data/manual/graphics/transparency.rb +7 -8
  104. data/manual/how_to_read_this_manual.rb +6 -6
  105. data/manual/images/absolute_position.rb +6 -7
  106. data/manual/images/fit.rb +7 -8
  107. data/manual/images/horizontal.rb +9 -10
  108. data/manual/images/images.rb +28 -24
  109. data/manual/images/plain_image.rb +5 -6
  110. data/manual/images/scale.rb +9 -10
  111. data/manual/images/vertical.rb +13 -14
  112. data/manual/images/width_and_height.rb +10 -11
  113. data/manual/layout/boxes.rb +5 -6
  114. data/manual/layout/content.rb +7 -8
  115. data/manual/layout/layout.rb +18 -16
  116. data/manual/layout/simple_grid.rb +6 -7
  117. data/manual/outline/add_subsection_to.rb +20 -21
  118. data/manual/outline/insert_section_after.rb +15 -16
  119. data/manual/outline/outline.rb +21 -17
  120. data/manual/outline/sections_and_pages.rb +17 -18
  121. data/manual/repeatable_content/alternate_page_numbering.rb +21 -17
  122. data/manual/repeatable_content/page_numbering.rb +17 -16
  123. data/manual/repeatable_content/repeatable_content.rb +25 -19
  124. data/manual/repeatable_content/repeater.rb +14 -15
  125. data/manual/repeatable_content/stamp.rb +14 -15
  126. data/manual/security/encryption.rb +9 -10
  127. data/manual/security/permissions.rb +19 -14
  128. data/manual/security/security.rb +19 -16
  129. data/manual/table.rb +3 -3
  130. data/manual/text/alignment.rb +16 -17
  131. data/manual/text/color.rb +12 -11
  132. data/manual/text/column_box.rb +9 -10
  133. data/manual/text/fallback_fonts.rb +25 -21
  134. data/manual/text/font.rb +11 -12
  135. data/manual/text/font_size.rb +13 -14
  136. data/manual/text/font_style.rb +7 -8
  137. data/manual/text/formatted_callbacks.rb +25 -21
  138. data/manual/text/formatted_text.rb +33 -25
  139. data/manual/text/free_flowing_text.rb +20 -21
  140. data/manual/text/inline.rb +18 -19
  141. data/manual/text/kerning_and_character_spacing.rb +14 -15
  142. data/manual/text/leading.rb +7 -8
  143. data/manual/text/line_wrapping.rb +37 -18
  144. data/manual/text/paragraph_indentation.rb +13 -14
  145. data/manual/text/positioned_text.rb +15 -16
  146. data/manual/text/registering_families.rb +20 -21
  147. data/manual/text/rendering_and_color.rb +9 -10
  148. data/manual/text/right_to_left_text.rb +26 -19
  149. data/manual/text/rotation.rb +28 -23
  150. data/manual/text/single_usage.rb +8 -9
  151. data/manual/text/text.rb +57 -52
  152. data/manual/text/text_box_excess.rb +20 -17
  153. data/manual/text/text_box_extensions.rb +18 -15
  154. data/manual/text/text_box_overflow.rb +18 -19
  155. data/manual/text/utf8.rb +11 -12
  156. data/manual/text/win_ansi_charset.rb +21 -19
  157. data/prawn.gemspec +45 -33
  158. data/spec/extensions/encoding_helpers.rb +3 -3
  159. data/spec/prawn/document/bounding_box_spec.rb +546 -0
  160. data/spec/prawn/document/column_box_spec.rb +75 -0
  161. data/spec/prawn/document/security_spec.rb +176 -0
  162. data/spec/prawn/document_annotations_spec.rb +76 -0
  163. data/spec/prawn/document_destinations_spec.rb +15 -0
  164. data/spec/prawn/document_grid_spec.rb +99 -0
  165. data/spec/prawn/document_reference_spec.rb +27 -0
  166. data/spec/prawn/document_span_spec.rb +36 -0
  167. data/spec/prawn/document_spec.rb +802 -0
  168. data/spec/prawn/font_metric_cache_spec.rb +54 -0
  169. data/spec/prawn/font_spec.rb +542 -0
  170. data/spec/prawn/graphics/blend_mode_spec.rb +63 -0
  171. data/spec/prawn/graphics/transparency_spec.rb +81 -0
  172. data/spec/prawn/graphics_spec.rb +837 -0
  173. data/spec/prawn/graphics_stroke_styles_spec.rb +229 -0
  174. data/spec/prawn/image_handler_spec.rb +53 -0
  175. data/spec/prawn/images/jpg_spec.rb +20 -0
  176. data/spec/prawn/images/png_spec.rb +283 -0
  177. data/spec/prawn/images_spec.rb +224 -0
  178. data/spec/prawn/measurements_extensions_spec.rb +24 -0
  179. data/spec/prawn/outline_spec.rb +412 -0
  180. data/spec/prawn/repeater_spec.rb +165 -0
  181. data/spec/prawn/soft_mask_spec.rb +74 -0
  182. data/spec/prawn/stamp_spec.rb +172 -0
  183. data/spec/prawn/text/box_spec.rb +1112 -0
  184. data/spec/prawn/text/formatted/arranger_spec.rb +466 -0
  185. data/spec/prawn/text/formatted/box_spec.rb +846 -0
  186. data/spec/prawn/text/formatted/fragment_spec.rb +343 -0
  187. data/spec/prawn/text/formatted/line_wrap_spec.rb +494 -0
  188. data/spec/prawn/text/formatted/parser_spec.rb +697 -0
  189. data/spec/prawn/text_draw_text_spec.rb +149 -0
  190. data/spec/prawn/text_rendering_mode_spec.rb +48 -0
  191. data/spec/prawn/text_spacing_spec.rb +95 -0
  192. data/spec/prawn/text_spec.rb +603 -0
  193. data/spec/prawn/text_with_inline_formatting_spec.rb +35 -0
  194. data/spec/prawn/transformation_stack_spec.rb +66 -0
  195. data/spec/prawn/view_spec.rb +63 -0
  196. data/spec/prawn_manual_spec.rb +35 -0
  197. data/spec/spec_helper.rb +19 -23
  198. metadata +145 -185
  199. metadata.gz.sig +4 -0
  200. data/data/images/16bit.alpha +0 -0
  201. data/data/images/16bit.color +0 -0
  202. data/data/images/16bit.png +0 -0
  203. data/data/images/arrow.png +0 -0
  204. data/data/images/arrow2.png +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/letterhead.jpg +0 -0
  213. data/data/images/license.md +0 -8
  214. data/data/images/page_white_text.alpha +0 -0
  215. data/data/images/page_white_text.color +0 -0
  216. data/data/images/page_white_text.png +0 -0
  217. data/data/images/pal_bk.png +0 -0
  218. data/data/images/pigs.jpg +0 -0
  219. data/data/images/prawn.png +0 -0
  220. data/data/images/ruport.png +0 -0
  221. data/data/images/ruport_data.dat +0 -0
  222. data/data/images/ruport_transparent.png +0 -0
  223. data/data/images/ruport_type0.png +0 -0
  224. data/data/images/stef.jpg +0 -0
  225. data/data/images/tru256.bmp +0 -0
  226. data/data/images/web-links.dat +0 -1
  227. data/data/images/web-links.png +0 -0
  228. data/data/pdfs/complex_template.pdf +0 -0
  229. data/data/pdfs/contains_ttf_font.pdf +0 -0
  230. data/data/pdfs/encrypted.pdf +0 -0
  231. data/data/pdfs/form.pdf +1 -819
  232. data/data/pdfs/hexagon.pdf +0 -61
  233. data/data/pdfs/indirect_reference.pdf +0 -86
  234. data/data/pdfs/multipage_template.pdf +0 -127
  235. data/data/pdfs/nested_pages.pdf +0 -118
  236. data/data/pdfs/page_without_mediabox.pdf +0 -193
  237. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  238. data/data/pdfs/two_hexagons.pdf +0 -90
  239. data/data/pdfs/version_1_6.pdf +0 -61
  240. data/data/shift_jis_text.txt +0 -1
  241. data/spec/acceptance/png.rb +0 -24
  242. data/spec/annotations_spec.rb +0 -67
  243. data/spec/bounding_box_spec.rb +0 -501
  244. data/spec/column_box_spec.rb +0 -59
  245. data/spec/destinations_spec.rb +0 -13
  246. data/spec/document_spec.rb +0 -742
  247. data/spec/extensions/mocha.rb +0 -45
  248. data/spec/font_metric_cache_spec.rb +0 -52
  249. data/spec/font_spec.rb +0 -475
  250. data/spec/formatted_text_arranger_spec.rb +0 -423
  251. data/spec/formatted_text_box_spec.rb +0 -716
  252. data/spec/formatted_text_fragment_spec.rb +0 -299
  253. data/spec/graphics_spec.rb +0 -666
  254. data/spec/grid_spec.rb +0 -95
  255. data/spec/image_handler_spec.rb +0 -53
  256. data/spec/images_spec.rb +0 -167
  257. data/spec/inline_formatted_text_parser_spec.rb +0 -568
  258. data/spec/jpg_spec.rb +0 -23
  259. data/spec/line_wrap_spec.rb +0 -366
  260. data/spec/measurement_units_spec.rb +0 -22
  261. data/spec/outline_spec.rb +0 -409
  262. data/spec/png_spec.rb +0 -235
  263. data/spec/reference_spec.rb +0 -25
  264. data/spec/repeater_spec.rb +0 -154
  265. data/spec/security_spec.rb +0 -151
  266. data/spec/soft_mask_spec.rb +0 -78
  267. data/spec/span_spec.rb +0 -43
  268. data/spec/stamp_spec.rb +0 -179
  269. data/spec/stroke_styles_spec.rb +0 -208
  270. data/spec/text_at_spec.rb +0 -142
  271. data/spec/text_box_spec.rb +0 -1038
  272. data/spec/text_rendering_mode_spec.rb +0 -45
  273. data/spec/text_spacing_spec.rb +0 -93
  274. data/spec/text_spec.rb +0 -549
  275. data/spec/text_with_inline_formatting_spec.rb +0 -35
  276. data/spec/transparency_spec.rb +0 -91
  277. data/spec/view_spec.rb +0 -42
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The base unit in Prawn is the PDF Point. One PDF Point is equal to 1/72 of
4
4
  # an inch.
5
5
  #
@@ -10,15 +10,14 @@
10
10
  # Just <code>require "prawn/measurement_extensions"</code> and it will mix some
11
11
  # helpers onto <code>Numeric</code> for converting common measurement units to
12
12
  # PDF Points.
13
- #
14
- require File.expand_path(File.join(File.dirname(__FILE__),
15
- %w[.. example_helper]))
13
+
14
+ require_relative '../example_helper'
16
15
 
17
16
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
18
17
  Prawn::ManualBuilder::Example.generate(filename) do
19
- require "prawn/measurement_extensions"
18
+ require 'prawn/measurement_extensions'
20
19
 
21
- [:mm, :cm, :dm, :m, :in, :yd, :ft].each do |measurement|
20
+ %i[mm cm dm m in yd ft].each do |measurement|
22
21
  text "1 #{measurement} in PDF Points: #{1.send(measurement)} pt"
23
22
  move_down 5.mm
24
23
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # This is the most important concept you need to learn about Prawn:
4
4
  #
5
5
  # PDF documents have the origin <code>[0,0]</code> at the bottom-left corner of
@@ -21,9 +21,8 @@
21
21
  #
22
22
  # The following snippet strokes a circle on the margin box origin. Then strokes
23
23
  # the boundaries of a bounding box and a circle on its origin.
24
- #
25
- require File.expand_path(File.join(File.dirname(__FILE__),
26
- %w[.. example_helper]))
24
+
25
+ require_relative '../example_helper'
27
26
 
28
27
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
29
28
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -31,7 +30,7 @@ Prawn::ManualBuilder::Example.generate(filename) do
31
30
 
32
31
  stroke_circle [0, 0], 10
33
32
 
34
- bounding_box([100, 300], :width => 300, :height => 200) do
33
+ bounding_box([100, 300], width: 300, height: 200) do
35
34
  stroke_bounds
36
35
  stroke_circle [0, 0], 10
37
36
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Another group of helpers for changing the cursor position are the pad methods.
4
4
  # They accept a numeric value and a block. <code>pad</code> will use the numeric
5
5
  # value to move the cursor down both before and after the block content.
@@ -8,33 +8,32 @@
8
8
  #
9
9
  # <code>float</code> is a method for not changing the cursor. Pass it a block
10
10
  # and the cursor will remain on the same place when the block returns.
11
- #
12
- require File.expand_path(File.join(File.dirname(__FILE__),
13
- %w[.. example_helper]))
11
+
12
+ require_relative '../example_helper'
14
13
 
15
14
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
16
15
  Prawn::ManualBuilder::Example.generate(filename) do
17
16
  stroke_horizontal_rule
18
- pad(20) { text "Text padded both before and after." }
17
+ pad(20) { text 'Text padded both before and after.' }
19
18
 
20
19
  stroke_horizontal_rule
21
- pad_top(20) { text "Text padded on the top." }
20
+ pad_top(20) { text 'Text padded on the top.' }
22
21
 
23
22
  stroke_horizontal_rule
24
- pad_bottom(20) { text "Text padded on the bottom." }
23
+ pad_bottom(20) { text 'Text padded on the bottom.' }
25
24
 
26
25
  stroke_horizontal_rule
27
26
  move_down 30
28
27
 
29
- text "Text written before the float block."
28
+ text 'Text written before the float block.'
30
29
 
31
30
  float do
32
31
  move_down 30
33
- bounding_box([0, cursor], :width => 200) do
34
- text "Text written inside the float block."
32
+ bounding_box([0, cursor], width: 200) do
33
+ text 'Text written inside the float block.'
35
34
  stroke_bounds
36
35
  end
37
36
  end
38
37
 
39
- text "Text written after the float block."
38
+ text 'Text written after the float block.'
40
39
  end
@@ -1,20 +1,26 @@
1
- # encoding: UTF-8
1
+ # frozen_string_literal: true
2
+
3
+ # The recommended way to extend Prawn's functionality is to include the
4
+ # <code>Prawn::View</code> mixin in your own class, which will make all
5
+ # <code>Prawn::Document</code> methods available to your custom objects.
2
6
  #
3
- # To create a custom class that extends Prawn's functionality,
4
- # use the <code>Prawn::View</code> mixin. This approach is safer than creating
5
- # subclasses of <code>Prawn::Document</code> while being just as convenient.
7
+ # This approach is preferred over inheriting from
8
+ # <code>Prawn::Document</code>, as your state will be kept completely separate
9
+ # from <code>Prawn::Document</code>'s, thus avoiding accidental method
10
+ # collisions.
6
11
  #
7
- # By using this mixin, your state will be kept completely separate
8
- # from <code>Prawn::Document</code>'s state, and you will avoid accidental method
9
- # collisions within <code>Prawn::Document</code>.
12
+ # Note that <code>Prawn::View</code> lazily instantiates a
13
+ # <code>Prawn::Document</code> with default initialization settings, such as
14
+ # page size, layout, margins, etc.
10
15
  #
11
- # To build custom classes that make use of other custom classes,
12
- # you can define a method named <code>document()</code> that returns
13
- # any object that acts similar to a <code>Prawn::Document</code>
14
- # object. <code>Prawn::View</code> will then direct all delegated
15
- # calls to that object instead.
16
+ # By defining your own <code>document</code> method, as shown in the example,
17
+ # you will be able to override those settings and initialize a
18
+ # <code>Prawn::Document</code> to your heart's content. This method will be
19
+ # called repeatedly by <code>Prawn::View</code>, so be sure to memoize the
20
+ # object by assigning it to an instance variable via the <code>||=</code>
21
+ # operator.
16
22
 
17
- require_relative "../example_helper"
23
+ require_relative '../example_helper'
18
24
 
19
25
  class Greeter
20
26
  include Prawn::View
@@ -28,15 +34,15 @@ class Greeter
28
34
  end
29
35
 
30
36
  def say_goodbye
31
- font("Courier") do
37
+ font('Courier') do
32
38
  text "Goodbye, #{@name}!"
33
39
  end
34
40
  end
35
41
  end
36
42
 
37
- greeter = Greeter.new("Gregory")
43
+ greeter = Greeter.new('Gregory')
38
44
 
39
45
  greeter.say_hello
40
46
  greeter.say_goodbye
41
47
 
42
- greeter.save_as("greetings.pdf")
48
+ greeter.save_as('greetings.pdf')
@@ -1,36 +1,41 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for bounding boxes.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::ManualBuilder::Example.generate("bounding_box.pdf", :page_size => "FOLIO") do
9
- package "bounding_box" do |p|
10
- p.section "Basics" do |s|
11
- s.example "creation"
12
- s.example "bounds"
5
+ require_relative '../example_helper'
6
+
7
+ filename = File.basename(__FILE__).gsub('.rb', '.pdf')
8
+ Prawn::ManualBuilder::Example.generate(filename, page_size: 'FOLIO') do
9
+ package 'bounding_box' do |p|
10
+ p.section 'Basics' do |s|
11
+ s.example 'creation'
12
+ s.example 'bounds'
13
13
  end
14
14
 
15
- p.section "Advanced" do |s|
16
- s.example "stretchy"
17
- s.example "nesting"
18
- s.example "indentation"
19
- s.example "canvas"
20
- s.example "russian_boxes"
15
+ p.section 'Advanced' do |s|
16
+ s.example 'stretchy'
17
+ s.example 'nesting'
18
+ s.example 'indentation'
19
+ s.example 'canvas'
20
+ s.example 'russian_boxes'
21
21
  end
22
22
 
23
23
  p.intro do
24
- prose("Bounding boxes are the basic containers for structuring the content flow. Even being low level building blocks sometimes their simplicity is very welcome.
24
+ prose <<-TEXT
25
+ Bounding boxes are the basic containers for structuring the content
26
+ flow. Even being low level building blocks sometimes their simplicity is
27
+ very welcome.
25
28
 
26
- The examples show:")
29
+ The examples show:
30
+ TEXT
27
31
 
28
- list( "How to create bounding boxes with specific dimensions",
29
- "How to inspect the current bounding box for its coordinates",
30
- "Stretchy bounding boxes",
31
- "Nested bounding boxes",
32
- "Indent blocks"
33
- )
32
+ list(
33
+ 'How to create bounding boxes with specific dimensions',
34
+ 'How to inspect the current bounding box for its coordinates',
35
+ 'Stretchy bounding boxes',
36
+ 'Nested bounding boxes',
37
+ 'Indent blocks'
38
+ )
34
39
  end
35
40
  end
36
41
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>bounds</code> method returns the current bounding box. This is
4
4
  # useful because the <code>Prawn::BoundingBox</code> exposes some nice boundary
5
5
  # helpers.
@@ -16,9 +16,8 @@
16
16
  #
17
17
  # The following snippet shows the boundaries for the margin box side by side
18
18
  # with the boundaries for a custom bounding box.
19
- #
20
- require File.expand_path(File.join(File.dirname(__FILE__),
21
- %w[.. example_helper]))
19
+
20
+ require_relative '../example_helper'
22
21
 
23
22
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
24
23
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -30,18 +29,18 @@ Prawn::ManualBuilder::Example.generate(filename) do
30
29
 
31
30
  move_down 10
32
31
 
33
- text "absolute top: #{sprintf "%.2f", bounds.absolute_top}"
34
- text "absolute bottom: #{sprintf "%.2f", bounds.absolute_bottom}"
35
- text "absolute left: #{sprintf "%.2f", bounds.absolute_left}"
36
- text "absolute right: #{sprintf "%.2f", bounds.absolute_right}"
32
+ text "absolute top: #{bounds.absolute_top.to_f.round(2)}"
33
+ text "absolute bottom: #{bounds.absolute_bottom.to_f.round(2)}"
34
+ text "absolute left: #{bounds.absolute_left.to_f.round(2)}"
35
+ text "absolute right: #{bounds.absolute_right.to_f.round(2)}"
37
36
  end
38
37
 
39
- text "Margin box bounds:"
38
+ text 'Margin box bounds:'
40
39
  move_down 5
41
40
  print_coordinates
42
41
 
43
- bounding_box([250, cursor + 140], :width => 200, :height => 150) do
44
- text "This bounding box bounds:"
42
+ bounding_box([250, cursor + 140], width: 200, height: 150) do
43
+ text 'This bounding box bounds:'
45
44
  move_down 5
46
45
  print_coordinates
47
46
  transparent(0.5) { stroke_bounds }
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The origin example already mentions that a new document already comes with
4
4
  # a margin box whose bottom left corner is used as the origin for calculating
5
5
  # coordinates.
@@ -9,9 +9,8 @@
9
9
  # box mapped to the absolute coordinates and evaluating the code inside it.
10
10
  #
11
11
  # The following snippet draws a circle on each of the four absolute corners.
12
- #
13
- require File.expand_path(File.join(File.dirname(__FILE__),
14
- %w[.. example_helper]))
12
+
13
+ require_relative '../example_helper'
15
14
 
16
15
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
17
16
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # If you've read the basic concepts examples you probably know that the origin
4
4
  # of a page is on the bottom left corner and that the content flows from top to
5
5
  # bottom.
@@ -9,14 +9,13 @@
9
9
  # A bounding box can be created with the <code>bounding_box</code> method. Just
10
10
  # provide the top left corner, a required <code>:width</code> option and an
11
11
  # optional <code>:height</code>.
12
- #
13
- require File.expand_path(File.join(File.dirname(__FILE__),
14
- %w[.. example_helper]))
12
+
13
+ require_relative '../example_helper'
15
14
 
16
15
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
17
16
  Prawn::ManualBuilder::Example.generate(filename) do
18
- bounding_box([200, cursor - 100], :width => 200, :height => 100) do
19
- text "Just your regular bounding box"
17
+ bounding_box([200, cursor - 100], width: 200, height: 100) do
18
+ text 'Just your regular bounding box'
20
19
 
21
20
  transparent(0.5) { stroke_bounds }
22
21
  end
@@ -1,43 +1,42 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Sometimes you just need to indent a portion of the contents of a bounding box,
4
4
  # and using a nested bounding box is pure overkill. The <code>indent</code>
5
5
  # method is what you might need.
6
6
  #
7
7
  # Just provide a number for it to indent all content generated inside the
8
8
  # block.
9
- #
10
- require File.expand_path(File.join(File.dirname(__FILE__),
11
- %w[.. example_helper]))
9
+
10
+ require_relative '../example_helper'
12
11
 
13
12
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
14
13
  Prawn::ManualBuilder::Example.generate(filename) do
15
- text "No indentation on the margin box."
14
+ text 'No indentation on the margin box.'
16
15
  indent(20) do
17
- text "Some indentation inside an indent block."
16
+ text 'Some indentation inside an indent block.'
18
17
  end
19
18
  move_down 20
20
19
 
21
- bounding_box([50, cursor], :width => 400, :height => cursor) do
20
+ bounding_box([50, cursor], width: 400, height: cursor) do
22
21
  transparent(0.5) { stroke_bounds }
23
22
 
24
23
  move_down 10
25
- text "No indentation inside this bounding box."
24
+ text 'No indentation inside this bounding box.'
26
25
  indent(40) do
27
- text "Inside an indent block. And so is this horizontal line:"
26
+ text 'Inside an indent block. And so is this horizontal line:'
28
27
 
29
28
  stroke_horizontal_rule
30
29
  end
31
30
  move_down 10
32
- text "No indentation"
31
+ text 'No indentation'
33
32
 
34
33
  move_down 20
35
34
  indent(60) do
36
- text "Another indent block."
35
+ text 'Another indent block.'
37
36
 
38
- bounding_box([0, cursor], :width => 200) do
39
- text "Note that this bounding box coordinates are relative to the " +
40
- "indent block"
37
+ bounding_box([0, cursor], width: 200) do
38
+ text 'Note that this bounding box coordinates are relative to the ' \
39
+ 'indent block'
41
40
 
42
41
  transparent(0.5) { stroke_bounds }
43
42
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Normally when we provide the top left corner of a bounding box we
4
4
  # express the coordinates relative to the margin box. This is not the
5
5
  # case when we have nested bounding boxes. Once nested the inner bounding box
@@ -8,9 +8,8 @@
8
8
  # This example shows some nested bounding boxes with fixed and stretchy heights.
9
9
  # Note how the <code>cursor</code> method returns coordinates relative to
10
10
  # the current bounding box.
11
- #
12
- require File.expand_path(File.join(File.dirname(__FILE__),
13
- %w[.. example_helper]))
11
+
12
+ require_relative '../example_helper'
14
13
 
15
14
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
16
15
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -20,26 +19,34 @@ Prawn::ManualBuilder::Example.generate(filename) do
20
19
  end
21
20
 
22
21
  gap = 20
23
- bounding_box([50, cursor], :width => 400, :height => 200) do
24
- box_content("Fixed height")
22
+ bounding_box([50, cursor], width: 400, height: 200) do
23
+ box_content('Fixed height')
25
24
 
26
- bounding_box([gap, cursor - gap], :width => 300) do
27
- text "Stretchy height"
25
+ bounding_box([gap, cursor - gap], width: 300) do
26
+ text 'Stretchy height'
28
27
 
29
- bounding_box([gap, bounds.top - gap], :width => 100) do
30
- text "Stretchy height"
31
- transparent(0.5) { dash(1); stroke_bounds; undash }
28
+ bounding_box([gap, bounds.top - gap], width: 100) do
29
+ text 'Stretchy height'
30
+ transparent(0.5) do
31
+ dash(1)
32
+ stroke_bounds
33
+ undash
34
+ end
32
35
  end
33
36
 
34
- bounding_box([gap * 7, bounds.top - gap], :width => 100, :height => 50) do
35
- box_content("Fixed height")
37
+ bounding_box([gap * 7, bounds.top - gap], width: 100, height: 50) do
38
+ box_content('Fixed height')
36
39
  end
37
40
 
38
- transparent(0.5) { dash(1); stroke_bounds; undash }
41
+ transparent(0.5) do
42
+ dash(1)
43
+ stroke_bounds
44
+ undash
45
+ end
39
46
  end
40
47
 
41
- bounding_box([gap, cursor - gap], :width => 300, :height => 50) do
42
- box_content("Fixed height")
48
+ bounding_box([gap, cursor - gap], width: 300, height: 50) do
49
+ box_content('Fixed height')
43
50
  end
44
51
  end
45
52
  end