barby 0.6.2 → 0.6.8

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 (52) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/CHANGELOG +8 -0
  4. data/Gemfile +5 -0
  5. data/README.md +108 -0
  6. data/Rakefile +15 -0
  7. data/barby.gemspec +31 -0
  8. data/lib/barby/barcode.rb +3 -3
  9. data/lib/barby/barcode/bookland.rb +0 -1
  10. data/lib/barby/barcode/codabar.rb +82 -0
  11. data/lib/barby/barcode/code_128.rb +22 -20
  12. data/lib/barby/barcode/code_25.rb +6 -3
  13. data/lib/barby/barcode/code_25_interleaved.rb +2 -2
  14. data/lib/barby/barcode/code_39.rb +2 -1
  15. data/lib/barby/barcode/data_matrix.rb +1 -1
  16. data/lib/barby/barcode/ean_13.rb +1 -1
  17. data/lib/barby/barcode/gs1_128.rb +5 -1
  18. data/lib/barby/barcode/qr_code.rb +2 -1
  19. data/lib/barby/outputter.rb +1 -1
  20. data/lib/barby/outputter/cairo_outputter.rb +16 -3
  21. data/lib/barby/outputter/png_outputter.rb +43 -7
  22. data/lib/barby/outputter/prawn_outputter.rb +12 -4
  23. data/lib/barby/outputter/rmagick_outputter.rb +43 -11
  24. data/lib/barby/outputter/svg_outputter.rb +11 -13
  25. data/lib/barby/version.rb +2 -2
  26. data/test/barcodes.rb +20 -0
  27. data/test/bookland_test.rb +54 -0
  28. data/test/codabar_test.rb +58 -0
  29. data/test/code_128_test.rb +470 -0
  30. data/test/code_25_iata_test.rb +19 -0
  31. data/test/code_25_interleaved_test.rb +116 -0
  32. data/test/code_25_test.rb +110 -0
  33. data/test/code_39_test.rb +210 -0
  34. data/test/code_93_test.rb +144 -0
  35. data/test/data_matrix_test.rb +30 -0
  36. data/test/ean13_test.rb +169 -0
  37. data/test/ean8_test.rb +100 -0
  38. data/test/outputter/cairo_outputter_test.rb +129 -0
  39. data/test/outputter/html_outputter_test.rb +68 -0
  40. data/test/outputter/pdfwriter_outputter_test.rb +37 -0
  41. data/test/outputter/png_outputter_test.rb +49 -0
  42. data/test/outputter/prawn_outputter_test.rb +79 -0
  43. data/test/outputter/rmagick_outputter_test.rb +83 -0
  44. data/test/outputter/svg_outputter_test.rb +89 -0
  45. data/test/outputter_test.rb +134 -0
  46. data/test/pdf_417_test.rb +45 -0
  47. data/test/qr_code_test.rb +78 -0
  48. data/test/test_helper.rb +24 -0
  49. data/test/upc_supplemental_test.rb +109 -0
  50. metadata +160 -19
  51. data/README +0 -93
  52. data/lib/barby/outputter/point_matrix.rb +0 -211
