prawn 2.1.0 → 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 (280) 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 +36 -49
  8. data/lib/prawn/document.rb +180 -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 +8 -6
  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 +102 -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 +119 -81
  23. data/lib/prawn/graphics/blend_mode.rb +9 -8
  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 +190 -96
  29. data/lib/prawn/graphics/transformation.rb +15 -9
  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 +65 -62
  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 +53 -32
  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 +122 -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 +7 -5
  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 +12 -9
  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 -40
  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 +3 -4
  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 +44 -31
  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/{image_handler_spec.rb → prawn/image_handler_spec.rb} +14 -14
  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/{transformation_stack_spec.rb → prawn/transformation_stack_spec.rb} +22 -19
  195. data/spec/prawn/view_spec.rb +63 -0
  196. data/spec/prawn_manual_spec.rb +35 -0
  197. data/spec/spec_helper.rb +18 -19
  198. metadata +144 -180
  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/blend_modes_bottom_layer.jpg +0 -0
  206. data/data/images/blend_modes_top_layer.jpg +0 -0
  207. data/data/images/dice.alpha +0 -0
  208. data/data/images/dice.color +0 -0
  209. data/data/images/dice.png +0 -0
  210. data/data/images/dice_interlaced.png +0 -0
  211. data/data/images/fractal.jpg +0 -0
  212. data/data/images/indexed_color.dat +0 -0
  213. data/data/images/indexed_color.png +0 -0
  214. data/data/images/indexed_transparency.png +0 -0
  215. data/data/images/indexed_transparency_alpha.dat +0 -0
  216. data/data/images/indexed_transparency_color.dat +0 -0
  217. data/data/images/letterhead.jpg +0 -0
  218. data/data/images/license.md +0 -8
  219. data/data/images/page_white_text.alpha +0 -0
  220. data/data/images/page_white_text.color +0 -0
  221. data/data/images/page_white_text.png +0 -0
  222. data/data/images/pigs.jpg +0 -0
  223. data/data/images/prawn.png +0 -0
  224. data/data/images/ruport.png +0 -0
  225. data/data/images/ruport_data.dat +0 -0
  226. data/data/images/ruport_transparent.png +0 -0
  227. data/data/images/ruport_type0.png +0 -0
  228. data/data/images/stef.jpg +0 -0
  229. data/data/images/tru256.bmp +0 -0
  230. data/data/images/web-links.dat +0 -1
  231. data/data/images/web-links.png +0 -0
  232. data/data/pdfs/complex_template.pdf +0 -0
  233. data/data/pdfs/contains_ttf_font.pdf +0 -0
  234. data/data/pdfs/encrypted.pdf +0 -0
  235. data/data/pdfs/form.pdf +1 -819
  236. data/data/pdfs/hexagon.pdf +0 -61
  237. data/data/pdfs/indirect_reference.pdf +0 -86
  238. data/data/pdfs/multipage_template.pdf +0 -127
  239. data/data/pdfs/nested_pages.pdf +0 -118
  240. data/data/pdfs/page_without_mediabox.pdf +0 -193
  241. data/data/pdfs/resources_as_indirect_object.pdf +0 -83
  242. data/data/pdfs/two_hexagons.pdf +0 -90
  243. data/data/pdfs/version_1_6.pdf +0 -61
  244. data/data/shift_jis_text.txt +0 -1
  245. data/spec/acceptance/png_spec.rb +0 -35
  246. data/spec/annotations_spec.rb +0 -67
  247. data/spec/blend_mode_spec.rb +0 -71
  248. data/spec/bounding_box_spec.rb +0 -501
  249. data/spec/column_box_spec.rb +0 -59
  250. data/spec/destinations_spec.rb +0 -13
  251. data/spec/document_spec.rb +0 -738
  252. data/spec/font_metric_cache_spec.rb +0 -52
  253. data/spec/font_spec.rb +0 -475
  254. data/spec/formatted_text_arranger_spec.rb +0 -452
  255. data/spec/formatted_text_box_spec.rb +0 -716
  256. data/spec/formatted_text_fragment_spec.rb +0 -299
  257. data/spec/graphics_spec.rb +0 -705
  258. data/spec/grid_spec.rb +0 -95
  259. data/spec/images_spec.rb +0 -167
  260. data/spec/inline_formatted_text_parser_spec.rb +0 -568
  261. data/spec/jpg_spec.rb +0 -23
  262. data/spec/line_wrap_spec.rb +0 -366
  263. data/spec/measurement_units_spec.rb +0 -22
  264. data/spec/outline_spec.rb +0 -409
  265. data/spec/png_spec.rb +0 -257
  266. data/spec/reference_spec.rb +0 -25
  267. data/spec/repeater_spec.rb +0 -154
  268. data/spec/security_spec.rb +0 -151
  269. data/spec/soft_mask_spec.rb +0 -78
  270. data/spec/span_spec.rb +0 -43
  271. data/spec/stamp_spec.rb +0 -179
  272. data/spec/stroke_styles_spec.rb +0 -208
  273. data/spec/text_at_spec.rb +0 -142
  274. data/spec/text_box_spec.rb +0 -1042
  275. data/spec/text_rendering_mode_spec.rb +0 -45
  276. data/spec/text_spacing_spec.rb +0 -93
  277. data/spec/text_spec.rb +0 -543
  278. data/spec/text_with_inline_formatting_spec.rb +0 -35
  279. data/spec/transparency_spec.rb +0 -91
  280. data/spec/view_spec.rb +0 -42
