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
  # One of the options that the <code>image</code> method accepts is
4
4
  # <code>:at</code>. If you've read some of the graphics examples you are
5
5
  # probably already familiar with it. Just provide it the upper-left corner where
@@ -8,16 +8,15 @@
8
8
  # While sometimes useful this option won't be practical. Notice that the cursor
9
9
  # won't be moved after the image is rendered and there is nothing forbidding the
10
10
  # text to overlap with the image.
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
  y_position = cursor
18
17
  text "The image won't go below this line of text."
19
18
 
20
- image "#{Prawn::DATADIR}/images/fractal.jpg", :at => [200, y_position]
19
+ image "#{Prawn::DATADIR}/images/fractal.jpg", at: [200, y_position]
21
20
 
22
- text "And this line of text will go just below the previous one."
21
+ text 'And this line of text will go just below the previous one.'
23
22
  end
@@ -1,21 +1,20 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # <code>:fit</code> option is useful when you want the image to have the
4
4
  # maximum size within a container preserving the aspect ratio without
5
5
  # overlapping.
6
6
  #
7
7
  # Just provide the container width and height pair.
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
  size = 300
15
14
 
16
- text "Using the fit option"
17
- bounding_box([0, cursor], :width => size, :height => size) do
18
- image "#{Prawn::DATADIR}/images/pigs.jpg", :fit => [size, size]
15
+ text 'Using the fit option'
16
+ bounding_box([0, cursor], width: size, height: size) do
17
+ image "#{Prawn::DATADIR}/images/pigs.jpg", fit: [size, size]
19
18
  stroke_bounds
20
19
  end
21
20
  end
@@ -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