@@ -0,0 +1,45 @@
1
+ if defined? JRUBY_VERSION
2
+
3
+ require 'test_helper'
4
+ require 'barby/barcode/pdf_417'
5
+
6
+ class Pdf417Test < Barby::TestCase
7
+
8
+ it "should produce a nice code" do
9
+ enc = Pdf417.new('Ereshkigal').encoding
10
+ enc.must_equal [
11
+ "111111111101010100101111010110011110100111010110001110100011101101011100100001111111101000110100100",
12
+ "111111111101010100101111010110000100100110100101110000101011111110101001111001111111101000110100100",
13
+ "111111111101010100101101010111111000100100011100110011111010101100001111100001111111101000110100100",
14
+ "111111111101010100101111101101111110110100010100011101111011010111110111111001111111101000110100100",
15
+ "111111111101010100101101011110000010100110010101110010100011101101110001110001111111101000110100100",
16
+ "111111111101010100101111101101110000110101101100000011110011110110111110111001111111101000110100100",
17
+ "111111111101010100101101001111001111100110001101001100100010100111101110100001111111101000110100100",
18
+ "111111111101010100101111110110010111100111100100101000110010101111111001111001111111101000110100100",
19
+ "111111111101010100101010011101111100100101111110001110111011111101001110110001111111101000110100100",
20
+ "111111111101010100101010001111011100100100111110111110111010100101100011100001111111101000110100100",
21
+ "111111111101010100101101001111000010100110001101110000101011101100111001110001111111101000110100100",
22
+ "111111111101010100101101000110011111100101111111011101100011111110100011100101111111101000110100100",
23
+ "111111111101010100101010000101010000100100011100001100101010100100110000111001111111101000110100100",
24
+ "111111111101010100101111010100100001100100010100111100101011110110001001100001111111101000110100100",
25
+ "111111111101010100101111010100011110110110011111101001100010100100001001111101111111101000110100100"
26
+ ]
27
+ enc.length.must_equal 15
28
+ enc[0].length.must_equal 99
29
+ end
30
+
31
+ it "should produce a 19x135 code with default aspect_ratio" do
32
+ enc = Pdf417.new('qwertyuiopasdfghjklzxcvbnm'*3).encoding
33
+ enc.length.must_equal 19
34
+ enc[0].length.must_equal 135
35
+ end
36
+
37
+ it "should produce a 29x117 code with 0.7 aspect_ratio" do
38
+ enc = Pdf417.new('qwertyuiopasdfghjklzxcvbnm'*3, :aspect_ratio => 0.7).encoding
39
+ enc.length.must_equal 29
40
+ enc[0].length.must_equal 117
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -0,0 +1,78 @@
1
+ require 'test_helper'
2
+ require 'barby/barcode/qr_code'
3
+
4
+ class QrCodeTest < Barby::TestCase
5
+
6
+ before do
7
+ @data = 'Ereshkigal'
8
+ @code = QrCode.new(@data)
9
+ end
10
+
11
+ it "should have the expected data" do
12
+ @code.data.must_equal @data
13
+ end
14
+
15
+ it "should have the expected encoding" do
16
+ # Should be an array of strings, where each string represents a "line"
17
+ @code.encoding.must_equal(rqrcode(@code).modules.map do |line|
18
+ line.inject(''){|s,m| s << (m ? '1' : '0') }
19
+ end)
20
+
21
+ end
22
+
23
+ it "should be able to change its data and output a different encoding" do
24
+ @code.data = 'hades'
25
+ @code.data.must_equal 'hades'
26
+ @code.encoding.must_equal(rqrcode(@code).modules.map do |line|
27
+ line.inject(''){|s,m| s << (m ? '1' : '0') }
28
+ end)
29
+ end
30
+
31
+ it "should have a 'level' accessor" do
32
+ @code.must_respond_to :level
33
+ @code.must_respond_to :level=
34
+ end
35
+
36
+ it "should set size according to size of data" do
37
+ QrCode.new('1'*15, :level => :l).size.must_equal 1
38
+ QrCode.new('1'*15, :level => :m).size.must_equal 2
39
+ QrCode.new('1'*15, :level => :q).size.must_equal 2
40
+ QrCode.new('1'*15, :level => :h).size.must_equal 3
41
+
42
+ QrCode.new('1'*30, :level => :l).size.must_equal 2
43
+ QrCode.new('1'*30, :level => :m).size.must_equal 3
44
+ QrCode.new('1'*30, :level => :q).size.must_equal 3
45
+ QrCode.new('1'*30, :level => :h).size.must_equal 4
46
+
47
+ QrCode.new('1'*270, :level => :l).size.must_equal 10
48
+ end
49
+
50
+ it "should allow size to be set manually" do
51
+ code = QrCode.new('1'*15, :level => :l, :size => 2)
52
+ code.size.must_equal 2
53
+ code.encoding.must_equal(rqrcode(code).modules.map do |line|
54
+ line.inject(''){|s,m| s << (m ? '1' : '0') }
55
+ end)
56
+ end
57
+
58
+ it "should raise ArgumentError when data too large" do
59
+ assert QrCode.new('1'*2953, :level => :l)
60
+ lambda{ QrCode.new('1'*2954, :level => :l) }.must_raise ArgumentError
61
+ end
62
+
63
+ it "should return the original data on to_s" do
64
+ @code.to_s.must_equal 'Ereshkigal'
65
+ end
66
+
67
+ it "should include at most 20 characters on to_s" do
68
+ QrCode.new('123456789012345678901234567890').to_s.must_equal '12345678901234567890'
69
+ end
70
+
71
+
72
+ private
73
+
74
+ def rqrcode(code)
75
+ RQRCode::QRCode.new(code.data, :level => code.level, :size => code.size)
76
+ end
77
+
78
+ end
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+ require 'barby'
3
+ require 'minitest/autorun'
4
+ require 'minitest/spec'
5
+
6
+ module Barby
7
+ class TestCase < MiniTest::Spec
8
+
9
+ include Barby
10
+
11
+ private
12
+
13
+ # So we can register outputter during an full test suite run.
14
+ def load_outputter(outputter)
15
+ @loaded_outputter ||= load "barby/outputter/#{outputter}_outputter.rb"
16
+ rescue LoadError => e
17
+ skip "#{outputter} not being installed properly"
18
+ end
19
+
20
+ def ruby_19_or_greater?
21
+ RUBY_VERSION >= '1.9'
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,109 @@
1
+ require 'test_helper'
2
+ require 'barby/barcode/upc_supplemental'
3
+
4
+ class UpcSupplementalTest < Barby::TestCase
5
+
6
+ it 'should be valid with 2 or 5 digits' do
7
+ assert UPCSupplemental.new('12345').valid?
8
+ assert UPCSupplemental.new('12').valid?
9
+ end
10
+
11
+ it 'should not be valid with any number of digits other than 2 or 5' do
12
+ refute UPCSupplemental.new('1234').valid?
13
+ refute UPCSupplemental.new('123').valid?
14
+ refute UPCSupplemental.new('1').valid?
15
+ refute UPCSupplemental.new('123456').valid?
16
+ refute UPCSupplemental.new('123456789012').valid?
17
+ end
18
+
19
+ it 'should not be valid with non-digit characters' do
20
+ refute UPCSupplemental.new('abcde').valid?
21
+ refute UPCSupplemental.new('ABC').valid?
22
+ refute UPCSupplemental.new('1234e').valid?
23
+ refute UPCSupplemental.new('!2345').valid?
24
+ refute UPCSupplemental.new('ab').valid?
25
+ refute UPCSupplemental.new('1b').valid?
26
+ refute UPCSupplemental.new('a1').valid?
27
+ end
28
+
29
+ describe 'checksum for 5 digits' do
30
+
31
+ it 'should have the expected odd_digits' do
32
+ UPCSupplemental.new('51234').odd_digits.must_equal [4,2,5]
33
+ UPCSupplemental.new('54321').odd_digits.must_equal [1,3,5]
34
+ UPCSupplemental.new('99990').odd_digits.must_equal [0,9,9]
35
+ end
36
+
37
+ it 'should have the expected even_digits' do
38
+ UPCSupplemental.new('51234').even_digits.must_equal [3,1]
39
+ UPCSupplemental.new('54321').even_digits.must_equal [2,4]
40
+ UPCSupplemental.new('99990').even_digits.must_equal [9,9]
41
+ end
42
+
43
+ it 'should have the expected odd and even sums' do
44
+ UPCSupplemental.new('51234').odd_sum.must_equal 33
45
+ UPCSupplemental.new('54321').odd_sum.must_equal 27
46
+ UPCSupplemental.new('99990').odd_sum.must_equal 54
47
+
48
+ UPCSupplemental.new('51234').even_sum.must_equal 36
49
+ UPCSupplemental.new('54321').even_sum.must_equal 54
50
+ UPCSupplemental.new('99990').even_sum.must_equal 162
51
+ end
52
+
53
+ it 'should have the expected checksum' do
54
+ UPCSupplemental.new('51234').checksum.must_equal 9
55
+ UPCSupplemental.new('54321').checksum.must_equal 1
56
+ UPCSupplemental.new('99990').checksum.must_equal 6
57
+ end
58
+
59
+ end
60
+
61
+ describe 'checksum for 2 digits' do
62
+
63
+ it 'should have the expected checksum' do
64
+ UPCSupplemental.new('51').checksum.must_equal 3
65
+ UPCSupplemental.new('21').checksum.must_equal 1
66
+ UPCSupplemental.new('99').checksum.must_equal 3
67
+ end
68
+
69
+ end
70
+
71
+ describe 'encoding' do
72
+
73
+ before do
74
+ @data = '51234'
75
+ @code = UPCSupplemental.new(@data)
76
+ end
77
+
78
+ it 'should have the expected encoding' do
79
+ # START 5 1 2 3 4
80
+ UPCSupplemental.new('51234').encoding.must_equal '1011 0110001 01 0011001 01 0011011 01 0111101 01 0011101'.tr(' ', '')
81
+ # 9 9 9 9 0
82
+ UPCSupplemental.new('99990').encoding.must_equal '1011 0001011 01 0001011 01 0001011 01 0010111 01 0100111'.tr(' ', '')
83
+ # START 5 1
84
+ UPCSupplemental.new('51').encoding.must_equal '1011 0111001 01 0110011'.tr(' ', '')
85
+ # 2 2
86
+ UPCSupplemental.new('22').encoding.must_equal '1011 0011011 01 0010011'.tr(' ', '')
87
+ end
88
+
89
+ it 'should be able to change its data' do
90
+ prev_encoding = @code.encoding
91
+ @code.data = '99990'
92
+ @code.encoding.wont_equal prev_encoding
93
+ # 9 9 9 9 0
94
+ @code.encoding.must_equal '1011 0001011 01 0001011 01 0001011 01 0010111 01 0100111'.tr(' ', '')
95
+ prev_encoding = @code.encoding
96
+ @code.data = '22'
97
+ @code.encoding.wont_equal prev_encoding
98
+ # 2 2
99
+ @code.encoding.must_equal '1011 0011011 01 0010011'.tr(' ', '')
100
+ end
101
+
102
+ end
103
+
104
+ end
105
+
106
+
107
+
108
+
109
+
metadata CHANGED
@@ -1,29 +1,133 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tore Darell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-15 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2019-05-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.16'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.16'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: semacode-ruby19
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.7'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.7'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rqrcode
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.10'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.10'
83
+ - !ruby/object:Gem::Dependency
84
+ name: prawn
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.2'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: cairo
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.15'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.15'
13
111
  description: Barby creates barcodes.
