check_digit 0.1.0 → 0.1.1
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 +8 -8
- data/README.md +2 -2
- data/lib/check_digit/damm.rb +11 -11
- data/lib/check_digit/verhoeff.rb +11 -11
- data/lib/check_digit/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjJmZmU2MmFiMzBmYmY4MWIzYWU4MzhkMjJkMDUxMjRlOTcxOWU0ZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDNlODkyNThmOTg5MGIzZDc4ZTdmMjgzOTJjNzNiZTQ5MDRiYmFlMw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDViOGQxYjE4ZmJjNzQ2MWQxMjg4MzY1ZjFlMDE0ZmVkNmUxNjBhZDU0ZTI1
|
10
|
+
ZDQyNjIxZDY4MjBiMTMxYjg0MDYxYjc0NDBhMzFiMzhmNTE3MWE5OWJhZGMz
|
11
|
+
NmFjNTU4NDJlYmU2MmViYmJjZTMzZmVjNGMyZjIyNTE3ZTYyY2E=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NWIxNmNjZTI1N2I0ZDA5ZDNiN2IwY2NlNjMxMjEzZDI5M2E3N2EwMjhlNzVl
|
14
|
+
Yzg4MWU4ZTg4ODJmNDYxMzFlMDczZWY0NmJiNGI0Yjk5M2E1ZmYwYmEzODM3
|
15
|
+
NDhiYzMxNTM3MGZlOWNmOTM2ZmQ1MmQ0NTQ5YWY2YjkwZDA2Mjc=
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# CheckDigit
|
1
|
+
# CheckDigit [](http://badge.fury.io/rb/check_digit)
|
2
2
|
|
3
3
|
Ruby implementation of the Luhn, Damm and Verhoeff check digit algorithms
|
4
4
|
|
@@ -60,7 +60,7 @@ Source: http://www.augustana.ab.ca/~mohrj/algorithms/checkdigit.html
|
|
60
60
|
| Damm | 1.700000 | 1.610000 |
|
61
61
|
| Verhoeff | 3.730000 | 3.720000 |
|
62
62
|
|
63
|
-
\* Test was on Linux
|
63
|
+
\* Test was on Linux 14.04 with 2.80GHz Intel Xeon E5-1603 - relative timing is more important to consider when comparing performance
|
64
64
|
|
65
65
|
## Contributing
|
66
66
|
|
data/lib/check_digit/damm.rb
CHANGED
@@ -1,4 +1,15 @@
|
|
1
1
|
module CheckDigit::Damm
|
2
|
+
def self.checksum(num)
|
3
|
+
CheckDigit::Util.valid_arg(num)
|
4
|
+
num.to_i * 10 + calc(num)
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.valid?(num)
|
8
|
+
CheckDigit::Util.valid_arg(num)
|
9
|
+
calc(num.to_s[0..-2]) == num % 10
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
2
13
|
D = [
|
3
14
|
[0, 3, 1, 7, 5, 9, 8, 6, 4, 2],
|
4
15
|
[7, 0, 9, 2, 1, 5, 4, 8, 6, 3],
|
@@ -12,17 +23,6 @@ module CheckDigit::Damm
|
|
12
23
|
[2, 5, 8, 1, 4, 3, 6, 7, 9, 0]
|
13
24
|
].freeze
|
14
25
|
|
15
|
-
def self.checksum(num)
|
16
|
-
CheckDigit::Util.valid_arg(num)
|
17
|
-
num.to_i * 10 + calc(num)
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.valid?(num)
|
21
|
-
CheckDigit::Util.valid_arg(num)
|
22
|
-
calc(num.to_s[0..-2]) == num % 10
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
26
|
def self.calc(num)
|
27
27
|
i = 0
|
28
28
|
num.to_s.each_char {|c| i = D[i][c.to_i] }
|
data/lib/check_digit/verhoeff.rb
CHANGED
@@ -1,4 +1,15 @@
|
|
1
1
|
module CheckDigit::Verhoeff
|
2
|
+
def self.checksum(num)
|
3
|
+
CheckDigit::Util.valid_arg(num)
|
4
|
+
num.to_i * 10 + calc(num)
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.valid?(num)
|
8
|
+
CheckDigit::Util.valid_arg(num)
|
9
|
+
calc(num.to_s[0..-2]) == num % 10
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
2
13
|
D = [
|
3
14
|
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
4
15
|
[1, 2, 3, 4, 0, 6, 7, 8, 9, 5],
|
@@ -27,17 +38,6 @@ module CheckDigit::Verhoeff
|
|
27
38
|
|
28
39
|
ZERO_ORDINAL = 48 # '0'.each_byte.first on 1.8 or '0'.ord on 1.9
|
29
40
|
|
30
|
-
def self.checksum(num)
|
31
|
-
CheckDigit::Util.valid_arg(num)
|
32
|
-
num.to_i * 10 + calc(num)
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.valid?(num)
|
36
|
-
CheckDigit::Util.valid_arg(num)
|
37
|
-
calc(num.to_s[0..-2]) == num % 10
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
41
|
def self.calc(num)
|
42
42
|
INV[num.to_s.each_byte.reverse_each.with_index.inject(0) { |check,(x,i)|
|
43
43
|
D[check][P[i.next % 8][x - ZERO_ORDINAL]]
|
data/lib/check_digit/version.rb
CHANGED