prawn 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +7 -5
  3. data/lib/prawn.rb +4 -4
  4. data/lib/prawn/document.rb +47 -46
  5. data/lib/prawn/document/bounding_box.rb +13 -19
  6. data/lib/prawn/document/column_box.rb +3 -5
  7. data/lib/prawn/document/internals.rb +0 -1
  8. data/lib/prawn/document/span.rb +12 -12
  9. data/lib/prawn/errors.rb +32 -33
  10. data/lib/prawn/font.rb +29 -36
  11. data/lib/prawn/font/afm.rb +20 -20
  12. data/lib/prawn/font/dfont.rb +0 -1
  13. data/lib/prawn/font/ttf.rb +30 -27
  14. data/lib/prawn/font_metric_cache.rb +4 -8
  15. data/lib/prawn/graphics.rb +37 -42
  16. data/lib/prawn/graphics/cap_style.rb +1 -1
  17. data/lib/prawn/graphics/color.rb +21 -23
  18. data/lib/prawn/graphics/dash.rb +5 -6
  19. data/lib/prawn/graphics/join_style.rb +1 -2
  20. data/lib/prawn/graphics/patterns.rb +25 -21
  21. data/lib/prawn/graphics/transformation.rb +4 -5
  22. data/lib/prawn/graphics/transparency.rb +6 -8
  23. data/lib/prawn/grid.rb +21 -14
  24. data/lib/prawn/image_handler.rb +2 -2
  25. data/lib/prawn/images.rb +29 -31
  26. data/lib/prawn/images/image.rb +1 -1
  27. data/lib/prawn/images/jpg.rb +10 -12
  28. data/lib/prawn/images/png.rb +13 -13
  29. data/lib/prawn/measurements.rb +7 -14
  30. data/lib/prawn/outline.rb +6 -6
  31. data/lib/prawn/repeater.rb +1 -5
  32. data/lib/prawn/security.rb +17 -25
  33. data/lib/prawn/security/arcfour.rb +1 -1
  34. data/lib/prawn/soft_mask.rb +11 -12
  35. data/lib/prawn/stamp.rb +16 -8
  36. data/lib/prawn/text.rb +23 -20
  37. data/lib/prawn/text/box.rb +3 -6
  38. data/lib/prawn/text/formatted/arranger.rb +9 -12
  39. data/lib/prawn/text/formatted/box.rb +23 -22
  40. data/lib/prawn/text/formatted/fragment.rb +0 -4
  41. data/lib/prawn/text/formatted/line_wrap.rb +13 -24
  42. data/lib/prawn/text/formatted/parser.rb +16 -20
  43. data/lib/prawn/text/formatted/wrap.rb +2 -7
  44. data/lib/prawn/utilities.rb +6 -3
  45. data/lib/prawn/version.rb +1 -1
  46. data/manual/basic_concepts/basic_concepts.rb +0 -2
  47. data/manual/basic_concepts/view.rb +1 -1
  48. data/manual/bounding_box/bounding_box.rb +0 -3
  49. data/manual/bounding_box/russian_boxes.rb +7 -8
  50. data/manual/bounding_box/stretchy.rb +0 -1
  51. data/manual/contents.rb +2 -2
  52. data/manual/cover.rb +11 -12
  53. data/manual/document_and_page_options/document_and_page_options.rb +2 -5
  54. data/manual/document_and_page_options/metadata.rb +10 -10
  55. data/manual/document_and_page_options/page_size.rb +0 -1
  56. data/manual/graphics/fill_rules.rb +5 -4
  57. data/manual/graphics/graphics.rb +0 -3
  58. data/manual/graphics/lines_and_curves.rb +1 -1
  59. data/manual/graphics/rotate.rb +0 -2
  60. data/manual/graphics/scale.rb +4 -2
  61. data/manual/graphics/soft_masks.rb +0 -1
  62. data/manual/graphics/stroke_cap.rb +1 -1
  63. data/manual/graphics/stroke_join.rb +1 -1
  64. data/manual/graphics/translate.rb +3 -3
  65. data/manual/graphics/transparency.rb +0 -1
  66. data/manual/how_to_read_this_manual.rb +0 -1
  67. data/manual/images/images.rb +0 -3
  68. data/manual/layout/boxes.rb +5 -5
  69. data/manual/layout/content.rb +2 -2
  70. data/manual/layout/layout.rb +0 -3
  71. data/manual/outline/outline.rb +0 -3
  72. data/manual/repeatable_content/page_numbering.rb +1 -1
  73. data/manual/repeatable_content/repeatable_content.rb +0 -3
  74. data/manual/repeatable_content/repeater.rb +6 -6
  75. data/manual/security/encryption.rb +0 -2
  76. data/manual/security/permissions.rb +0 -2
  77. data/manual/security/security.rb +0 -3
  78. data/manual/text/alignment.rb +3 -3
  79. data/manual/text/color.rb +0 -1
  80. data/manual/text/column_box.rb +0 -1
  81. data/manual/text/fallback_fonts.rb +2 -2
  82. data/manual/text/formatted_callbacks.rb +3 -2
  83. data/manual/text/paragraph_indentation.rb +2 -3
  84. data/manual/text/registering_families.rb +13 -9
  85. data/manual/text/rotation.rb +0 -1
  86. data/manual/text/text.rb +0 -3
  87. data/manual/text/text_box_overflow.rb +7 -5
  88. data/manual/text/utf8.rb +1 -1
  89. data/manual/text/win_ansi_charset.rb +2 -2
  90. data/prawn.gemspec +4 -4
  91. data/spec/acceptance/png.rb +6 -7
  92. data/spec/annotations_spec.rb +21 -28
  93. data/spec/bounding_box_spec.rb +100 -109
  94. data/spec/column_box_spec.rb +26 -32
  95. data/spec/destinations_spec.rb +2 -4
  96. data/spec/document_spec.rb +145 -151
  97. data/spec/extensions/mocha.rb +0 -1
  98. data/spec/font_metric_cache_spec.rb +7 -7
  99. data/spec/font_spec.rb +103 -102
  100. data/spec/formatted_text_arranger_spec.rb +76 -74
  101. data/spec/formatted_text_box_spec.rb +170 -159
  102. data/spec/formatted_text_fragment_spec.rb +57 -56
  103. data/spec/graphics_spec.rb +158 -175
  104. data/spec/grid_spec.rb +28 -29
  105. data/spec/image_handler_spec.rb +4 -5
  106. data/spec/images_spec.rb +50 -36
  107. data/spec/inline_formatted_text_parser_spec.rb +397 -393
  108. data/spec/jpg_spec.rb +4 -6
  109. data/spec/line_wrap_spec.rb +54 -55
  110. data/spec/measurement_units_spec.rb +12 -15
  111. data/spec/outline_spec.rb +77 -98
  112. data/spec/png_spec.rb +55 -65
  113. data/spec/reference_spec.rb +3 -3
  114. data/spec/repeater_spec.rb +20 -26
  115. data/spec/security_spec.rb +42 -49
  116. data/spec/soft_mask_spec.rb +4 -5
  117. data/spec/span_spec.rb +5 -6
  118. data/spec/spec_helper.rb +2 -4
  119. data/spec/stamp_spec.rb +41 -22
  120. data/spec/stroke_styles_spec.rb +36 -39
  121. data/spec/text_at_spec.rb +28 -29
  122. data/spec/text_box_spec.rb +160 -165
  123. data/spec/text_rendering_mode_spec.rb +9 -9
  124. data/spec/text_spacing_spec.rb +13 -13
  125. data/spec/text_spec.rb +116 -124
  126. data/spec/text_with_inline_formatting_spec.rb +5 -5
  127. data/spec/transparency_spec.rb +20 -20
  128. data/spec/view_spec.rb +0 -1
  129. metadata +7 -7
