ean13 1.4.0 → 2.0.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.
- checksums.yaml +7 -0
- data/CHANGELOG +2 -2
- data/README.markdown +35 -0
- data/lib/ean13.rb +5 -21
- data/spec/ean13_spec.rb +22 -46
- metadata +59 -39
- data/README.rdoc +0 -35
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3560d1d3bd6e0a9bb896a02d6ec4bc5d7a8ba055
|
4
|
+
data.tar.gz: 923ead966aa48093d90c8e679c8e8538f1c3daac
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c97981cb32ad497b7bd202f04f933a28b0d894cb931818fb983b63bd3d825d0cd28d318d9984e67ecd4e0661f2fb84529cafc8665839652d3d5d1658e6848d07
|
7
|
+
data.tar.gz: 958bdcdeea6af37d453feb3aefc73d41c87a3eb0b44260178c0dae9b58f0ba4ab4f784211a01efb17b350d910dc7972eefdd5a6e7cc7024899ce94e51ddedfe8
|
data/CHANGELOG
CHANGED
data/README.markdown
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
A small class for generating and validating EAN-13's, the 13 digit codes found
|
2
|
+
on many products sold around the world.
|
3
|
+
|
4
|
+
# Installation
|
5
|
+
|
6
|
+
gem install ean13
|
7
|
+
|
8
|
+
# Usage
|
9
|
+
|
10
|
+
EAN13.new("0632737715836").valid?
|
11
|
+
=> true
|
12
|
+
|
13
|
+
EAN13.valid?("0632737715836")
|
14
|
+
=> true
|
15
|
+
|
16
|
+
EAN13.valid?("0632737715837")
|
17
|
+
=> false
|
18
|
+
|
19
|
+
EAN13.complete("063273771583")
|
20
|
+
=> "0632737715836"
|
21
|
+
|
22
|
+
EAN13.new("0632737715836").to_upc
|
23
|
+
=> "632737715836"
|
24
|
+
|
25
|
+
EAN13.new("0632737715836").to_gtin
|
26
|
+
=> "00632737715836"
|
27
|
+
|
28
|
+
# Further Reading
|
29
|
+
|
30
|
+
- http://en.wikipedia.org/wiki/European_Article_Number
|
31
|
+
|
32
|
+
# Contributing
|
33
|
+
|
34
|
+
Source code is publicly available @ http://github.com/yob/ean13.Patches
|
35
|
+
welcome, preferably via a git repo I can pull from.
|
data/lib/ean13.rb
CHANGED
@@ -3,8 +3,8 @@ require 'rubygems'
|
|
3
3
|
class EAN13
|
4
4
|
|
5
5
|
class Version #:nodoc:
|
6
|
-
Major =
|
7
|
-
Minor =
|
6
|
+
Major = 2
|
7
|
+
Minor = 0
|
8
8
|
Tiny = 0
|
9
9
|
|
10
10
|
String = [Major, Minor, Tiny].join('.')
|
@@ -33,7 +33,7 @@ class EAN13
|
|
33
33
|
return nil unless twelve.length == 12 && twelve.match(/\d{11}/)
|
34
34
|
|
35
35
|
arr = (0..11).to_a.collect do |i|
|
36
|
-
if (i+1)
|
36
|
+
if (i+1).even?
|
37
37
|
twelve[i,1].to_i * 3
|
38
38
|
else
|
39
39
|
twelve[i,1].to_i
|
@@ -56,14 +56,7 @@ class EAN13
|
|
56
56
|
# http://www.bowker.com/index.php/component/content/article/3
|
57
57
|
#
|
58
58
|
def san?
|
59
|
-
|
60
|
-
|
61
|
-
prefix = @number.to_s[0,6]
|
62
|
-
if prefix == "079999" || prefix == "503067"
|
63
|
-
true
|
64
|
-
else
|
65
|
-
false
|
66
|
-
end
|
59
|
+
$stderr.puts "EAN13.san? was removed in ean13 v2.0"
|
67
60
|
end
|
68
61
|
|
69
62
|
# convert this EAN to a SAN. returns nil if the EAN doesn't contain
|
@@ -73,16 +66,7 @@ class EAN13
|
|
73
66
|
# error if it's not
|
74
67
|
#
|
75
68
|
def to_san
|
76
|
-
|
77
|
-
begin
|
78
|
-
gem 'san'
|
79
|
-
require 'san'
|
80
|
-
rescue Exception => e
|
81
|
-
raise LoadError, "Could not load require SAN library. Try installing the san rubygem."
|
82
|
-
end
|
83
|
-
end
|
84
|
-
return nil unless san?
|
85
|
-
SAN.complete(@number[6,6])
|
69
|
+
$stderr.puts "EAN13.to_san was removed in ean13 v2.0"
|
86
70
|
end
|
87
71
|
|
88
72
|
def to_gtin
|
data/spec/ean13_spec.rb
CHANGED
@@ -1,70 +1,46 @@
|
|
1
|
-
$LOAD_PATH << File.dirname(__FILE__) + "/../lib"
|
2
|
-
|
3
|
-
require 'spec'
|
4
1
|
require 'ean13'
|
5
2
|
|
6
3
|
describe "The EAN13 class" do
|
7
4
|
it "should identify a valid EAN13" do
|
8
|
-
EAN13.new("9781843549161").valid
|
5
|
+
expect(EAN13.new("9781843549161").valid?).to be_truthy
|
9
6
|
end
|
10
7
|
|
11
8
|
it "should identify a valid EAN13" do
|
12
|
-
EAN13.valid?("9781843549161").
|
13
|
-
EAN13.valid?(9781843549161).
|
14
|
-
EAN13.valid?("9790702228727").
|
15
|
-
EAN13.valid?("9790702228727").
|
16
|
-
EAN13.valid?("0602498351321").
|
9
|
+
expect(EAN13.valid?("9781843549161")).to be_truthy
|
10
|
+
expect(EAN13.valid?(9781843549161)).to be_truthy
|
11
|
+
expect(EAN13.valid?("9790702228727")).to be_truthy
|
12
|
+
expect(EAN13.valid?("9790702228727")).to be_truthy
|
13
|
+
expect(EAN13.valid?("0602498351321")).to be_truthy
|
17
14
|
end
|
18
15
|
|
19
16
|
it "should identify an invalid EAN13" do
|
20
|
-
EAN13.valid?(nil).
|
21
|
-
EAN13.valid?("978184354916").
|
22
|
-
EAN13.valid?(Array).
|
23
|
-
EAN13.valid?(Array.new).
|
24
|
-
EAN13.valid?("9781843549162").
|
17
|
+
expect(EAN13.valid?(nil)).to be_falsey
|
18
|
+
expect(EAN13.valid?("978184354916")).to be_falsey
|
19
|
+
expect(EAN13.valid?(Array)).to be_falsey
|
20
|
+
expect(EAN13.valid?(Array.new)).to be_falsey
|
21
|
+
expect(EAN13.valid?("9781843549162")).to be_falsey
|
25
22
|
end
|
26
23
|
|
27
24
|
it "should identify a bookland EAN13" do
|
28
|
-
EAN13.new("9781843549161").bookland
|
29
|
-
EAN13.new("9791843549160").bookland
|
30
|
-
EAN13.new("9791843549161").bookland
|
31
|
-
EAN13.new("sdw32423").bookland
|
32
|
-
EAN13.new("632737715836").bookland
|
25
|
+
expect(EAN13.new("9781843549161").bookland?).to be_truthy
|
26
|
+
expect(EAN13.new("9791843549160").bookland?).to be_truthy
|
27
|
+
expect(EAN13.new("9791843549161").bookland?).to be_falsey
|
28
|
+
expect(EAN13.new("sdw32423").bookland?).to be_falsey
|
29
|
+
expect(EAN13.new("632737715836").bookland?).to be_falsey
|
33
30
|
end
|
34
31
|
|
35
32
|
it "should calculate a EAN13 check digit correctly" do
|
36
|
-
EAN13.complete("978184354916").
|
37
|
-
EAN13.complete(978184354916).
|
33
|
+
expect(EAN13.complete("978184354916")).to eql("9781843549161")
|
34
|
+
expect(EAN13.complete(978184354916)).to eql("9781843549161")
|
38
35
|
end
|
39
36
|
|
40
37
|
it "should convert to a UPC correctly" do
|
41
|
-
EAN13.new("9781843549161").to_upc.
|
42
|
-
EAN13.new("0632737715836").to_upc.
|
38
|
+
expect(EAN13.new("9781843549161").to_upc).to be_nil
|
39
|
+
expect(EAN13.new("0632737715836").to_upc).to eql("632737715836")
|
43
40
|
end
|
44
41
|
|
45
42
|
it "should convert to a GTIN-14 correctly" do
|
46
|
-
EAN13.new("9781843549161").to_gtin.
|
47
|
-
EAN13.new("0632737715836").to_gtin.
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should recognise the presence of an embedded SAN" do
|
51
|
-
EAN13.new("0799999013725").san?.should be_true
|
52
|
-
EAN13.new("5030670159260").san?.should be_true
|
53
|
-
EAN13.new("0632737715836").san?.should be_false
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should convert to a SAN correctly" do
|
57
|
-
|
58
|
-
begin
|
59
|
-
require 'san'
|
60
|
-
rescue LoadError
|
61
|
-
warn "WARNING: can't test EAN13#to_san, san library not available"
|
62
|
-
end
|
63
|
-
|
64
|
-
if Kernel.const_defined?("SAN")
|
65
|
-
EAN13.new("0799999013725").to_san.should eql("9013725")
|
66
|
-
EAN13.new("5030670159260").to_san.should eql("0159263")
|
67
|
-
EAN13.new("0632737715836").to_san.should be_nil
|
68
|
-
end
|
43
|
+
expect(EAN13.new("9781843549161").to_gtin).to eql("09781843549161")
|
44
|
+
expect(EAN13.new("0632737715836").to_gtin).to eql("00632737715836")
|
69
45
|
end
|
70
46
|
end
|
metadata
CHANGED
@@ -1,60 +1,80 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ean13
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- James Healy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
date: 2017-07-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
16
41
|
description: a (very) small library for working with EAN-13 codes
|
17
42
|
email: jimmy@deefa.com
|
18
43
|
executables: []
|
19
|
-
|
20
44
|
extensions: []
|
21
|
-
|
22
45
|
extra_rdoc_files: []
|
23
|
-
|
24
|
-
files:
|
25
|
-
- lib/ean13.rb
|
26
|
-
- MIT-LICENSE
|
27
|
-
- README.rdoc
|
46
|
+
files:
|
28
47
|
- CHANGELOG
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
48
|
+
- MIT-LICENSE
|
49
|
+
- README.markdown
|
50
|
+
- lib/ean13.rb
|
51
|
+
- spec/ean13_spec.rb
|
52
|
+
homepage: http://github.com/yob/ean13
|
53
|
+
licenses:
|
54
|
+
- MIT
|
55
|
+
metadata: {}
|
33
56
|
post_install_message:
|
34
|
-
rdoc_options:
|
35
|
-
- --title
|
57
|
+
rdoc_options:
|
58
|
+
- "--title"
|
36
59
|
- EAN-13
|
37
|
-
- --line-numbers
|
38
|
-
require_paths:
|
60
|
+
- "--line-numbers"
|
61
|
+
require_paths:
|
39
62
|
- lib
|
40
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
41
|
-
requirements:
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
42
65
|
- - ">="
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version:
|
45
|
-
|
46
|
-
|
47
|
-
requirements:
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 1.9.3
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
48
70
|
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version:
|
51
|
-
version:
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
52
73
|
requirements: []
|
53
|
-
|
54
|
-
|
55
|
-
rubygems_version: 1.3.5
|
74
|
+
rubyforge_project:
|
75
|
+
rubygems_version: 2.6.11
|
56
76
|
signing_key:
|
57
|
-
specification_version:
|
77
|
+
specification_version: 4
|
58
78
|
summary: a (very) small library for working with EAN-13 codes
|
59
|
-
test_files:
|
79
|
+
test_files:
|
60
80
|
- spec/ean13_spec.rb
|
data/README.rdoc
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
A small class for generating and validating EAN-13's, the 13 digit codes found
|
2
|
-
on many products sold around the world.
|
3
|
-
|
4
|
-
= Installation
|
5
|
-
|
6
|
-
gem install ean13
|
7
|
-
|
8
|
-
= Usage
|
9
|
-
|
10
|
-
EAN13.new("0632737715836").valid?
|
11
|
-
=> true
|
12
|
-
|
13
|
-
EAN13.valid?("0632737715836")
|
14
|
-
=> true
|
15
|
-
|
16
|
-
EAN13.valid?("0632737715837")
|
17
|
-
=> false
|
18
|
-
|
19
|
-
EAN13.complete("063273771583")
|
20
|
-
=> "0632737715836"
|
21
|
-
|
22
|
-
EAN13.new("0632737715836").to_upc
|
23
|
-
=> "632737715836"
|
24
|
-
|
25
|
-
EAN13.new("0632737715836").to_gtin
|
26
|
-
=> "00632737715836"
|
27
|
-
|
28
|
-
= Further Reader
|
29
|
-
|
30
|
-
- http://en.wikipedia.org/wiki/European_Article_Number
|
31
|
-
|
32
|
-
= Contributing
|
33
|
-
|
34
|
-
Source code is publicly available @ http://github.com/yob/ean13/tree/master.
|
35
|
-
Patches welcome, preferably via a git repo I can pull from.
|