prawn 2.1.0 → 2.2.0

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