invoice_printer 2.0.0.beta3 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +7 -6
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +29 -16
  5. data/README.md +9 -3
  6. data/assets/fonts/opensans/OpenSans-Bold.ttf +0 -0
  7. data/assets/fonts/overpass/Overpass-Bold.ttf +0 -0
  8. data/assets/fonts/roboto/Roboto-Bold.ttf +0 -0
  9. data/benchmarks/render.yml +19 -13
  10. data/bin/invoice_printer +7 -0
  11. data/docs/COMMAND_LINE.md +122 -0
  12. data/docs/LIBRARY.md +16 -12
  13. data/docs/SERVER.md +8 -2
  14. data/examples/breakdown.rb +77 -0
  15. data/examples/international_invoice.rb +2 -2
  16. data/examples/long_invoice.rb +8 -8
  17. data/examples/picture.jpg +0 -0
  18. data/examples/promo.rb +19 -13
  19. data/examples/provider_purchaser_lines.rb +6 -15
  20. data/examples/simple_invoice.rb +15 -16
  21. data/examples/variable_field_invoice.rb +96 -0
  22. data/invoice_printer.gemspec +3 -2
  23. data/invoice_printer_fonts.gemspec +4 -1
  24. data/lib/invoice_printer.rb +27 -2
  25. data/lib/invoice_printer/document.rb +90 -148
  26. data/lib/invoice_printer/document/item.rb +34 -28
  27. data/lib/invoice_printer/pdf_document.rb +201 -208
  28. data/lib/invoice_printer/version.rb +1 -1
  29. data/test/api_test.rb +2 -2
  30. data/test/background_test.rb +1 -1
  31. data/test/cli_test.rb +1 -1
  32. data/test/dates_box_test.rb +4 -4
  33. data/test/examples_test.rb +2 -0
  34. data/test/inputs_test.rb +4 -4
  35. data/test/invoice_printer_test.rb +2 -2
  36. data/test/items_table_test.rb +2 -2
  37. data/test/labels_test.rb +2 -2
  38. data/test/notes_test.rb +1 -1
  39. data/test/page_numbers_test.rb +4 -4
  40. data/test/payment_box_test.rb +5 -5
  41. data/test/test_ext.rb +2 -1
  42. data/test/test_helper.rb +1 -1
  43. metadata +15 -15
  44. data/assets/logo.png +0 -0
  45. data/examples/background.png +0 -0
  46. data/examples/logo.png +0 -0
  47. data/examples/prawn.png +0 -0
  48. data/examples/stamp.png +0 -0
@@ -1,3 +1,3 @@
1
1
  module InvoicePrinter
2
- VERSION = '2.0.0.beta3'
2
+ VERSION = '2.2.0'
3
3
  end
data/test/api_test.rb CHANGED
@@ -31,7 +31,7 @@ class ApiTest < Minitest::Test
31
31
  end
32
32
 
33
33
  def test_print_with_valid_document
34
- invoice = InvoicePrinter::Document.new(default_document_params)
34
+ invoice = InvoicePrinter::Document.new(**default_document_params)
35
35
 
36
36
  json = {
37
37
  'document' => invoice.to_h,
@@ -60,7 +60,7 @@ class ApiTest < Minitest::Test
60
60
  end
61
61
 
62
62
  def test_render_with_valid_document
63
- invoice = InvoicePrinter::Document.new(default_document_params)
63
+ invoice = InvoicePrinter::Document.new(**default_document_params)
64
64
  output = InvoicePrinter.render(document: invoice)
65
65
 
66
66
  json = {
@@ -4,7 +4,7 @@ class BackgroundTest < Minitest::Test
4
4
  include InvoicePrinterHelpers
5
5
 
6
6
  def setup
7
- @invoice = InvoicePrinter::Document.new(default_document_params)
7
+ @invoice = InvoicePrinter::Document.new(**default_document_params)
8
8
  end
9
9
 
10
10
  def test_background_render
data/test/cli_test.rb CHANGED
@@ -8,7 +8,7 @@ class CLITest < Minitest::Test
8
8
  t = Time.now.strftime("%Y%m%d")
9
9
  tmpname = "/tmp/invoice-#{t}-#{$$}-#{rand(0x100000000).to_s(36)}-fd"
10
10
 
11
- @invoice = InvoicePrinter::Document.new(default_document_params)
11
+ @invoice = InvoicePrinter::Document.new(**default_document_params)
12
12
  @invoice_as_json = @invoice.to_json
13
13
  @output_path = tmpname
14
14
  end
@@ -8,7 +8,7 @@ class DatesBoxTest < Minitest::Test
8
8
  issue_date: '05/03/2016',
9
9
  due_date: '14/03/2016'
10
10
  )
11
- invoice = InvoicePrinter::Document.new(params)
11
+ invoice = InvoicePrinter::Document.new(**params)
12
12
  rendered_pdf = InvoicePrinter.render(document: invoice)
13
13
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
14
14
 
@@ -21,7 +21,7 @@ class DatesBoxTest < Minitest::Test
21
21
  issue_date: '05/03/2016',
22
22
  due_date: ''
23
23
  )