@@ -9,16 +9,16 @@ describe "#text_rendering_mode" do
9
9
  @pdf.text("hello world")
10
10
  end
11
11
  contents = PDF::Inspector::Text.analyze(@pdf.render)
12
- contents.text_rendering_mode.first.should == 1
12
+ expect(contents.text_rendering_mode.first).to eq(1)
13
13
  end
14
- it "should not draw the text rendering mode to the document" +
14
+ it "should not draw the text rendering mode to the document" \
15
15
  " when the new mode matches the old" do
16
16
  create_pdf
17
17
  @pdf.text_rendering_mode(:fill) do
18
18
  @pdf.text("hello world")
19
19
  end
20
20
  contents = PDF::Inspector::Text.analyze(@pdf.render)
21
- contents.text_rendering_mode.should be_empty
21
+ expect(contents.text_rendering_mode).to be_empty
22
22
  end
23
23
  it "should restore character spacing to 0" do
24
24
  create_pdf
@@ -26,20 +26,20 @@ describe "#text_rendering_mode" do
26
26
  @pdf.text("hello world")
27
27
  end
28
28
  contents = PDF::Inspector::Text.analyze(@pdf.render)
29
- contents.text_rendering_mode.should == [1,0]
29
+ expect(contents.text_rendering_mode).to eq([1, 0])
30
30
  end
31
31
  it "should function as an accessor when no parameter given" do
32
32
  create_pdf
33
33
  @pdf.text_rendering_mode(:fill_stroke) do
34
34
  @pdf.text("hello world")
35
- @pdf.text_rendering_mode.should == :fill_stroke
35
+ expect(@pdf.text_rendering_mode).to eq(:fill_stroke)
36
36
  end
37
- @pdf.text_rendering_mode.should == :fill
37
+ expect(@pdf.text_rendering_mode).to eq(:fill)
38
38
  end
39
39
  it "should raise_error an exception when passed an invalid mode" do
40
40
  create_pdf
41
- lambda { @pdf.text_rendering_mode(-1) }.should raise_error(ArgumentError)
42
- lambda { @pdf.text_rendering_mode(8) }.should raise_error(ArgumentError)
43
- lambda { @pdf.text_rendering_mode(:flil) }.should raise_error(ArgumentError)
41
+ expect { @pdf.text_rendering_mode(-1) }.to raise_error(ArgumentError)
42
+ expect { @pdf.text_rendering_mode(8) }.to raise_error(ArgumentError)
43
+ expect { @pdf.text_rendering_mode(:flil) }.to raise_error(ArgumentError)
44
44
  end
45
45
  end
@@ -9,16 +9,16 @@ describe "#character_spacing" do
9
9
  @pdf.text("hello world")
10
10
  end
11
11
  contents = PDF::Inspector::Text.analyze(@pdf.render)