@@ -1,25 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The image may be positioned relatively to the current bounding box. The
4
4
  # horizontal position may be set with the <code>:position</code> option.
5
5
  #
6
6
  # It may be <code>:left</code>, <code>:center</code>, <code>:right</code> or a
7
7
  # number representing an x-offset from the left boundary.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
12
  Prawn::ManualBuilder::Example.generate(filename) do
14
- bounding_box([50, cursor], :width => 400, :height => 450) do
13
+ bounding_box([50, cursor], width: 400, height: 450) do
15
14
  stroke_bounds
16
15
 
17
- [:left, :center, :right].each do |position|
16
+ %i[left center right].each do |position|
18
17
  text "Image aligned to the #{position}."
19
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => position
18
+ image "#{Prawn::DATADIR}/images/stef.jpg", position: position
20
19
  end
21
20
 
22
- text "The next image has a 50 point offset from the left boundary"
23
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => 50
21
+ text 'The next image has a 50 point offset from the left boundary'
22
+ image "#{Prawn::DATADIR}/images/stef.jpg", position: 50
24
23
  end
25
24
  end
@@ -1,37 +1,41 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for embedding images.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
-
8
- Prawn::ManualBuilder::Example.generate("images.pdf", :page_size => "FOLIO") do
9
- package "images" do |p|
10
- p.section "Basics" do |s|
11
- s.example "plain_image"
12
- s.example "absolute_position"
4
+
5
+ require_relative '../example_helper'
6
+
7
+ Prawn::ManualBuilder::Example.generate('images.pdf', page_size: 'FOLIO') do
8
+ package 'images' do |p|
9
+ p.section 'Basics' do |s|
10
+ s.example 'plain_image'
11
+ s.example 'absolute_position'
13
12
  end
14
13
 
15
- p.section "Relative Positioning" do |s|
16
- s.example "horizontal"
17
- s.example "vertical"
14
+ p.section 'Relative Positioning' do |s|
15
+ s.example 'horizontal'
16
+ s.example 'vertical'
18
17
  end
19
18
 
20
- p.section "Size" do |s|
21
- s.example "width_and_height"
22
- s.example "scale"
23
- s.example "fit"
19
+ p.section 'Size' do |s|
20
+ s.example 'width_and_height'
21
+ s.example 'scale'
22
+ s.example 'fit'
24
23
  end
25
24
 
26
25
  p.intro do