14
112
  email: toredarell@gmail.com
15
- executables: []
113
+ executables:
114
+ - barby
16
115
  extensions: []
17
116
  extra_rdoc_files:
18
- - README
117
+ - README.md
19
118
  files:
119
+ - ".gitignore"
20
120
  - CHANGELOG
121
+ - Gemfile
21
122
  - LICENSE
22
- - README
123
+ - README.md
124
+ - Rakefile
125
+ - barby.gemspec
23
126
  - bin/barby
24
127
  - lib/barby.rb
25
128
  - lib/barby/barcode.rb
26
129
  - lib/barby/barcode/bookland.rb
130
+ - lib/barby/barcode/codabar.rb
27
131
  - lib/barby/barcode/code_128.rb
28
132
  - lib/barby/barcode/code_25.rb
29
133
  - lib/barby/barcode/code_25_iata.rb
@@ -43,26 +147,41 @@ files:
43
147
  - lib/barby/outputter/html_outputter.rb
44
148
  - lib/barby/outputter/pdfwriter_outputter.rb
45
149
  - lib/barby/outputter/png_outputter.rb
46
- - lib/barby/outputter/point_matrix.rb
47
150
  - lib/barby/outputter/prawn_outputter.rb
48
151
  - lib/barby/outputter/rmagick_outputter.rb