12
- contents.character_spacing.first.should == 10.5556
12
+ expect(contents.character_spacing.first).to eq(10.5556)
13
13
  end
14
- it "should not draw the character spacing to the document" +
14
+ it "should not draw the character spacing to the document" \
15
15
  " when the new character spacing matches the old" do
16
16
  create_pdf
17
17
  @pdf.character_spacing(0) do
18
18
  @pdf.text("hello world")
19
19
  end
20
20
  contents = PDF::Inspector::Text.analyze(@pdf.render)
21
- contents.character_spacing.should be_empty
21
+ expect(contents.character_spacing).to be_empty
22
22
  end
23
23
  it "should restore character spacing to 0" do
24
24
  create_pdf
@@ -26,15 +26,15 @@ describe "#character_spacing" do
26
26
  @pdf.text("hello world")
27
27
  end
28
28
  contents = PDF::Inspector::Text.analyze(@pdf.render)
29
- contents.character_spacing.last.should == 0
29
+ expect(contents.character_spacing.last).to eq(0)
30
30
  end
31
31
  it "should function as an accessor when no parameter given" do
32
32
  create_pdf
33
33
  @pdf.character_spacing(10.555555) do
34
34
  @pdf.text("hello world")
35
- @pdf.character_spacing.should == 10.555555
35
+ expect(@pdf.character_spacing).to eq(10.555555)
36
36
  end
37
- @pdf.character_spacing.should == 0
37
+ expect(@pdf.character_spacing).to eq(0)
38
38
  end
39
39
 
40
40
  # ensure that we properly internationalize by using the number of characters
@@ -51,7 +51,7 @@ describe "#character_spacing" do
51
51
 
52
52
  @pdf.character_spacing(10) do
53
53
  # the new width should include seven 10-pt character spaces.
54
- @pdf.width_of(str).should be_within(0.001).of(@raw_width + (10 * 7))
54
+ expect(@pdf.width_of(str)).to be_within(0.001).of(@raw_width + (10 * 7))
55
55
  end
56
56
  end
57
57
  end
@@ -63,16 +63,16 @@ describe "#word_spacing" do
63
63
  @pdf.text("hello world")
64
64
  end
65
65
  contents = PDF::Inspector::Text.analyze(@pdf.render)
66
- contents.word_spacing.first.should == 10.5556
66
+ expect(contents.word_spacing.first).to eq(10.5556)
67
67
  end
68
- it "should draw the word spacing to the document" +
68
+ it "should draw the word spacing to the document" \
69
69
  " when the new word spacing matches the old" do
70
70
  create_pdf
71
71
  @pdf.word_spacing(0) do
72
72
  @pdf.text("hello world")
73
73
  end
74
74
  contents = PDF::Inspector::Text.analyze(@pdf.render)
75
- contents.word_spacing.should be_empty
75
+ expect(contents.word_spacing).to be_empty
76
76
  end
77
77
  it "should restore word spacing to 0" do
78
78
  create_pdf
@@ -80,14 +80,14 @@ describe "#word_spacing" do
80
80
  @pdf.text("hello world")
81
81
  end
82
82
  contents = PDF::Inspector::Text.analyze(@pdf.render)
83
- contents.word_spacing.last.should == 0
83
+ expect(contents.word_spacing.last).to eq(0)
84
84
  end
85
85
  it "should function as an accessor when no parameter given" do
86
86
  create_pdf
87
87
  @pdf.word_spacing(10.555555) do
88
88
  @pdf.text("hello world")
89
- @pdf.word_spacing.should == 10.555555
89
+ expect(@pdf.word_spacing).to eq(10.555555)
90
90
  end
91
- @pdf.word_spacing.should == 0
91
+ expect(@pdf.word_spacing).to eq(0)
92
92
  end
93
93
  end
@@ -4,40 +4,40 @@ require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
4
4
 
5
5
  describe "Prawn::Text::NBSP" do
6
6
  it "should be defined" do
7
- Prawn::Text::NBSP.should == " "
7
+ expect(Prawn::Text::NBSP).to eq(" ")
8
8
  end
9
9
  end
10
10
 
11
11
  describe "#height_of" do
12
12
  before(:each) { create_pdf }
13
13
 
14
- it "should return the height that would be required to print a" +
14
+ it "should return the height that would be required to print a" \
15
15
  "particular string of text" do
16
16
  original_y = @pdf.y
17
17
  @pdf.text("Foo")
18
18
  new_y = @pdf.y
19
- @pdf.height_of("Foo").should be_within(0.0001).of(original_y - new_y)
19
+ expect(@pdf.height_of("Foo")).to be_within(0.0001).of(original_y - new_y)
20
20
  end
21
21
 
22
- it "should omit the gap below the last descender if :final_gap => false " +
22
+ it "should omit the gap below the last descender if :final_gap => false " \
23
23
  "is given" do
24
24
  original_y = @pdf.y
25
25
  @pdf.text("Foo", :final_gap => false)
26
26
  new_y = @pdf.y
27
- @pdf.height_of("Foo", :final_gap => false).should be_within(0.0001).of(original_y - new_y)
27
+ expect(@pdf.height_of("Foo", :final_gap => false)).to be_within(0.0001).of(original_y - new_y)
28
28
  end
29
29
 
30
30
  it "should raise_error CannotFit if a too-small width is given" do