24
- invoice = InvoicePrinter::Document.new(params)
24
+ invoice = InvoicePrinter::Document.new(**params)
25
25
  rendered_pdf = InvoicePrinter.render(document: invoice)
26
26
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
27
27
 
@@ -34,7 +34,7 @@ class DatesBoxTest < Minitest::Test
34
34
  issue_date: nil,
35
35
  due_date: '05/03/2016'
36
36
  )
37
- invoice = InvoicePrinter::Document.new(params)
37
+ invoice = InvoicePrinter::Document.new(**params)
38
38
  rendered_pdf = InvoicePrinter.render(document: invoice)
39
39
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
40
40
 
@@ -47,7 +47,7 @@ class DatesBoxTest < Minitest::Test
47
47
  issue_date: '',
48
48
  due_date: nil
49
49
  )
50
- invoice = InvoicePrinter::Document.new(params)
50
+ invoice = InvoicePrinter::Document.new(**params)
51
51
  rendered_pdf = InvoicePrinter.render(document: invoice)
52
52
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
53
53
 
@@ -4,10 +4,12 @@ require 'test_helper'
4
4
  class ExamplesTest < Minitest::Test
5
5
  def setup
6
6
  examples_directory = File.expand_path('../../examples', __FILE__)
7
+ assets_directory = File.expand_path('../../assets', __FILE__)
7
8
  @examples = Dir.glob("#{examples_directory}/*.rb")
8
9
  @test_dir = File.absolute_path('./tmp/invoice_printer_examples')
9
10
  FileUtils.mkdir_p @test_dir
10
11
  FileUtils.copy_entry examples_directory, @test_dir
12
+ FileUtils.cp_r assets_directory, File.absolute_path('./tmp/')
11
13
  end
12
14
 
13
15
  def teardown
data/test/inputs_test.rb CHANGED
@@ -28,12 +28,12 @@ class InputsTest < Minitest::Test
28
28
  )
29
29
 
30
30
  # No exceptions should be raised
31
- invoice = InvoicePrinter::Document.new(params)
31
+ invoice = InvoicePrinter::Document.new(**params)
32
32
  InvoicePrinter.render(document: invoice)
33
33
  end
34
34
 
35
35
  def test_missing_font_raises_an_exception
36
- invoice = InvoicePrinter::Document.new(default_document_params)
36
+ invoice = InvoicePrinter::Document.new(**default_document_params)
37
37
 
38
38
  assert_raises(InvoicePrinter::PDFDocument::FontFileNotFound) do
39
39
  InvoicePrinter.render(document: invoice, font: 'missing.font')
@@ -41,7 +41,7 @@ class InputsTest < Minitest::Test
41
41
  end
42
42
 
43
43
  def test_missing_logo_raises_an_exception
44
- invoice = InvoicePrinter::Document.new(default_document_params)
44
+ invoice = InvoicePrinter::Document.new(**default_document_params)
45
45
 
46
46
  assert_raises(InvoicePrinter::PDFDocument::LogoFileNotFound) do
47
47
  InvoicePrinter.render(document: invoice, logo: 'missing.png')
@@ -49,7 +49,7 @@ class InputsTest < Minitest::Test
49
49
  end
50
50
 
51
51
  def test_missing_stamp_raises_an_exception
52
- invoice = InvoicePrinter::Document.new(default_document_params)
52
+ invoice = InvoicePrinter::Document.new(**default_document_params)
53
53
 
54
54
  assert_raises(InvoicePrinter::PDFDocument::StampFileNotFound) do
55
55
  InvoicePrinter.render(document: invoice, stamp: 'missing.png')
@@ -4,7 +4,7 @@ class InvoicePrinterTest < Minitest::Test
4
4
  include InvoicePrinterHelpers
5
5
 
6
6
  def test_render_document
7
- invoice = InvoicePrinter::Document.new(default_document_params)
7
+ invoice = InvoicePrinter::Document.new(**default_document_params)
8
8
  rendered_pdf = InvoicePrinter.render(document: invoice)
9
9
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
10
10
  strings = InvoicePrinter::PDFDocument.new(document: invoice).to_a
@@ -13,7 +13,7 @@ class InvoicePrinterTest < Minitest::Test
13
13
  end
14
14
 
15
15
  def test_render_document_from_json