49
152
  - lib/barby/outputter/svg_outputter.rb
50
153
  - lib/barby/vendor.rb
51
154
  - lib/barby/version.rb
155
+ - test/barcodes.rb
156
+ - test/bookland_test.rb
157
+ - test/codabar_test.rb
158
+ - test/code_128_test.rb
159
+ - test/code_25_iata_test.rb
160
+ - test/code_25_interleaved_test.rb
161
+ - test/code_25_test.rb
162
+ - test/code_39_test.rb
163
+ - test/code_93_test.rb
164
+ - test/data_matrix_test.rb
165
+ - test/ean13_test.rb
166
+ - test/ean8_test.rb
167
+ - test/outputter/cairo_outputter_test.rb
168
+ - test/outputter/html_outputter_test.rb
169
+ - test/outputter/pdfwriter_outputter_test.rb
170
+ - test/outputter/png_outputter_test.rb
171
+ - test/outputter/prawn_outputter_test.rb
172
+ - test/outputter/rmagick_outputter_test.rb
173
+ - test/outputter/svg_outputter_test.rb
174
+ - test/outputter_test.rb
175
+ - test/pdf_417_test.rb
176
+ - test/qr_code_test.rb
177
+ - test/test_helper.rb
178
+ - test/upc_supplemental_test.rb
52
179
  - vendor/Pdf417lib-java-0.91/lib/Pdf417lib.jar