31
- lambda do
31
+ expect do
32
32
  @pdf.height_of("text", :width => 1)
33
- end.should raise_error(Prawn::Errors::CannotFit)
33
+ end.to raise_error(Prawn::Errors::CannotFit)
34
34
  end
35
35
 
36
36
  it "should raise_error NotImplementedError if :indent_paragraphs option is provided" do
37
- lambda {
37
+ expect {
38
38
  @pdf.height_of("hai", :width => 300,
39
- :indent_paragraphs => 60)
40
- }.should raise_error(NotImplementedError)
39
+ :indent_paragraphs => 60)
40
+ }.to raise_error(NotImplementedError)
41
41
  end
42
42
 
43
43
  it "should_not raise_error Prawn::Errors::UnknownOption if :final_gap option is provided" do
@@ -59,45 +59,45 @@ describe "#text" do
59
59
  @pdf.text " "
60
60
  text = PDF::Inspector::Text.analyze(@pdf.render)
61
61
  # If anything is rendered to the page, it should be whitespace.
62
- text.strings.each { |str| str.should =~ /\A\s*\z/ }
62
+ text.strings.each { |str| expect(str).to match(/\A\s*\z/) }
63
63
  end
64
64
 
65
65
  it "should ignore call when string is nil" do
66
- @pdf.text(nil).should be_false
66
+ expect(@pdf.text(nil)).to be_false
67
67
  end
68
68
 
69
69
  it "should correctly render empty paragraphs" do
70
70
  @pdf.text "text\n\ntext"
71
71
  text = PDF::Inspector::Text.analyze(@pdf.render)
72
- @pdf.page_count.should == 1
73
- text.strings.reject{ |s| s.empty? }.should == ["text", "text"]
72
+ expect(@pdf.page_count).to eq(1)
73
+ expect(text.strings.reject(&:empty?)).to eq(["text", "text"])
74
74
  end
75
75
 
76
76
  it "should correctly render empty paragraphs with :indent_paragraphs" do
77
77
  @pdf.text "text\n\ntext", :indent_paragraphs => 5
78
78
  text = PDF::Inspector::Text.analyze(@pdf.render)
79
- @pdf.page_count.should == 1
80
- text.strings.reject{ |s| s.empty? }.should == ["text", "text"]
79
+ expect(@pdf.page_count).to eq(1)
80
+ expect(text.strings.reject(&:empty?)).to eq(["text", "text"])
81
81
  end
82
82
 
83
- it "should correctly render strings ending with empty paragraphs and " +
83
+ it "should correctly render strings ending with empty paragraphs and " \
84
84
  ":inline_format and :indent_paragraphs" do
85
85
  @pdf.text "text\n\n", :inline_format => true, :indent_paragraphs => 5
86
86
  text = PDF::Inspector::Text.analyze(@pdf.render)
87
- @pdf.page_count.should == 1
88
- text.strings.should == ["text"]
87
+ expect(@pdf.page_count).to eq(1)
88
+ expect(text.strings).to eq(["text"])
89
89
  end
90
90
 
91
91
  it "should default to use kerning information" do
92
92
  @pdf.text "hello world"
93
93
  text = PDF::Inspector::Text.analyze(@pdf.render)
94
- text.kerned[0].should be_true
94
+ expect(text.kerned[0]).to be_true
95
95
  end
96
96
 
97
97
  it "should be able to disable kerning with an option" do
98
98
  @pdf.text "hello world", :kerning => false
99
99
  text = PDF::Inspector::Text.analyze(@pdf.render)
100
- text.kerned[0].should be_false
100
+ expect(text.kerned[0]).to be_false
101
101
  end
102
102
 
103
103
  it "should be able to disable kerning document-wide" do
@@ -105,95 +105,92 @@ describe "#text" do
105
105
  @pdf.default_kerning = false
106
106
  @pdf.text "hello world"
107
107
  text = PDF::Inspector::Text.analyze(@pdf.render)
108
- text.kerned[0].should be_false
108
+ expect(text.kerned[0]).to be_false
109
109
  end
110
110
 
111
111
  it "option should be able to override document-wide kerning disabling" do
112
112
  @pdf.default_kerning = false
113
113
  @pdf.text "hello world", :kerning => true
114
114
  text = PDF::Inspector::Text.analyze(@pdf.render)
115
- text.kerned[0].should be_true
115
+ expect(text.kerned[0]).to be_true
116
116
  end
117
117
 
118
118
  it "should raise_error ArgumentError if :at option included" do
119
- lambda { @pdf.text("hai", :at => [0, 0]) }.should raise_error(ArgumentError)
119
+ expect { @pdf.text("hai", :at => [0, 0]) }.to raise_error(ArgumentError)
120
120
  end
121
121
 
122
122
  it "should advance down the document based on font_height" do
123
123
  position = @pdf.y
124
124
  @pdf.text "Foo"
125
125
 
126
- @pdf.y.should be_within(0.0001).of(position - @pdf.font.height)
126
+ expect(@pdf.y).to be_within(0.0001).of(position - @pdf.font.height)
127
127
 
128
128
  position = @pdf.y
129
129
  @pdf.text "Foo\nBar\nBaz"
130
- @pdf.y.should be_within(0.0001).of(position - 3*@pdf.font.height)
130
+ expect(@pdf.y).to be_within(0.0001).of(position - 3 * @pdf.font.height)
131
131
  end