27
- prose("Embedding images on PDF documents is fairly easy. Prawn supports both JPG and PNG images.
26
+ prose <<-TEXT
27
+ Embedding images on PDF documents is fairly easy. Prawn supports both
28
+ JPG and PNG images.
28
29
 
29
- The examples show:")
30
+ The examples show:
31
+ TEXT
30
32
 
31
- list( "How to add an image to a page",
32
- "How place the image on a specific position",
33
- "How to configure the image dimensions by setting the width and height or by scaling it"
34
- )
33
+ list(
34
+ 'How to add an image to a page',
35
+ 'How place the image on a specific position',
36
+ 'How to configure the image dimensions by setting the width and '\
37
+ 'height or by scaling it'
38
+ )
35
39
  end
36
40
  end
37
41
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To embed images onto your PDF file use the <code>image</code> method.
4
4
  # It accepts the file path of the image to be loaded and some optional
5
5
  # arguments.
@@ -7,12 +7,11 @@
7
7
  # If only the image path is provided the image will be rendered starting on
8
8
  # the cursor position. No manipulation is done with the image even if it doesn't
9
9
  # fit entirely on the page like the following snippet.
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ require_relative '../example_helper'
13
12
 
14
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
14
  Prawn::ManualBuilder::Example.generate(filename) do
16
- text "The image will go right below this line of text."
15
+ text 'The image will go right below this line of text.'
17
16
  image "#{Prawn::DATADIR}/images/pigs.jpg"
18
17
  end
@@ -1,22 +1,21 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To scale an image use the <code>:scale</code> option.
4
4
  #
5
5
  # It scales the image proportionally given the provided value.
6
- #
7
- require File.expand_path(File.join(File.dirname(__FILE__),
8
- %w[.. example_helper]))
6
+
7
+ require_relative '../example_helper'
9
8
 
10
9
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
11
10
  Prawn::ManualBuilder::Example.generate(filename) do
12
- text "Normal size"
11
+ text 'Normal size'
13
12
  image "#{Prawn::DATADIR}/images/stef.jpg"
14
13
  move_down 20
15
14
 
16
- text "Scaled to 50%"
17
- image "#{Prawn::DATADIR}/images/stef.jpg", :scale => 0.5
15
+ text 'Scaled to 50%'
16
+ image "#{Prawn::DATADIR}/images/stef.jpg", scale: 0.5
18
17
  move_down 20
19
18
 
20
- text "Scaled to 200%"
21
- image "#{Prawn::DATADIR}/images/stef.jpg", :scale => 2
19
+ text 'Scaled to 200%'
20
+ image "#{Prawn::DATADIR}/images/stef.jpg", scale: 2
22
21
  end
@@ -1,28 +1,27 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # To set the vertical position of an image use the <code>:vposition</code>
4
4
  # option.
5
5
  #
6
6
  # It may be <code>:top</code>, <code>:center</code>, <code>:bottom</code> or a
7
7
  # number representing the y-offset from the top boundary.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
12
  Prawn::ManualBuilder::Example.generate(filename) do
14
- bounding_box([0, cursor], :width => 500, :height => 450) do
13
+ bounding_box([0, cursor], width: 500, height: 450) do
15
14
  stroke_bounds
16
15
 
17
- [:top, :center, :bottom].each do |vposition|
18
- text "Image vertically aligned to the #{vposition}.", :valign => vposition
19
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => 250,
20
- :vposition => vposition
16
+ %i[top center bottom].each do |vposition|
17
+ text "Image vertically aligned to the #{vposition}.", valign: vposition
18
+ image "#{Prawn::DATADIR}/images/stef.jpg",
19
+ position: 250, vposition: vposition
21
20
  end
22
21
 
23
- text_box "The next image has a 100 point offset from the top boundary",
24
- :at => [bounds.width - 110, bounds.top - 10], :width => 100
25
- image "#{Prawn::DATADIR}/images/stef.jpg", :position => :right,
26
- :vposition => 100
22
+ text_box 'The next image has a 100 point offset from the top boundary',
23
+ at: [bounds.width - 110, bounds.top - 10], width: 100
24
+ image "#{Prawn::DATADIR}/images/stef.jpg",
25
+ position: :right, vposition: 100
27
26
  end
28
27
  end
@@ -1,25 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The image size can be set with the <code>:width</code> and
4
4
  # <code>:height</code> options.
5
5
  #
6
6
  # If only one of those is provided, the image will be scaled proportionally.
7
7
  # When both are provided, the image will be stretched to fit the dimensions
8
8
  # without maintaining the aspect ratio.
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 "Scale by setting only the width"
16
- image "#{Prawn::DATADIR}/images/pigs.jpg", :width => 150
14
+ text 'Scale by setting only the width'
15
+ image "#{Prawn::DATADIR}/images/pigs.jpg", width: 150
17
16
  move_down 20
18
17
 
19
- text "Scale by setting only the height"
20
- image "#{Prawn::DATADIR}/images/pigs.jpg", :height => 100
18
+ text 'Scale by setting only the height'
19
+ image "#{Prawn::DATADIR}/images/pigs.jpg", height: 100
21
20
  move_down 20
22
21
 
23
- text "Stretch to fit the width and height provided"
24
- image "#{Prawn::DATADIR}/images/pigs.jpg", :width => 500, :height => 100
22
+ text 'Stretch to fit the width and height provided'
23
+ image "#{Prawn::DATADIR}/images/pigs.jpg", width: 500, height: 100
25
24
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # After defined the grid is there but nothing happens. To start taking effect
4
4
  # we need to use the grid boxes.
5
5
  #
@@ -7,15 +7,14 @@
7
7
  # received. With no arguments it will return the grid itself. With integers it
8
8
  # will return the grid box at those indices. With two arrays it will return a
9
9
  # multi-box spanning the region of the two grid boxes at the arrays indices.
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ require_relative '../example_helper'
13
12
 
14
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
14
  Prawn::ManualBuilder::Example.generate(filename) do
16
15
  # The grid only need to be defined once, but since all the examples should be
17
16
  # able to run alone we are repeating it on every example
18
- define_grid(:columns => 5, :rows => 8, :gutter => 10)
17
+ define_grid(columns: 5, rows: 8, gutter: 10)
19
18
 
20
19
  grid(4, 0).show
21
20
  grid(5, 1).show
@@ -1,25 +1,24 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Now that we know how to access the boxes we might as well add some content
4
4
  # to them.
5
5
  #
6
6
  # This can be done by taping into the bounding box for a given grid box or
7
7
  # multi-box with the <code>bounding_box</code> method.
8
- #
9
- require File.expand_path(File.join(File.dirname(__FILE__),
10
- %w[.. example_helper]))
8
+
9
+ require_relative '../example_helper'
11
10
 
12
11
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
13
12
  Prawn::ManualBuilder::Example.generate(filename) do
14
13
  # The grid only need to be defined once, but since all the examples should be
15
14
  # able to run alone we are repeating it on every example
16
- define_grid(:columns => 5, :rows => 8, :gutter => 10)
15
+ define_grid(columns: 5, rows: 8, gutter: 10)
17
16
 
18
17
  grid([5, 0], [7, 1]).bounding_box do
19
- text "Adding some content to this multi_box.\n" + " _ " * 200
18
+ text "Adding some content to this multi_box.\n" + ' _ ' * 200
20
19
  end
21
20
 
22
21
  grid(6, 3).bounding_box do
23
- text "Just a little snippet here.\n" + " _ " * 10
22
+ text "Just a little snippet here.\n" + ' _ ' * 10
24
23
  end
25
24
  end
@@ -1,25 +1,27 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for using grid layouts.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::ManualBuilder::Example.generate("layout.pdf", :page_size => "FOLIO") do
9
- package "layout" do |p|
10
- p.example "simple_grid"
11
- p.example "boxes"
12
- p.example "content"
5
+ require_relative '../example_helper'
6
+
7
+ Prawn::ManualBuilder::Example.generate('layout.pdf', page_size: 'FOLIO') do
8
+ package 'layout' do |p|
9
+ p.example 'simple_grid'
10
+ p.example 'boxes'
11
+ p.example 'content'
13
12
 
14
13
  p.intro do
15
- prose("Prawn has support for two-dimensional grid based layouts out of the box.
14
+ prose <<-TEXT
15
+ Prawn has support for two-dimensional grid based layouts out of the box.
16
16
 
17
- The examples show:")
17
+ The examples show:
18
+ TEXT
18
19
 
19
- list( "How to define the document grid",
20
- "How to configure the grid rows and columns gutters",
21
- "How to create boxes according to the grid"
22
- )
20
+ list(
21
+ 'How to define the document grid',
22
+ 'How to configure the grid rows and columns gutters',
23
+ 'How to create boxes according to the grid'
24
+ )
23
25
  end
24
26
  end
25
27
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The document grid on Prawn is just a table-like structure with a defined
4
4
  # number of rows and columns. There are some helpers to create boxes of content
5
5
  # based on the grid coordinates.
@@ -7,16 +7,15 @@
7
7
  # <code>define_grid</code> accepts the following options which are pretty much
8
8
  # self-explanatory: <code>:rows</code>, <code>:columns</code>,
9
9
  # <code>:gutter</code>, <code>:row_gutter</code>, <code>:column_gutter</code>
10
- #
11
- require File.expand_path(File.join(File.dirname(__FILE__),
12
- %w[.. example_helper]))
10
+
11
+ require_relative '../example_helper'
13
12
 
14
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
15
14
  Prawn::ManualBuilder::Example.generate(filename) do
16
15
  # The grid only need to be defined once, but since all the examples should be
17
16
  # able to run alone we are repeating it on every example
18
- define_grid(:columns => 5, :rows => 8, :gutter => 10)
19
- text "We defined the grid, roll over to the next page to see its outline"
17
+ define_grid(columns: 5, rows: 8, gutter: 10)
18
+ text 'We defined the grid, roll over to the next page to see its outline'
20
19
 
21
20
  start_new_page
22
21
  grid.show_all
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # We have already seen how to define an outline tree sequentially.
4
4
  #
5
5
  # If you'd like to add nodes to the middle of an outline tree the
@@ -16,9 +16,8 @@
16
16
  #
17
17
  # If the parent title provided is the title of a page. The page will be
18
18
  # converted into a section to receive the subsection created.
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
@@ -29,33 +28,33 @@ Prawn::ManualBuilder::Example.generate(filename) do
29
28
  end
30
29
 
31
30
  outline.define do
32
- section("Section 1", :destination => 1) do
33
- page :title => "Page 2", :destination => 2
34
- page :title => "Page 3", :destination => 3
31
+ section('Section 1', destination: 1) do
32
+ page title: 'Page 2', destination: 2
33
+ page title: 'Page 3', destination: 3
35
34
  end
36
35
  end
37
36
 
38
37
  # Now we will start adding nodes to the previous outline
39
- outline.add_subsection_to("Section 1", :first) do
40
- outline.section("Added later - first position") do
41
- outline.page :title => "Page 4", :destination => 4
42
- outline.page :title => "Page 5", :destination => 5
38
+ outline.add_subsection_to('Section 1', :first) do
39
+ outline.section('Added later - first position') do
40
+ outline.page title: 'Page 4', destination: 4
41
+ outline.page title: 'Page 5', destination: 5
43
42
  end
44
43
  end
45
44
 
46
- outline.add_subsection_to("Section 1") do
47
- outline.page :title => "Added later - last position",
48
- :destination => 6
45
+ outline.add_subsection_to('Section 1') do
46
+ outline.page title: 'Added later - last position',
47
+ destination: 6
49
48
  end
50
49
 
51
- outline.add_subsection_to("Added later - first position") do
52
- outline.page :title => "Another page added later",
53
- :destination => 7
50
+ outline.add_subsection_to('Added later - first position') do
51
+ outline.page title: 'Another page added later',
52
+ destination: 7
54
53
  end
55
54
 
56
55
  # The title provided is for a page which will be converted into a section
57
- outline.add_subsection_to("Page 3") do
58
- outline.page :title => "Last page added",
59
- :destination => 8
56
+ outline.add_subsection_to('Page 3') do
57
+ outline.page title: 'Last page added',
58
+ destination: 8
60
59
  end
61
60
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Another way to insert nodes into an existing outline is the
4
4
  # <code>insert_section_after</code> method.
5
5
  #
@@ -8,9 +8,8 @@
8
8
  #
9
9
  # As is the case with <code>add_subsection_to</code> the section added
10
10
  # doesn't need to be a section, it may be just a page.
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
@@ -21,27 +20,27 @@ Prawn::ManualBuilder::Example.generate(filename) do
21
20
  end
22
21
 
23
22
  outline.define do
24
- section("Section 1", :destination => 1) do
25
- page :title => "Page 2", :destination => 2
26
- page :title => "Page 3", :destination => 3
23
+ section('Section 1', destination: 1) do
24
+ page title: 'Page 2', destination: 2
25
+ page title: 'Page 3', destination: 3
27
26
  end
28
27
  end
29
28
 
30
29
  # Now we will start adding nodes to the previous outline
31
- outline.insert_section_after("Page 2") do
32
- outline.section("Section after Page 2") do
33
- outline.page :title => "Page 4", :destination => 4
30
+ outline.insert_section_after('Page 2') do
31
+ outline.section('Section after Page 2') do
32
+ outline.page title: 'Page 4', destination: 4
34
33
  end
35
34
  end
36
35
 
37
- outline.insert_section_after("Section 1") do
38
- outline.section("Section after Section 1") do
39
- outline.page :title => "Page 5", :destination => 5
36
+ outline.insert_section_after('Section 1') do
37
+ outline.section('Section after Section 1') do
38
+ outline.page title: 'Page 5', destination: 5
40
39
  end
41
40
  end
42
41
 
43
42
  # Adding just a page
44
- outline.insert_section_after("Page 3") do
45
- outline.page :title => "Page after Page 3", :destination => 6
43
+ outline.insert_section_after('Page 3') do
44
+ outline.page title: 'Page after Page 3', destination: 6
46
45
  end
47
46
  end