53
180
  - vendor/Pdf417lib-java-0.91/lib/Pdf417lib.java
54
181
  homepage: http://toretore.github.com/barby
55
182
  licenses: []
56
183
  metadata: {}
57
- post_install_message: |2+
58
-
59
- *** NEW REQUIRE POLICY ***"
60
- Barby no longer require all barcode symbologies by default. You'll have
61
- to require the ones you need. For example, if you need EAN-13,
62
- require 'barby/barcode/ean_13'; For a full list of symbologies and their
63
- filenames, see README.
64
- ***
65
-
184
+ post_install_message:
66
185
  rdoc_options: []
67
186
  require_paths:
68
187
  - lib
@@ -77,9 +196,31 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
196
  - !ruby/object:Gem::Version
78
197
  version: '0'
79
198
  requirements: []
80
- rubyforge_project: barby
81
- rubygems_version: 2.2.2
199
+ rubygems_version: 3.0.3
82
200
  signing_key:
83
201
  specification_version: 4
84
202
  summary: The Ruby barcode generator
85
- test_files: []
203
+ test_files:
204
+ - test/barcodes.rb
205
+ - test/bookland_test.rb
206
+ - test/codabar_test.rb
207
+ - test/code_128_test.rb
208
+ - test/code_25_iata_test.rb
209
+ - test/code_25_interleaved_test.rb
210
+ - test/code_25_test.rb
211
+ - test/code_39_test.rb
212
+ - test/code_93_test.rb
213
+ - test/data_matrix_test.rb
214
+ - test/ean13_test.rb
215
+ - test/ean8_test.rb
216
+ - test/outputter/cairo_outputter_test.rb
217
+ - test/outputter/html_outputter_test.rb
218
+ - test/outputter/pdfwriter_outputter_test.rb
219
+ - test/outputter/png_outputter_test.rb
220
+ - test/outputter/prawn_outputter_test.rb
221
+ - test/outputter/svg_outputter_test.rb
222
+ - test/outputter_test.rb
223
+ - test/pdf_417_test.rb
224
+ - test/qr_code_test.rb
225
+ - test/test_helper.rb
226
+ - test/upc_supplemental_test.rb