132
132
 
133
- it "should advance down the document based on font_height" +
134
- " with size option" do
133
+ it "should advance down the document based on font_height with size option" do
135
134
  position = @pdf.y
136
135
  @pdf.text "Foo", :size => 15
137
136
 
138
137
  @pdf.font_size = 15
139
- @pdf.y.should be_within(0.0001).of(position - @pdf.font.height)
138
+ expect(@pdf.y).to be_within(0.0001).of(position - @pdf.font.height)
140
139
 
141
140
  position = @pdf.y
142
141
  @pdf.text "Foo\nBar\nBaz"
143
- @pdf.y.should be_within(0.0001).of(position - 3 * @pdf.font.height)
142
+ expect(@pdf.y).to be_within(0.0001).of(position - 3 * @pdf.font.height)
144
143
  end
145
144
 
146
- it "should advance down the document based on font_height" +
147
- " with leading option" do
145
+ it "should advance down the document based on font_height with leading option" do
148
146
  position = @pdf.y
149
147
  leading = 2
150
148
  @pdf.text "Foo", :leading => leading
151
149
 
152
- @pdf.y.should be_within(0.0001).of(position - @pdf.font.height - leading)
150
+ expect(@pdf.y).to be_within(0.0001).of(position - @pdf.font.height - leading)
153
151
 
154
152
  position = @pdf.y
155
153
  @pdf.text "Foo\nBar\nBaz"
156
- @pdf.y.should be_within(0.0001).of(position - 3*@pdf.font.height)
154
+ expect(@pdf.y).to be_within(0.0001).of(position - 3 * @pdf.font.height)
157
155
  end
158
156
 
159
- it "should advance only to the bottom of the final descender "+
160
- "if final_gap is false" do
157
+ it "should advance only to the bottom of the final descender if final_gap is false" do
161
158
  position = @pdf.y
162
159
  @pdf.text "Foo", :final_gap => false
163
160
 
164
- @pdf.y.should be_within(0.0001).of(position - @pdf.font.ascender - @pdf.font.descender)
161
+ expect(@pdf.y).to be_within(0.0001).of(position - @pdf.font.ascender - @pdf.font.descender)
165
162
 
166
163
  position = @pdf.y
167
164
  @pdf.text "Foo\nBar\nBaz", :final_gap => false
168
- @pdf.y.should be_within(0.0001).of(position - 2*@pdf.font.height - @pdf.font.ascender - @pdf.font.descender)
165
+ expect(@pdf.y).to be_within(0.0001).of(position - 2 * @pdf.font.height - @pdf.font.ascender - @pdf.font.descender)
169
166
  end
170
167
 
171
168
  it "should be able to print text starting at the last line of a page" do
172
169
  @pdf.move_cursor_to(@pdf.font.height)
173
170
  @pdf.text("hello world")
174
171
  pages = PDF::Inspector::Page.analyze(@pdf.render).pages
175
- pages.size.should == 1
172
+ expect(pages.size).to eq(1)
176
173
  end
177
174
 
178
175
  it "should default to 12 point helvetica" do
179
176
  @pdf.text "Blah"
180
177
  text = PDF::Inspector::Text.analyze(@pdf.render)
181
- text.font_settings[0][:name].should == :Helvetica
182
- text.font_settings[0][:size].should == 12
183
- text.strings.first.should == "Blah"
178
+ expect(text.font_settings[0][:name]).to eq(:Helvetica)
179
+ expect(text.font_settings[0][:size]).to eq(12)
180
+ expect(text.strings.first).to eq("Blah")
184
181
  end
185
182
 
186
183
  it "should allow setting font size" do
187
184
  @pdf.text "Blah", :size => 16
188
185
  text = PDF::Inspector::Text.analyze(@pdf.render)
189
- text.font_settings[0][:size].should == 16
186
+ expect(text.font_settings[0][:size]).to eq(16)
190
187
  end
191
188
 
192
189
  it "should allow setting a default font size" do
193
190
  @pdf.font_size = 16
194
191
  @pdf.text "Blah"
195
192
  text = PDF::Inspector::Text.analyze(@pdf.render)
196
- text.font_settings[0][:size].should == 16
193
+ expect(text.font_settings[0][:size]).to eq(16)
197
194
  end
198
195
 
199
196
  it "should allow overriding default font for a single instance" do
@@ -202,8 +199,8 @@ describe "#text" do
202
199
  @pdf.text "Blah", :size => 11
203
200
  @pdf.text "Blaz"
204
201
  text = PDF::Inspector::Text.analyze(@pdf.render)
205
- text.font_settings[0][:size].should == 11
206
- text.font_settings[1][:size].should == 16
202
+ expect(text.font_settings[0][:size]).to eq(11)
203
+ expect(text.font_settings[1][:size]).to eq(16)
207
204
  end
208
205
 
209
206
  it "should allow setting a font size transaction with a block" do
@@ -214,21 +211,20 @@ describe "#text" do
214
211
  @pdf.text 'blah'
215
212
 
216
213
  text = PDF::Inspector::Text.analyze(@pdf.render)
217
- text.font_settings[0][:size].should == 16
218
- text.font_settings[1][:size].should == 12
214
+ expect(text.font_settings[0][:size]).to eq(16)
215
+ expect(text.font_settings[1][:size]).to eq(12)
219
216
  end
