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,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # The PDF format has some built-in font support. If you want to use other fonts
4
2
  # in Prawn you need to embed the font file.
5
3
  #
@@ -12,26 +10,25 @@
12
10
  # times, providing the path each time it is used becomes cumbersome. The example
13
11
  # on the next page shows a better way to deal with fonts which are used several
14
12
  # times in a document.
15
- #
16
- require File.expand_path(File.join(File.dirname(__FILE__),
17
- %w[.. example_helper]))
13
+
14
+ require_relative '../example_helper'
18
15
 
19
16
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
20
17
  Prawn::ManualBuilder::Example.generate(filename) do
21
18
  # Using a TTF font file
22
19
  font("#{Prawn::DATADIR}/fonts/DejaVuSans.ttf") do
23
- text "Written with the DejaVu Sans TTF font."
20
+ text 'Written with the DejaVu Sans TTF font.'
24
21
  end
25
22
  move_down 20
26
23
 
27
- text "Written with the default font."
24
+ text 'Written with the default font.'
28
25
  move_down 20
29
26
 
30
27
  # Using an DFONT font file
31
28
  font("#{Prawn::DATADIR}/fonts/Panic+Sans.dfont") do
32
- text "Written with the Panic Sans DFONT font"
29
+ text 'Written with the Panic Sans DFONT font'
33
30
  end
34
31
  move_down 20
35
32
 
36
- text "Written with the default font once more."
33
+ text 'Written with the default font once more.'
37
34
  end
@@ -1,70 +1,74 @@
1
- # encoding: utf-8
2
- #
3
1
  # Examples for text rendering.
4
- #
5
- require File.expand_path(File.join(File.dirname(__FILE__),
6
- %w[.. example_helper]))
7
2
 
8
- Prawn::ManualBuilder::Example.generate("text.pdf", :page_size => "FOLIO") do
9
- package "text" do |p|
10
- p.section "Basics" do |s|
11
- s.example "free_flowing_text"
12
- s.example "positioned_text"
13
- s.example "text_box_overflow"
14
- s.example "text_box_excess"
15
- s.example "column_box"
3
+ require '../example_helper'
4
+
5
+ # rubocop: disable Metrics/LineLength
6
+ Prawn::ManualBuilder::Example.generate('text.pdf', page_size: 'FOLIO') do
7
+ package 'text' do |p|
8
+ p.section 'Basics' do |s|
9
+ s.example 'free_flowing_text'
10
+ s.example 'positioned_text'
11
+ s.example 'text_box_overflow'
12
+ s.example 'text_box_excess'
13
+ s.example 'column_box'
16
14
  end
17
15
 
18
- p.section "Styling" do |s|
19
- s.example "font"
20
- s.example "font_size"
21
- s.example "font_style"
22
- s.example "color"
23
- s.example "alignment"
24
- s.example "leading"
25
- s.example "kerning_and_character_spacing"
26
- s.example "paragraph_indentation"
27
- s.example "rotation"
16
+ p.section 'Styling' do |s|
17
+ s.example 'font'
18
+ s.example 'font_size'
19
+ s.example 'font_style'
20
+ s.example 'color'
21
+ s.example 'alignment'
22
+ s.example 'leading'
23
+ s.example 'kerning_and_character_spacing'
24
+ s.example 'paragraph_indentation'
25
+ s.example 'rotation'
28
26
  end
29
27
 
30
- p.section "Advanced Styling" do |s|
31
- s.example "inline"
32
- s.example "formatted_text"
33
- s.example "formatted_callbacks"
34
- s.example "rendering_and_color"
35
- s.example "text_box_extensions"
28
+ p.section 'Advanced Styling' do |s|
29
+ s.example 'inline'
30
+ s.example 'formatted_text'
31
+ s.example 'formatted_callbacks'
32
+ s.example 'rendering_and_color'
33
+ s.example 'text_box_extensions'
36
34
  end
37
35
 
38
- p.section "External Fonts" do |s|
39
- s.example "single_usage"
40
- s.example "registering_families"
36
+ p.section 'External Fonts' do |s|
37
+ s.example 'single_usage'
38
+ s.example 'registering_families'
41
39
  end
42
40
 