16
- invoice = InvoicePrinter::Document.new(default_document_params)
16
+ invoice = InvoicePrinter::Document.new(**default_document_params)
17
17
  invoice_json = JSON.parse(invoice.to_json)
18
18
  invoice_from_json = InvoicePrinter::Document.from_json(invoice_json)
19
19
  rendered_pdf = InvoicePrinter.render(document: invoice_from_json)
@@ -41,10 +41,10 @@ class ItemsTableTest < Minitest::Test
41
41
 
42
42
  def invoice_without_item_column(column)
43
43
  InvoicePrinter::Document.new(
44
- default_document_params.merge(
44
+ **default_document_params.merge(
45
45
  items: [
46
46
  InvoicePrinter::Document::Item.new(
47
- default_document_item_params.merge("#{column}": nil)
47
+ **default_document_item_params.merge("#{column}": nil)
48
48
  )
49
49
  ]
50
50
  )
data/test/labels_test.rb CHANGED
@@ -6,7 +6,7 @@ class LabelsTest < Minitest::Test
6
6
  def test_setting_global_labels
7
7
  labels = { provider: 'Default Provider', purchaser: 'Default Purchaser' }
8
8
  InvoicePrinter.labels = labels
9
- invoice = InvoicePrinter::Document.new(default_document_params)
9
+ invoice = InvoicePrinter::Document.new(**default_document_params)
10
10
  rendered_pdf = InvoicePrinter.render(document: invoice)
11
11
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
12
12
 
@@ -16,7 +16,7 @@ class LabelsTest < Minitest::Test
16
16
 
17
17
  def test_setting_instant_labels
18
18
  labels = { provider: 'Current Provider', purchaser: 'Current Purchaser' }
19
- invoice = InvoicePrinter::Document.new(default_document_params)
19
+ invoice = InvoicePrinter::Document.new(**default_document_params)
20
20
  rendered_pdf = InvoicePrinter.render(document: invoice, labels: labels)
21
21
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
22
22
 
data/test/notes_test.rb CHANGED
@@ -7,7 +7,7 @@ class NotesTest < Minitest::Test
7
7
  params = default_document_params.merge(
8
8
  note: 'ABC is a registered trademark.'
9
9
  )
10
- invoice = InvoicePrinter::Document.new(params)
10
+ invoice = InvoicePrinter::Document.new(**params)
11
11
  rendered_pdf = InvoicePrinter.render(document: invoice)
12
12
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
13
13
 
@@ -5,11 +5,11 @@ class PageNumbersTest < Minitest::Test
5
5
 
6
6
  # If there is only one page, we skip numbering
7
7
  def test_do_not_number_1_page
8
- item = InvoicePrinter::Document::Item.new(default_document_item_params)
8
+ item = InvoicePrinter::Document::Item.new(**default_document_item_params)
9
9
  params = default_document_params.merge(
10
10
  items: [item]
11
11
  )
12
- invoice = InvoicePrinter::Document.new(params)
12
+ invoice = InvoicePrinter::Document.new(**params)
13
13
  rendered_pdf = InvoicePrinter.render(document: invoice)
14
14
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
15
15
 
@@ -17,12 +17,12 @@ class PageNumbersTest < Minitest::Test
17
17
  end
18
18
 
19
19
  def test_number_2_and_more_pages
20
- item = InvoicePrinter::Document::Item.new(default_document_item_params)
20
+ item = InvoicePrinter::Document::Item.new(**default_document_item_params)
21
21
  items = [item] * 50
22
22
  params = default_document_params.merge(
23
23
  items: items
24
24
  )
25
- invoice = InvoicePrinter::Document.new(params)
25
+ invoice = InvoicePrinter::Document.new(**params)
26
26
  rendered_pdf = InvoicePrinter.render(document: invoice)
27
27
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
28
28
 
@@ -8,7 +8,7 @@ class PaymentBoxTest < Minitest::Test
8
8
  bank_account_number: nil,
9
9
  account_iban: 'IBAN'
10
10
  )
11
- invoice = InvoicePrinter::Document.new(params)
11
+ invoice = InvoicePrinter::Document.new(**params)
12
12
  rendered_pdf = InvoicePrinter.render(document: invoice)
13
13
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
14
14
 
@@ -24,7 +24,7 @@ class PaymentBoxTest < Minitest::Test
24
24
  account_iban: nil,
25
25
  account_swift: nil
26
26
  )
27
- invoice = InvoicePrinter::Document.new(params)
27
+ invoice = InvoicePrinter::Document.new(**params)
28
28
  rendered_pdf = InvoicePrinter.render(document: invoice)
29
29
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
30
30
 
@@ -41,7 +41,7 @@ class PaymentBoxTest < Minitest::Test
41
41
  account_iban: 'SAMPLE_IBAN',