220
217
 
221
- it "should allow manual setting the font size " +
222
- "when in a font size block" do
218
+ it "should allow manual setting the font size when in a font size block" do
223
219
  @pdf.font_size(16) do
224
220
  @pdf.text 'Foo'
225
221
  @pdf.text 'Blah', :size => 11
226
222
  @pdf.text 'Blaz'
227
223
  end
228
224
  text = PDF::Inspector::Text.analyze(@pdf.render)
229
- text.font_settings[0][:size].should == 16
230
- text.font_settings[1][:size].should == 11
231
- text.font_settings[2][:size].should == 16
225
+ expect(text.font_settings[0][:size]).to eq(16)
226
+ expect(text.font_settings[1][:size]).to eq(11)
227
+ expect(text.font_settings[2][:size]).to eq(16)
232
228
  end
233
229
 
234
230
  it "should allow registering of built-in font_settings on the fly" do
@@ -237,8 +233,8 @@ describe "#text" do
237
233
  @pdf.font "Courier"
238
234
  @pdf.text "Blaz"
239
235
  text = PDF::Inspector::Text.analyze(@pdf.render)
240
- text.font_settings[0][:name].should == :"Times-Roman"
241
- text.font_settings[1][:name].should == :Courier
236
+ expect(text.font_settings[0][:name]).to eq(:"Times-Roman")
237
+ expect(text.font_settings[1][:name]).to eq(:Courier)
242
238
  end
243
239
 
244
240
  it "should utilise the same default font across multiple pages" do
@@ -247,13 +243,13 @@ describe "#text" do
247
243
  @pdf.text "Blaz"
248
244
  text = PDF::Inspector::Text.analyze(@pdf.render)
249
245
 
250
- text.font_settings.size.should == 2
251
- text.font_settings[0][:name].should == :Helvetica
252
- text.font_settings[1][:name].should == :Helvetica
246
+ expect(text.font_settings.size).to eq(2)
247
+ expect(text.font_settings[0][:name]).to eq(:Helvetica)
248
+ expect(text.font_settings[1][:name]).to eq(:Helvetica)
253
249
  end
254
250
 
255
251
  it "should raise_error an exception when an unknown font is used" do
256
- lambda { @pdf.font "Pao bu" }.should raise_error(Prawn::Errors::UnknownFont)
252
+ expect { @pdf.font "Pao bu" }.to raise_error(Prawn::Errors::UnknownFont)
257
253
  end
258
254
 
259
255
  it "should_not raise_error an exception when providing Pathname instance as font" do
@@ -266,7 +262,7 @@ describe "#text" do
266
262
 
267
263
  # grab the text from the rendered PDF and ensure it matches
268
264
  text = PDF::Inspector::Text.analyze(@pdf.render)
269
- text.strings.first.should == str
265
+ expect(text.strings.first).to eq(str)
270
266
  end
271
267
 
272
268
  it "should correctly render a utf-8 string when using a TTF font" do
@@ -276,46 +272,44 @@ describe "#text" do
276
272
 
277
273
  # grab the text from the rendered PDF and ensure it matches
278
274
  text = PDF::Inspector::Text.analyze(@pdf.render)
279
- text.strings.first.should == str
275
+ expect(text.strings.first).to eq(str)
280
276
  end
281
277
 
282
- it "subsets mixed low-ASCII and non-ASCII characters when they can be " +
283
- "subsetted together" do
278
+ it "subsets mixed low-ASCII and non-ASCII characters when they can be subsetted together" do
284
279
  str = "It’s super effective!"
285
280
  @pdf.font "#{Prawn::DATADIR}/fonts/DejaVuSans.ttf"
286
281
  @pdf.text str
287
282
 
288
283
  text = PDF::Inspector::Text.analyze(@pdf.render)
289
- text.strings.first.should == str
284
+ expect(text.strings.first).to eq(str)
290
285
  end
291
286
 
292
- it "should correctly render a string with higher bit characters across" +
293
- " a page break when using a built-in font" do
287
+ it "should correctly render a string with higher bit characters across a page break when using a built-in font" do
294
288
  str = "©"
295
289
  @pdf.move_cursor_to(@pdf.font.height)
296
290
  @pdf.text(str + "\n" + str)
297
291
 
298
292
  pages = PDF::Inspector::Page.analyze(@pdf.render).pages
299
- pages.size.should == 2
300
- pages[0][:strings].should == [str]
301
- pages[1][:strings].should == [str]
293
+ expect(pages.size).to eq(2)
294
+ expect(pages[0][:strings]).to eq([str])
295
+ expect(pages[1][:strings]).to eq([str])
302
296
  end
303
297
 
304
- it "should correctly render a string with higher bit characters across" +
298
+ it "should correctly render a string with higher bit characters across" \
305
299
  " a page break when using a built-in font and :indent_paragraphs option" do
306
300
  str = "©"
307
301
  @pdf.move_cursor_to(@pdf.font.height)
308
302
  @pdf.text(str + "\n" + str, :indent_paragraphs => 20)
309
303
 
310
304
  pages = PDF::Inspector::Page.analyze(@pdf.render).pages
311
- pages.size.should == 2
312
- pages[0][:strings].should == [str]
313
- pages[1][:strings].should == [str]
305
+ expect(pages.size).to eq(2)
306
+ expect(pages[0][:strings]).to eq([str])
307
+ expect(pages[1][:strings]).to eq([str])
314
308
  end