43
- p.section "Multilingualization" do |s|
44
- s.example "utf8"
45
- s.example "line_wrapping"
46
- s.example "right_to_left_text"
47
- s.example "fallback_fonts"
48
- s.example "win_ansi_charset"
41
+ p.section 'Multilingualization' do |s|
42
+ s.example 'utf8'
43
+ s.example 'line_wrapping'
44
+ s.example 'right_to_left_text'
45
+ s.example 'fallback_fonts'
46
+ s.example 'win_ansi_charset'
49
47
  end
50
48
 
51
49
  p.intro do
52
- prose("This is probably the feature people will use the most. There is no shortage of options when it comes to text. You'll be hard pressed to find a use case that is not covered by one of the text methods and configurable options.
50
+ prose <<-END
51
+ This is probably the feature people will use the most. There is no
52
+ shortage of options when it comes to text. You'll be hard pressed to
53
+ find a use case that is not covered by one of the text methods and
54
+ configurable options.
53
55
 
54
- The examples show:")
56
+ The examples show:
57
+ END
55
58
 
56
- list( "Text that flows from page to page automatically starting new pages when necessary",
57
- "How to use text boxes and place them on specific positions",
58
- "What to do when a text box is too small to fit its content",
59
- "Flowing text in columns",
60
- "How to change the text style configuring font, size, alignment and many other settings",
61
- "How to style specific portions of a text with inline styling and formatted text",
62
- "How to define formatted callbacks to reuse common styling definitions",
63
- "How to use the different rendering modes available for the text methods",
64
- "How to create your custom text box extensions",
65
- "How to use external fonts on your pdfs",
66
- "What happens when rendering text in different languages"
67
- )
59
+ list(
60
+ 'Text that flows from page to page automatically starting new pages when necessary',
61
+ 'How to use text boxes and place them on specific positions',
62
+ 'What to do when a text box is too small to fit its content',
63
+ 'Flowing text in columns',
64
+ 'How to change the text style configuring font, size, alignment and many other settings',
65
+ 'How to style specific portions of a text with inline styling and formatted text',
66
+ 'How to define formatted callbacks to reuse common styling definitions',
67
+ 'How to use the different rendering modes available for the text methods',
68
+ 'How to create your custom text box extensions',
69
+ 'How to use external fonts on your pdfs',
70
+ 'What happens when rendering text in different languages'
71
+ )
68
72
  end
69
73
  end
70
74
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Whenever the <code>text_box</code> method truncates text, this truncated bit
4
2
  # is not lost, it is the method return value and we can take advantage of that.
5
3
  #
@@ -8,25 +6,28 @@
8
6
  # This example renders as much of the text as will fit in a larger font inside
9
7
  # one text_box and then proceeds to render the remaining text in the default
10
8
  # size in a second text_box.
11
- #
12
- require File.expand_path(File.join(File.dirname(__FILE__),
13
- %w[.. example_helper]))
9
+
10
+ require '../example_helper'
14
11
 
15
12
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
16
13
  Prawn::ManualBuilder::Example.generate(filename) do
17
- string = "This is the beginning of the text. It will be cut somewhere and " +
18
- "the rest of the text will procede to be rendered this time by " +
19
- "calling another method." + " . " * 50
14
+ string = 'This is the beginning of the text. It will be cut somewhere and ' \
15
+ 'the rest of the text will procede to be rendered this time by ' \
16
+ 'calling another method.' + ' . ' * 50
20
17
 
21
18
  y_position = cursor - 20
22
- excess_text = text_box string,
23
- :width => 300,
24
- :height => 50,
25
- :overflow => :truncate,
26
- :at => [100, y_position],
27
- :size => 18
19
+ excess_text = text_box(
20
+ string,
21
+ width: 300,
22
+ height: 50,
23
+ overflow: :truncate,
24
+ at: [100, y_position],
25
+ size: 18
26
+ )
28
27
 
29
- text_box excess_text,
30
- :width => 300,
31
- :at => [100, y_position - 100]
28
+ text_box(
29
+ excess_text,
30
+ width: 300,
31
+ at: [100, y_position - 100]
32
+ )
32
33
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # We've already seen one way of using text boxes with the <code>text_box</code>
4
2
  # method. Turns out this method is just a convenience for using the
5
3
  # <code>Prawn::Text::Box</code> class as it creates a new object and call
@@ -9,9 +7,8 @@
9
7
  # effect when we use the <code>text_box</code> method. To add an extension all
10
8
  # we need to do is append the <code>Prawn::Text::Box.extensions</code> array
11
9
  # with a module.
12
- #
13
- require File.expand_path(File.join(File.dirname(__FILE__),
14
- %w[.. example_helper]))
10
+
11
+ require '../example_helper'
15
12
 
16
13
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
17
14
  Prawn::ManualBuilder::Example.generate(filename) do
@@ -22,22 +19,26 @@ Prawn::ManualBuilder::Example.generate(filename) do
22
19
  end
23
20
 
24
21
  y_position = cursor - 10
25
- width = 100
26
- height = 100
22
+ width = 100
23
+ height = 100
27
24
 
28
25
  Prawn::Text::Box.extensions << TriangleBox
29
26
  stroke_rectangle([0, y_position], width, height)
30
- text_box("A" * 100,
31
- :at => [0, y_position],
32
- :width => width,
33
- :height => height)
27
+ text_box(
28
+ 'A' * 100,
29
+ at: [0, y_position],
30
+ width: width,
31
+ height: height
32
+ )
34
33
 
35
34
  Prawn::Text::Formatted::Box.extensions << TriangleBox
36
35
  stroke_rectangle([200, y_position], width, height)
37
- formatted_text_box([:text => "A" * 100, :color => "009900"],
38
- :at => [200, y_position],
39
- :width => width,
40
- :height => height)
36
+ formatted_text_box(
37
+ [text: 'A' * 100, color: '009900'],
38
+ at: [200, y_position],
39
+ width: width,
40
+ height: height
41
+ )
41
42
 
42
43
  # Here we clear the extensions array
43
44
  Prawn::Text::Box.extensions.clear
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # The <code>text_box</code> method accepts both <code>:width</code> and
4
2
  # <code>:height</code> options. So what happens if the text doesn't fit the box?
5
3
  #
@@ -15,36 +13,35 @@
15
13
  # If the <code>:disable_wrap_by_char</code> is set to <code>true</code>
16
14
  # then any text wrapping done while using the <code>:shrink_to_fit</code>
17
15
  # mode will not break up the middle of words.
18
- #
19
- require File.expand_path(File.join(File.dirname(__FILE__),
20
- %w[.. example_helper]))
16
+
17
+ require_relative '../example_helper'
21
18
 
22
19
  filename = File.basename(__FILE__).gsub('.rb', '.pdf')
23
20
  Prawn::ManualBuilder::Example.generate(filename) do
24
- string = "This is the sample text used for the text boxes. See how it " +
25
- "behave with the various overflow options used."
21
+ string = 'This is the sample text used for the text boxes. See how it ' \
22
+ 'behave with the various overflow options used.'
26
23
 
27
24
  text string
28
25
 
29
26
  y_position = cursor - 20
30
27
  [:truncate, :expand, :shrink_to_fit].each_with_index do |mode, i|
31
- text_box string, :at => [i * 150, y_position],
32
- :width => 100,
33
- :height => 50,
34
- :overflow => mode
28
+ text_box string, at: [i * 150, y_position],
29
+ width: 100,
30
+ height: 50,
31
+ overflow: mode
35
32
  end
36
33
 
37
- string = "If the box is too small for the text, :shrink_to_fit " +
38
- "can render the text in a really small font size."
34
+ string = 'If the box is too small for the text, :shrink_to_fit ' \
35
+ 'can render the text in a really small font size.'
39
36
 
40
37
  move_down 120
41
38
  text string
42
39
  y_position = cursor - 20
43
40
  [nil, 8, 10, 12].each_with_index do |value, index|
44
- text_box string, :at => [index * 150, y_position],
45
- :width => 50,
46
- :height => 50,
47
- :overflow => :shrink_to_fit,
48
- :min_font_size => value
41
+ text_box string, at: [index * 150, y_position],
42
+ width: 50,
43
+ height: 50,
44
+ overflow: :shrink_to_fit,
45
+ min_font_size: value
49
46
  end
50
47
  end
@@ -1,28 +1,25 @@
1
- # encoding: utf-8
2
- #
3
1
  # Multilingualization isn't much of a problem on Prawn as its default encoding
4
2
  # is UTF-8. The only thing you need to worry about is if the font support the
5
3
  # glyphs of your language.
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
- text "Take this example, a simple Euro sign:"
13
- text "", :size => 32
9
+ text 'Take this example, a simple Euro sign:'
10
+ text '', size: 32
14
11
  move_down 20
15
12
 
16
- text "This works, because € is one of the few " +
17
- "non-ASCII glyphs supported in PDF built-in fonts."
13
+ text 'This works, because € is one of the few ' \
14
+ 'non-ASCII glyphs supported in PDF built-in fonts.'
18
15
 
19
16
  move_down 20
20
17
 
21
- text "For full internationalized text support, we need to use TTF fonts:"
18
+ text 'For full internationalized text support, we need to use TTF fonts:'
22
19
  move_down 20
23
20
 
24
21
  font("#{Prawn::DATADIR}/fonts/DejaVuSans.ttf") do
25
- text "ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει."
26
- text "There you go."
22
+ text 'ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει.'
23
+ text 'There you go.'
27
24
  end
28
25
  end
@@ -1,11 +1,8 @@
1
- # encoding: utf-8
2
- #
3
1
  # Prints a list of all of the glyphs that can be rendered by Adobe's built
4
2
  # in fonts, along with their character widths and WinAnsi codes. Be sure
5
3
  # to pass these glyphs as UTF-8, and Prawn will transcode them for you.
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
@@ -14,17 +11,17 @@ Prawn::ManualBuilder::Example.generate(filename) do
14
11
  x = 0
15
12
  y = bounds.top
16
13
 
17
- fields = [[20, :right], [8, :left], [12, :center], [30, :right], [8, :left],
18
- [0, :left]]
14
+ fields = [
15
+ [20, :right], [8, :left], [12, :center], [30, :right], [8, :left],
16
+ [0, :left]
17
+ ]
19
18
 
20
- font "Helvetica", :size => FONT_SIZE
19
+ font 'Helvetica', size: FONT_SIZE
21
20
 
22
- move_down 30
23
- text "(See next page for WinAnsi table)", :align => :center
24
21
  start_new_page
25
22
 
26
23
  Prawn::Encoding::WinAnsi::CHARACTERS.each_with_index do |name, index|
27
- next if name == ".notdef"
24
+ next if name == '.notdef'
28
25
  y -= FONT_SIZE
29
26
 
30
27
  if y < FONT_SIZE
@@ -32,17 +29,17 @@ Prawn::ManualBuilder::Example.generate(filename) do
32
29
  x += 170
33
30
  end
34
31
 
35
- code = "%d." % index
36
- char = index.chr
32
+ code = format('%d.', index)
33
+ char = index.chr.force_encoding(::Encoding::Windows_1252)
37
34
 
38
- width = 1000 * width_of(char, :size => FONT_SIZE) / FONT_SIZE
39
- size = "%d" % width
35
+ width = 1000 * width_of(char, size: FONT_SIZE) / FONT_SIZE
36
+ size = format('%d', width)
40
37
 
41
38
  data = [code, nil, char, size, nil, name]
42
- dx = x
39
+ dx = x
43
40
  fields.zip(data).each do |(total_width, align), field|
44
41
  if field
45
- width = width_of(field, :size => FONT_SIZE)
42
+ width = width_of(field, size: FONT_SIZE)
46
43
 
47
44
  case align
48
45
  when :left then offset = 0
@@ -50,8 +47,10 @@ Prawn::ManualBuilder::Example.generate(filename) do
50
47
  when :center then offset = (total_width - width) / 2
51
48
  end
52
49
 
53
- text_box(field.force_encoding("windows-1252").encode("UTF-8"),
54
- :at => [dx + offset, y])
50
+ text_box(
51
+ field.force_encoding('windows-1252').encode('UTF-8'),
52
+ at: [dx + offset, y]
53
+ )
55
54
  end
56
55
 
57
56
  dx += total_width
@@ -3,41 +3,51 @@ basedir = File.expand_path(File.dirname(__FILE__))
3
3
  require "#{basedir}/lib/prawn/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "prawn"
6
+ spec.name = 'prawn'
7
7
  spec.version = Prawn::VERSION
8
8
  spec.platform = Gem::Platform::RUBY
9
- spec.summary = "A fast and nimble PDF generator for Ruby"
10
- spec.files = Dir.glob("{examples,lib,spec,manual}/**/**/*") +
11
- Dir.glob("data/{encodings,images,pdfs}/*") +
12
- Dir.glob("data/fonts/{MustRead.html,*.afm}") +
13
- ["data/shift_jis_text.txt"] +
14
- ["Rakefile", "prawn.gemspec", "Gemfile",
15
- "COPYING", "LICENSE", "GPLv2", "GPLv3",
16
- ".yardopts"]
17
- spec.require_path = "lib"
18
- spec.required_ruby_version = '>= 2.0.0'
19
- spec.required_rubygems_version = ">= 1.3.6"
20
-
21
- spec.test_files = Dir[ "spec/*_spec.rb" ]
22
- spec.authors = ["Gregory Brown", "Brad Ediger", "Daniel Nelson", "Jonathan Greenberg", "James Healy"]
23
- spec.email = ["gregory.t.brown@gmail.com", "brad@bradediger.com", "dnelson@bluejade.com", "greenberg@entryway.net", "jimmy@deefa.com"]
24
- spec.rubyforge_project = "prawn"
25
- spec.licenses = %w(PRAWN GPL-2.0 GPL-3.0)
26
-
27
- spec.add_dependency('ttfunk', '~> 1.4.0')
28
- spec.add_dependency('pdf-core', "~> 0.6.1")
9
+ spec.summary = 'A fast and nimble PDF generator for Ruby'
10
+
11
+ spec.cert_chain = ['certs/pointlessone.pem']
12
+ if $PROGRAM_NAME.end_with? 'gem'
13
+ spec.signing_key = File.expand_path('~/.ssh/gem-private_key.pem')
14
+ end
15
+
16
+ spec.files = Dir.glob('{examples,lib,spec,manual}/**/**/*') +
17
+ Dir.glob('data/fonts/{MustRead.html,*.afm}') +
18
+ [
19
+ 'Rakefile', 'prawn.gemspec', 'Gemfile',
20
+ 'COPYING', 'LICENSE', 'GPLv2', 'GPLv3',
21
+ '.yardopts'
22
+ ]
23
+ spec.require_path = 'lib'
24
+ spec.required_ruby_version = '~> 2.1'
25
+ spec.required_rubygems_version = '>= 1.3.6'
26
+
27
+ spec.authors = [
28
+ 'Gregory Brown', 'Brad Ediger', 'Daniel Nelson', 'Jonathan Greenberg',
29
+ 'James Healy'
30
+ ]
31
+ spec.email = [
32
+ 'gregory.t.brown@gmail.com', 'brad@bradediger.com', 'dnelson@bluejade.com',
33
+ 'greenberg@entryway.net', 'jimmy@deefa.com'
34
+ ]
35
+ spec.licenses = %w[PRAWN GPL-2.0 GPL-3.0]
36
+
37
+ spec.add_dependency('ttfunk', '~> 1.5')
38
+ spec.add_dependency('pdf-core', '~> 0.7.0')
29
39
 
30
40
  spec.add_development_dependency('pdf-inspector', '~> 1.2.1')
31
41
  spec.add_development_dependency('yard')
32
42
  spec.add_development_dependency('rspec', '~> 3.0')
33
- spec.add_development_dependency('rake')
43
+ spec.add_development_dependency('rake', '~> 12.0')
34
44
  spec.add_development_dependency('simplecov')
35
- spec.add_development_dependency('prawn-manual_builder', ">= 0.2.0")
36
- spec.add_development_dependency('pdf-reader', '~>1.2')
37
- spec.add_development_dependency('rubocop', '0.30.1')
38
- spec.add_development_dependency('code_statistics', '0.2.13')
45
+ spec.add_development_dependency('prawn-manual_builder', '>= 0.2.0')
46
+ spec.add_development_dependency('pdf-reader', ['~> 1.4', '>= 1.4.1'])
47
+ spec.add_development_dependency('rubocop', '~> 0.47.1')
48
+ spec.add_development_dependency('rubocop-rspec', '~> 1.10')
39
49
 
40
- spec.homepage = "http://prawn.majesticseacreature.com"
50
+ spec.homepage = 'http://prawnpdf.org'
41
51
  spec.description = <<END_DESC
42
52
  Prawn is a fast, tiny, and nimble PDF generator for Ruby
43
53
  END_DESC