42
42
  account_swift: nil
43
43
  )
44
- invoice = InvoicePrinter::Document.new(params)
44
+ invoice = InvoicePrinter::Document.new(**params)
45
45
  rendered_pdf = InvoicePrinter.render(document: invoice)
46
46
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
47
47
 
@@ -59,7 +59,7 @@ class PaymentBoxTest < Minitest::Test
59
59
  account_iban: nil,
60
60
  account_swift: 'SAMPLE_SWIFT'
61
61
  )
62
- invoice = InvoicePrinter::Document.new(params)
62
+ invoice = InvoicePrinter::Document.new(**params)
63
63
  rendered_pdf = InvoicePrinter.render(document: invoice)
64
64
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
65
65
 
@@ -77,7 +77,7 @@ class PaymentBoxTest < Minitest::Test
77
77
  account_iban: 'SAMPLE_IBAN',
78
78
  account_swift: 'SAMPLE_SWIFT'
79
79
  )
80
- invoice = InvoicePrinter::Document.new(params)
80
+ invoice = InvoicePrinter::Document.new(**params)
81
81
  rendered_pdf = InvoicePrinter.render(document: invoice)
82
82
  pdf_analysis = PDF::Inspector::Text.analyze(rendered_pdf)
83
83
 
data/test/test_ext.rb CHANGED
@@ -101,7 +101,8 @@ module InvoicePrinter
101
101
  strings << @document.tax2
102
102
  strings << "#{@labels[:tax3]}:"
103
103
  strings << @document.tax3
104
- strings << "#{@labels[:total]}: #{@document.total}"
104
+ strings << "#{@labels[:total]}:"
105
+ strings << @document.total
105
106
  strings
106
107
  end
107
108
 
data/test/test_helper.rb CHANGED
@@ -33,7 +33,7 @@ module InvoicePrinterHelpers
33
33
  account_swift: 'SWIFT5456',
34
34
  items: [
35
35
  InvoicePrinter::Document::Item.new(
36
- default_document_item_params
36
+ **default_document_item_params
37
37
  )
38
38
  ]
39
39
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: invoice_printer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta3
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josef Strzibny
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-31 00:00:00.000000000 Z
11
+ date: 2021-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.1.0
33
+ version: '2.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 2.1.0
40
+ version: '2.2'
41
41
  - !ruby/object:Gem::Dependency
42
- name: prawn-layout
42
+ name: prawn-table
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.8.4
47
+ version: 0.2.2
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.8.4
54
+ version: 0.2.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -95,27 +95,27 @@ files:
95
95
  - LICENSE.txt
96
96
  - README.md
97
97
  - Rakefile
98
- - assets/logo.png
98
+ - assets/fonts/opensans/OpenSans-Bold.ttf
99
+ - assets/fonts/overpass/Overpass-Bold.ttf
100
+ - assets/fonts/roboto/Roboto-Bold.ttf
99
101
  - benchmarks/render.yml
100
102
  - bin/invoice_printer
101
103
  - docs/COMMAND_LINE.md
102
104
  - docs/INSTALLATION.md
103
105
  - docs/LIBRARY.md
104
106
  - docs/SERVER.md
105
- - examples/background.png
107
+ - examples/breakdown.rb
106
108
  - examples/clients/node.js
107
109
  - examples/complex_invoice.rb
108
110
  - examples/czech_invoice.rb
109
111
  - examples/czech_invoice_long.rb
110
112
  - examples/international_invoice.rb
111
- - examples/logo.png
112
113
  - examples/long_invoice.rb
113
114
  - examples/picture.jpg
114
- - examples/prawn.png
115
115
  - examples/promo.rb
116
116
  - examples/provider_purchaser_lines.rb
117
117
  - examples/simple_invoice.rb
118
- - examples/stamp.png
118
+ - examples/variable_field_invoice.rb
119
119
  - invoice_printer.gemspec
120
120
  - invoice_printer_fonts.gemspec
121
121
  - invoice_printer_server.gemspec
@@ -153,11 +153,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
153
153
  version: '2.4'
154
154
  required_rubygems_version: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - ">"
156
+ - - ">="
157
157
  - !ruby/object:Gem::Version
158
- version: 1.3.1
158
+ version: '0'
159
159
  requirements: []
160
- rubygems_version: 3.0.3
160
+ rubygems_version: 3.2.3
161
161
  signing_key:
162
162
  specification_version: 4
163
163
  summary: Super simple PDF invoicing in pure Ruby
data/assets/logo.png DELETED
Binary file
Binary file
data/examples/logo.png DELETED
Binary file
data/examples/prawn.png DELETED
Binary file
data/examples/stamp.png DELETED
Binary file