315
309
 
316
310
  it "should raise_error an exception when a utf-8 incompatible string is rendered" do
317
311
  str = "Blah \xDD"
318
- lambda { @pdf.text str }.should raise_error(
312
+ expect { @pdf.text str }.to raise_error(
319
313
  Prawn::Errors::IncompatibleStringEncoding)
320
314
  end
321
315
 
@@ -328,15 +322,15 @@ describe "#text" do
328
322
  @pdf.text(sjis_str)
329
323
  end
330
324
 
331
- it "should call move_past_bottom when printing more text than can fit" +
325
+ it "should call move_past_bottom when printing more text than can fit" \
332
326
  " between the current document.y and bounds.bottom" do
333
327
  @pdf.y = @pdf.font.height
334
328
  @pdf.text "Hello"
335
329
  @pdf.text "World"
336
330
  pages = PDF::Inspector::Page.analyze(@pdf.render).pages
337
- pages.size.should == 2
338
- pages[0][:strings].should == ["Hello"]
339
- pages[1][:strings].should == ["World"]
331
+ expect(pages.size).to eq(2)
332
+ expect(pages[0][:strings]).to eq(["Hello"])
333
+ expect(pages[1][:strings]).to eq(["World"])
340
334
  end
341
335
 
342
336
  describe "with :indent_paragraphs option" do
@@ -345,13 +339,12 @@ describe "#text" do
345
339
  hello2 = "hello " * 50
346
340
  @pdf.text(hello + "\n" + hello2, :indent_paragraphs => 60)
347
341
  text = PDF::Inspector::Text.analyze(@pdf.render)
348
- text.strings[0].should == ("hello " * 19).strip
349
- text.strings[1].should == ("hello " * 21).strip
350
- text.strings[3].should == ("hello " * 19).strip
351
- text.strings[4].should == ("hello " * 21).strip
342
+ expect(text.strings[0]).to eq(("hello " * 19).strip)
343
+ expect(text.strings[1]).to eq(("hello " * 21).strip)
344
+ expect(text.strings[3]).to eq(("hello " * 19).strip)
345
+ expect(text.strings[4]).to eq(("hello " * 21).strip)
352
346
  end
353
347
 
354
-
355
348
  it "should indent from right side when using :rtl direction" do
356
349
  para1 = "The rain in spain falls mainly on the plains " * 3
357
350
  para2 = "The rain in spain falls mainly on the plains " * 3
@@ -367,19 +360,19 @@ describe "#text" do
367
360
  # text, which isn't necessarily correct. If we change that behavior,
368
361
  # this test will need to be updated.
369
362
 
370
- x_positions[0].should(
363
+ expect(x_positions[0]).to(
371
364
  be_within(0.001).of(@pdf.bounds.absolute_right - 60 -
372
365
  @pdf.width_of(lines[0].reverse, :kerning => true)))
373
366
 
374
- x_positions[1].should(
367
+ expect(x_positions[1]).to(
375
368
  be_within(0.001).of(@pdf.bounds.absolute_right -
376
369
  @pdf.width_of(lines[1].reverse, :kerning => true)))
377
370
 
378
- x_positions[2].should(
371
+ expect(x_positions[2]).to(
379
372
  be_within(0.001).of(@pdf.bounds.absolute_right - 60 -
380
373
  @pdf.width_of(lines[2].reverse, :kerning => true)))
381
374
 
382
- x_positions[3].should(
375
+ expect(x_positions[3]).to(
383
376
  be_within(0.001).of(@pdf.bounds.absolute_right -
384
377
  @pdf.width_of(lines[3].reverse, :kerning => true)))
385
378
  end
@@ -400,19 +393,19 @@ describe "#text" do
400
393
  # text, which isn't necessarily correct. If we change that behavior,
401
394
  # this test will need to be updated.
402
395
 
403
- x_positions[0].should(
396
+ expect(x_positions[0]).to(
404
397
  be_within(0.001).of(@pdf.bounds.absolute_right - 60 -
405
398
  @pdf.width_of(lines[0].reverse, :kerning => true)))
406
399
 
407
- x_positions[1].should(
400
+ expect(x_positions[1]).to(
408
401
  be_within(0.001).of(@pdf.bounds.absolute_right -
409
402
  @pdf.width_of(lines[1].reverse, :kerning => true)))
410
403
 
411
- x_positions[2].should(
404
+ expect(x_positions[2]).to(
412
405
  be_within(0.001).of(@pdf.bounds.absolute_right - 60 -
413
406
  @pdf.width_of(lines[2].reverse, :kerning => true)))
414
407
 
415
- x_positions[3].should(
408
+ expect(x_positions[3]).to(
416
409
  be_within(0.001).of(@pdf.bounds.absolute_right -
417
410
  @pdf.width_of(lines[3].reverse, :kerning => true)))
418
411
  end
@@ -427,11 +420,11 @@ describe "#text" do
427
420
 
428
421
  x_positions = text.positions.map { |e| e[0] }
429
422
 
430
- x_positions[0].should == 60
431
- x_positions[1].should == 0
423
+ expect(x_positions[0]).to eq(60)
424
+ expect(x_positions[1]).to eq(0)
432
425
 
433
- x_positions[2].should == 60
434
- x_positions[3].should == 0
426
+ expect(x_positions[2]).to eq(60)
427
+ expect(x_positions[3]).to eq(0)
435
428
  end
436
429
 
437
430
  it "should indent from left side when document has :ltr direction" do
@@ -445,15 +438,15 @@ describe "#text" do
445
438
 
446
439
  x_positions = text.positions.map { |e| e[0] }
447
440
 
448
- x_positions[0].should == 60
449
- x_positions[1].should == 0
441
+ expect(x_positions[0]).to eq(60)
442
+ expect(x_positions[1]).to eq(0)
450
443
 
451
- x_positions[2].should == 60
452
- x_positions[3].should == 0
444
+ expect(x_positions[2]).to eq(60)
445
+ expect(x_positions[3]).to eq(0)
453
446
  end
454
447
 
455
- describe "when wrap to new page, and first line of new page" +
456
- " is not the start of a new paragraph, that line should" +
448
+ describe "when wrap to new page, and first line of new page" \
449
+ " is not the start of a new paragraph, that line should" \
457
450
  " not be indented" do
458
451
  it "should indent the paragraphs" do
459
452
  hello = "hello " * 50
@@ -461,14 +454,14 @@ describe "#text" do
461
454
  @pdf.move_cursor_to(@pdf.font.height)
462
455
  @pdf.text(hello + "\n" + hello2, :indent_paragraphs => 60)
463
456
  text = PDF::Inspector::Text.analyze(@pdf.render)
464
- text.strings[0].should == ("hello " * 19).strip
465
- text.strings[1].should == ("hello " * 21).strip
466
- text.strings[3].should == ("hello " * 19).strip
467
- text.strings[4].should == ("hello " * 21).strip
457
+ expect(text.strings[0]).to eq(("hello " * 19).strip)
458
+ expect(text.strings[1]).to eq(("hello " * 21).strip)
459
+ expect(text.strings[3]).to eq(("hello " * 19).strip)
460
+ expect(text.strings[4]).to eq(("hello " * 21).strip)
468
461
  end
469
462
  end
470
- describe "when wrap to new page, and first line of new page" +
471
- " is the start of a new paragraph, that line should" +
463
+ describe "when wrap to new page, and first line of new page" \
464
+ " is the start of a new paragraph, that line should" \
472
465
  " be indented" do
473
466
  it "should indent the paragraphs" do
474
467
  hello = "hello " * 50
@@ -476,10 +469,10 @@ describe "#text" do
476
469
  @pdf.move_cursor_to(@pdf.font.height * 3)
477
470
  @pdf.text(hello + "\n" + hello2, :indent_paragraphs => 60)
478
471
  text = PDF::Inspector::Text.analyze(@pdf.render)
479
- text.strings[0].should == ("hello " * 19).strip
480
- text.strings[1].should == ("hello " * 21).strip
481
- text.strings[3].should == ("hello " * 19).strip
482
- text.strings[4].should == ("hello " * 21).strip
472
+ expect(text.strings[0]).to eq(("hello " * 19).strip)
473
+ expect(text.strings[1]).to eq(("hello " * 21).strip)
474
+ expect(text.strings[3]).to eq(("hello " * 19).strip)
475
+ expect(text.strings[4]).to eq(("hello " * 21).strip)
483
476
  end
484
477
  end
485
478
  end
@@ -511,8 +504,7 @@ describe "#text" do
511
504
  end
512
505
 
513
506
  describe "#shrink_to_fit with special utf-8 text" do
514
- it "Should not throw an exception",
515
- :unresolved, :issue => 603 do
507
+ it "Should not throw an exception", :unresolved, :issue => 603 do
516
508
  pages = 0
517
509
  doc = Prawn::Document.new(page_size: 'A4', margin: [2, 2, 2, 2]) do |pdf|
518
510
  add_unicode_fonts(pdf)
@@ -524,15 +516,16 @@ describe "#text" do
524
516
  end
525
517
  end
526
518
 
527
-
528
519
  def add_unicode_fonts(pdf)
529
520
  dejavu = "#{::Prawn::BASEDIR}/data/fonts/DejaVuSans.ttf"
530
- pdf.font_families.update("dejavu" => {
531
- :normal => dejavu,
532
- :italic => dejavu,
533
- :bold => dejavu,
534
- :bold_italic => dejavu
535
- })
521
+ pdf.font_families.update(
522
+ "dejavu" => {
523
+ :normal => dejavu,
524
+ :italic => dejavu,
525
+ :bold => dejavu,
526
+ :bold_italic => dejavu
527
+ }
528
+ )
536
529
  pdf.fallback_fonts = ["dejavu"]
537
530
  end
538
531
 
@@ -548,10 +541,9 @@ describe "#text" do
548
541
  text = PDF::Inspector::Text.analyze(@pdf.render)
549
542
  fonts_used = text.font_settings.map { |e| e[:name] }
550
543
 
551
- fonts_used.length.should == 1
552
- fonts_used[0].should == :"Times-Italic"
553
- text.strings[0].should == "hello"
544
+ expect(fonts_used.length).to eq(1)
545
+ expect(fonts_used[0]).to eq(:"Times-Italic")
546
+ expect(text.strings[0]).to eq("hello")
554
547
  end
555
548
  end
556
-
557
549
  end