prawn 2.0.2 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
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
  # 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
@@ -1,29 +1,33 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for defining the document outline.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::ManualBuilder::Example.generate("outline.pdf", :page_size => "FOLIO") do
9
- package "outline" do |p|
10
- p.section "Basics" do |s|
11
- s.example "sections_and_pages", :eval_source => false
5
+ require_relative '../example_helper'
6
+
7
+ Prawn::ManualBuilder::Example.generate('outline.pdf', page_size: 'FOLIO') do
8
+ package 'outline' do |p|
9
+ p.section 'Basics' do |s|
10
+ s.example 'sections_and_pages', eval_source: false
12
11
  end
13
12
 
14
- p.section "Adding nodes later" do |s|
15
- s.example "add_subsection_to", :eval_source => false
16
- s.example "insert_section_after", :eval_source => false
13
+ p.section 'Adding nodes later' do |s|
14
+ s.example 'add_subsection_to', eval_source: false
15
+ s.example 'insert_section_after', eval_source: false
17
16
  end
18
17
 
19
18
  p.intro do
20
- prose("The outline of a PDF document is the table of contents tab you see to the right or left of your PDF viewer.
19
+ prose <<-TEXT
20
+ The outline of a PDF document is the table of contents tab you see to
21
+ the right or left of your PDF viewer.
21
22
 
22
- The examples include:")
23
+ The examples include:
24
+ TEXT
23
25
 
24
- list( "How to define sections and pages",
25
- "How to insert sections and/or pages to a previously defined outline structure"
26
- )
26
+ list(
27
+ 'How to define sections and pages',
28
+ 'How to insert sections and/or pages to a previously defined outline '\
29
+ 'structure'
30
+ )
27
31
  end
28
32
  end
29
33
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The document outline tree is the set of links used to navigate through the
4
4
  # various document sections and pages.
5
5
  #
@@ -23,9 +23,8 @@
23
23
  # <code>section</code> and <code>page</code> may also be used without the
24
24
  # <code>define</code> method but they will need to instantiate the
25
25
  # <code>outline</code> object every time.
26
- #
27
- require File.expand_path(File.join(File.dirname(__FILE__),
28
- %w[.. example_helper]))
26
+
27
+ require_relative '../example_helper'
29
28
 
30
29
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
31
30
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -36,32 +35,32 @@ Prawn::ManualBuilder::Example.generate(filename) do
36
35
  end
37
36
 
38
37
  outline.define do
39
- section("Section 1", :destination => 1) do
40
- page :title => "Page 2", :destination => 2
41
- page :title => "Page 3", :destination => 3
38
+ section('Section 1', destination: 1) do
39
+ page title: 'Page 2', destination: 2
40
+ page title: 'Page 3', destination: 3
42
41
  end
43
42
 
44
- section("Section 2", :destination => 4) do
45
- page :title => "Page 5", :destination => 5
43
+ section('Section 2', destination: 4) do
44
+ page title: 'Page 5', destination: 5
46
45
 
47
- section("Subsection 2.1", :destination => 6, :closed => true) do
48
- page :title => "Page 7", :destination => 7
46
+ section('Subsection 2.1', destination: 6, closed: true) do
47
+ page title: 'Page 7', destination: 7
49
48
  end
50
49
  end
51
50
  end
52
51
 
53
52
  # Outside of the define block
54
- outline.section("Section 3", :destination => 8) do
55
- outline.page :title => "Page 9", :destination => 9
53
+ outline.section('Section 3', destination: 8) do
54
+ outline.page title: 'Page 9', destination: 9
56
55
  end
57
56
 
58
- outline.page :title => "Page 10", :destination => 10
57
+ outline.page title: 'Page 10', destination: 10
59
58
 
60
59
  # Section and Pages without links. While a section without a link may be
61
60
  # useful to group some pages, a page without a link is useless
62
- outline.update do # update is an alias to define
63
- section("Section without link") do
64
- page :title => "Page without link"
61
+ outline.update do # update is an alias to define
62
+ section('Section without link') do
63
+ page title: 'Page without link'
65
64
  end
66
65
  end
67
66
  end
@@ -1,32 +1,36 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Below is the code to generate page numbers that alternate being rendered
4
4
  # on the right and left side of the page. The first page will have a "1" in
5
5
  # the bottom right corner. The second page will have a "2" in the bottom
6
6
  # left corner of the page. The third a "3" in the bottom right, etc.
7
- require File.expand_path(File.join(File.dirname(__FILE__),
8
- %w[.. example_helper]))
7
+
8
+ require_relative '../example_helper'
9
9
 
10
10
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
11
11
  Prawn::ManualBuilder::Example.generate(filename) do
12
- text "This is the first page!"
12
+ text 'This is the first page!'
13
13
 
14
14
  10.times do
15
15
  start_new_page
16
- text "Here comes yet another page."
16
+ text 'Here comes yet another page.'
17
17
  end
18
18
 
19
- string = "<page>"
20
- odd_options = { :at => [bounds.right - 150, 0],
21
- :width => 150,
22
- :align => :right,
23
- :page_filter => :odd,
24
- :start_count_at => 1 }
25
- even_options = { :at => [0, bounds.left],
26
- :width => 150,
27
- :align => :left,
28
- :page_filter => :even,
29
- :start_count_at => 2 }
19
+ string = '<page>'
20
+ odd_options = {
21
+ at: [bounds.right - 150, 0],
22
+ width: 150,
23
+ align: :right,
24
+ page_filter: :odd,
25
+ start_count_at: 1
26
+ }
27
+ even_options = {
28
+ at: [0, bounds.left],
29
+ width: 150,
30
+ align: :left,
31
+ page_filter: :even,
32
+ start_count_at: 2
33
+ }
30
34
  number_pages string, odd_options
31
35
  number_pages string, even_options
32
36
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>number_pages</code> method is a simple way to number the pages of
4
4
  # your document. It should be called towards the end of the document since
5
5
  # pages created after the call won't be numbered.
@@ -20,33 +20,34 @@
20
20
  # <code>color</code> which accepts the same values as <code>fill_color</code>
21
21
  #
22
22
  # As well as any option accepted by <code>text_box</code>
23
- #
24
- require File.expand_path(File.join(File.dirname(__FILE__),
25
- %w[.. example_helper]))
23
+
24
+ require_relative '../example_helper'
26
25
 
27
26
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
28
27
  Prawn::ManualBuilder::Example.generate(filename) do
29
- text "This is the first page!"
28
+ text 'This is the first page!'
30
29
 
31
30
  10.times do
32
31
  start_new_page
33
- text "Here comes yet another page."
32
+ text 'Here comes yet another page.'
34
33
  end
35
34
 
36
- string = "page <page> of <total>"
35
+ string = 'page <page> of <total>'
37
36
  # Green page numbers 1 to 7
38
- options = { :at => [bounds.right - 150, 0],
39
- :width => 150,
40
- :align => :right,
41
- :page_filter => (1..7),
42
- :start_count_at => 1,
43
- :color => "007700" }
37
+ options = {
38
+ at: [bounds.right - 150, 0],
39
+ width: 150,
40
+ align: :right,
41
+ page_filter: (1..7),
42
+ start_count_at: 1,
43
+ color: '007700'
44
+ }
44
45
  number_pages string, options
45
46
 
46
47
  # Gray page numbers from 8 on up
47
- options[:page_filter] = lambda{ |pg| pg > 7 }
48
+ options[:page_filter] = ->(pg) { pg > 7 }
48
49
  options[:start_count_at] = 8
49
- options[:color] = "333333"
50
+ options[:color] = '333333'
50
51
  number_pages string, options
51
52
 
52
53
  start_new_page
@@ -1,29 +1,35 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Examples for stamps and repeaters.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
4
 
8
- Prawn::ManualBuilder::Example.generate("repeatable_content.pdf", :page_size => "FOLIO") do
9
- package "repeatable_content" do |p|
10
- p.example "repeater", :eval_source => false
11
- p.example "stamp"
12
- p.example "page_numbering", :eval_source => false
13
- p.example "alternate_page_numbering", :eval_source => false
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 'repeatable_content' do |p|
10
+ p.example 'repeater', eval_source: false
11
+ p.example 'stamp'
12
+ p.example 'page_numbering', eval_source: false
13
+ p.example 'alternate_page_numbering', eval_source: false
14
14
 
15
15
  p.intro do
16
- prose("Prawn offers two ways to handle repeatable content blocks. Repeater is useful for content that gets repeated at well defined intervals while Stamp is more appropriate if you need better control of when to repeat it.
16
+ prose <<-TEXT
17
+ Prawn offers two ways to handle repeatable content blocks. Repeater is
18
+ useful for content that gets repeated at well defined intervals while
19
+ Stamp is more appropriate if you need better control of when to repeat
20
+ it.
17
21
 
18
- There is also one very specific helper for numbering pages.
22
+ There is also one very specific helper for numbering pages.
19
23
 
20
- The examples show:")
24
+ The examples show:
25
+ TEXT
21
26
 
22
- list( "How to repeat content on several pages with a single invocation",
23
- "How to create a new Stamp",
24
- 'How to "stamp" the content block on the page',
25
- "How to number the document pages with one simple call"
26
- )
27
+ list(
28
+ 'How to repeat content on several pages with a single invocation',
29
+ 'How to create a new Stamp',
30
+ 'How to "stamp" the content block on the page',
31
+ 'How to number the document pages with one simple call'
32
+ )
27
33
  end
28
34
  end
29
35
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # The <code>repeat</code> method is quite versatile when it comes to define
4
4
  # the intervals at which the content block should repeat.
5
5
  #
@@ -14,42 +14,41 @@
14
14
  #
15
15
  # It is also important to say that no matter where you define the repeater it
16
16
  # will be applied to all matching pages.
17
- #
18
- require File.expand_path(File.join(File.dirname(__FILE__),
19
- %w[.. example_helper]))
17
+
18
+ require_relative '../example_helper'
20
19
 
21
20
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
22
21
  Prawn::ManualBuilder::Example.generate(filename) do
23
22
  repeat(:all) do
24
- draw_text "All pages", :at => bounds.top_left
23
+ draw_text 'All pages', at: bounds.top_left
25
24
  end
26
25
 
27
26
  repeat(:odd) do
28
- draw_text "Only odd pages", :at => [0, 0]
27
+ draw_text 'Only odd pages', at: [0, 0]
29
28
  end
30
29
 
31
30
  repeat(:even) do
32
- draw_text "Only even pages", :at => [0, 0]
31
+ draw_text 'Only even pages', at: [0, 0]
33
32
  end
34
33
 
35
34
  repeat([1, 3, 7]) do
36
- draw_text "Only on pages 1, 3 and 7", :at => [100, 0]
35
+ draw_text 'Only on pages 1, 3 and 7', at: [100, 0]
37
36
  end
38
37
 
39
38
  repeat(2..4) do
40
- draw_text "From the 2nd to the 4th page", :at => [300, 0]
39
+ draw_text 'From the 2nd to the 4th page', at: [300, 0]
41
40
  end
42
41
 
43
- repeat(lambda { |pg| pg % 3 == 0 }) do
44
- draw_text "Every third page", :at => [250, 20]
42
+ repeat(->(pg) { (pg % 3).zero? }) do
43
+ draw_text 'Every third page', at: [250, 20]
45
44
  end
46
45
 
47
- repeat(:all, :dynamic => true) do
48
- draw_text page_number, :at => [500, 0]
46
+ repeat(:all, dynamic: true) do
47
+ draw_text page_number, at: [500, 0]
49
48
  end
50
49
 
51
50
  10.times do
52
51
  start_new_page
53
- draw_text "A wonderful page", :at => [400, 400]
52
+ draw_text 'A wonderful page', at: [400, 400]
54
53
  end
55
54
  end
@@ -1,5 +1,5 @@
1
- # encoding: utf-8
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Stamps should be used when you have content that will be included multiple
4
4
  # times in a document. Its advantages over creating the content anew each time
5
5
  # are:
@@ -15,27 +15,26 @@
15
15
  # There are two methods to render the stamp on a page <code>stamp</code> and
16
16
  # <code>stamp_at</code>. The first will render the stamp as is while the
17
17
  # second accepts a point to serve as an offset to the stamp content.
18
- #
19
- require File.expand_path(File.join(File.dirname(__FILE__),
20
- %w[.. example_helper]))
18
+
19
+ require_relative '../example_helper'
21
20
 
22
21
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
23
22
  Prawn::ManualBuilder::Example.generate(filename) do
24
- create_stamp("approved") do
25
- rotate(30, :origin => [-5, -5]) do
26
- stroke_color "FF3333"
23
+ create_stamp('approved') do
24
+ rotate(30, origin: [-5, -5]) do
25
+ stroke_color 'FF3333'
27
26
  stroke_ellipse [0, 0], 29, 15
28
- stroke_color "000000"
27
+ stroke_color '000000'
29
28
 
30
- fill_color "993333"
31
- font("Times-Roman") do
32
- draw_text "Approved", :at => [-23, -3]
29
+ fill_color '993333'
30
+ font('Times-Roman') do
31
+ draw_text 'Approved', at: [-23, -3]
33
32
  end
34
- fill_color "000000"
33
+ fill_color '000000'
35
34
  end
36
35
  end
37
36
 
38
- stamp "approved"
37
+ stamp 'approved'
39
38
 
40
- stamp_at "approved", [200, 200]
39
+ stamp_at 'approved', [200, 200]
41
40
  end