sjekksum 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 138a821d406efac0c481425e7de8956af20f390d
4
+ data.tar.gz: 6655ede5c5a4c17a69ea6a166d46632128327c90
5
+ SHA512:
6
+ metadata.gz: 057656143728ce66d976633e71c73da8e4392cc7672eedcebc4c83499a905805260b15b35ed5603447db53432662a1b14990d86f93a5215a2561e0fc30451bb7
7
+ data.tar.gz: a2b2c5962a35890d0a203bd845fc3cf7270a3a5e9002416d1e00725750faecba6dcff2416183abba9a9058f5d6c7edc0e51a3432897b102336693e6d48a67a47
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ -f d
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.1.0
5
+ - 2.0.0
6
+
7
+ branches:
8
+ only:
9
+ - develop
10
+ - master
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Christoph Grabo
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # Sjekksum
2
+
3
+ A gem to provide some checksum algorithms like Luhn, Damm and Verhoeff.
4
+
5
+
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem "sjekksum"
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install damm
20
+
21
+
22
+
23
+ ## Usage
24
+
25
+ __(TODO)__
26
+
27
+
28
+
29
+ ## License
30
+
31
+ [MIT/X11](./LICENSE)
32
+
33
+ Copyright (c) 2013—2014 Christoph Grabo
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ desc "Starts PRY with gem loaded"
5
+ task :console do
6
+ sh "pry -I lib -r sjekksum --no-pager"
7
+ end
8
+
9
+ desc "Run all specs"
10
+ task RSpec::Core::RakeTask.new(:spec) do |t|
11
+ t.pattern = "spec/**/*_spec.rb"
12
+ t.verbose = false
13
+ end
14
+
15
+ task :default => :spec
@@ -0,0 +1,36 @@
1
+ module Sjekksum
2
+ module Damm
3
+ extend self
4
+ extend Shared
5
+
6
+ QUASIGROUP = [
7
+ [0, 3, 1, 7, 5, 9, 8, 6, 4, 2],
8
+ [7, 0, 9, 2, 1, 5, 4, 8, 6, 3],
9
+ [4, 2, 0, 6, 8, 7, 1, 3, 5, 9],
10
+ [1, 7, 5, 0, 9, 8, 3, 4, 2, 6],
11
+ [6, 1, 2, 3, 0, 4, 5, 9, 7, 8],
12
+ [3, 6, 7, 4, 2, 0, 9, 5, 8, 1],
13
+ [5, 8, 6, 9, 7, 2, 0, 1, 3, 4],
14
+ [8, 9, 4, 5, 3, 6, 2, 0, 1, 7],
15
+ [9, 4, 3, 8, 6, 1, 7, 2, 0, 5],
16
+ [2, 5, 8, 1, 4, 3, 6, 7, 9, 0]
17
+ ].freeze
18
+
19
+ def of input_value
20
+ raise_on_type_mismatch input_value
21
+ digits = input_value.to_s.chars.map(&:to_i)
22
+ digits.reduce(0){|check, digit| QUASIGROUP[check][digit] }
23
+ end
24
+
25
+ def valid? input_value
26
+ raise_on_type_mismatch input_value
27
+ self.of(input_value).zero?
28
+ end
29
+
30
+ def convert input_value
31
+ raise_on_type_mismatch input_value
32
+ (input_value * 10) + self.of(input_value)
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ module Sjekksum
2
+ module Luhn
3
+ extend self
4
+ extend Shared
5
+
6
+ def of input_value
7
+ raise_on_type_mismatch input_value
8
+ digits = input_value.to_s.chars.map(&:to_i)
9
+ sum = digits.reverse.map.with_index do |digit, idx|
10
+ idx.even? ? (digit * 2).divmod(10).reduce(&:+) : digit
11
+ end.reverse.reduce(&:+)
12
+
13
+ (10 - sum % 10) % 10
14
+ end
15
+
16
+ def valid? input_value
17
+ raise_on_type_mismatch input_value
18
+ self.of(input_value.div(10)) == (input_value % 10)
19
+ end
20
+
21
+ def convert input_value
22
+ raise_on_type_mismatch input_value
23
+ (input_value * 10) + self.of(input_value)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ module Sjekksum
2
+ module Shared
3
+
4
+ private
5
+
6
+ def raise_on_type_mismatch input_value
7
+ raise ArgumentError unless input_value.is_a?(Integer)
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,51 @@
1
+ module Sjekksum
2
+ module Verhoeff
3
+ extend self
4
+ extend Shared
5
+
6
+ DIHEDRAL_GROUP_D5 = [
7
+ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
8
+ [ 1, 2, 3, 4, 0, 6, 7, 8, 9, 5 ],
9
+ [ 2, 3, 4, 0, 1, 7, 8, 9, 5, 6 ],
10
+ [ 3, 4, 0, 1, 2, 8, 9, 5, 6, 7 ],
11
+ [ 4, 0, 1, 2, 3, 9, 5, 6, 7, 8 ],
12
+ [ 5, 9, 8, 7, 6, 0, 4, 3, 2, 1 ],
13
+ [ 6, 5, 9, 8, 7, 1, 0, 4, 3, 2 ],
14
+ [ 7, 6, 5, 9, 8, 2, 1, 0, 4, 3 ],
15
+ [ 8, 7, 6, 5, 9, 3, 2, 1, 0, 4 ],
16
+ [ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ]
17
+ ].freeze
18
+
19
+ PERMUTATION = [
20
+ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ],
21
+ [ 1, 5, 7, 6, 2, 8, 3, 0, 9, 4 ],
22
+ [ 5, 8, 0, 3, 7, 9, 6, 1, 4, 2 ],
23
+ [ 8, 9, 1, 6, 0, 4, 3, 5, 2, 7 ],
24
+ [ 9, 4, 5, 3, 1, 2, 6, 8, 7, 0 ],
25
+ [ 4, 2, 8, 6, 5, 7, 3, 9, 0, 1 ],
26
+ [ 2, 7, 9, 3, 8, 0, 6, 4, 1, 5 ],
27
+ [ 7, 0, 4, 6, 9, 1, 3, 2, 5, 8 ]
28
+ ].freeze
29
+
30
+ INVERSE = [ 0, 4, 3, 2, 1, 5, 6, 7, 8, 9 ].freeze
31
+
32
+ def of input_value
33
+ raise_on_type_mismatch input_value
34
+ digits = input_value.to_s.chars.map(&:to_i)
35
+ INVERSE[digits.reverse_each.with_index.reduce(0) { |check, (digit, idx)|
36
+ d_row = DIHEDRAL_GROUP_D5[check]
37
+ d_row[ PERMUTATION[idx.next % 8][digit] ]
38
+ }]
39
+ end
40
+
41
+ def valid? input_value
42
+ raise_on_type_mismatch input_value
43
+ self.of(input_value.div(10)) == (input_value % 10)
44
+ end
45
+
46
+ def convert input_value
47
+ raise_on_type_mismatch input_value
48
+ (input_value * 10) + self.of(input_value)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,3 @@
1
+ module Sjekksum
2
+ VERSION = "0.0.1"
3
+ end
data/lib/sjekksum.rb ADDED
@@ -0,0 +1,56 @@
1
+ require "sjekksum/version"
2
+
3
+ require "sjekksum/shared"
4
+ require "sjekksum/damm"
5
+ require "sjekksum/luhn"
6
+ require "sjekksum/verhoeff"
7
+
8
+ module Sjekksum
9
+ extend self
10
+
11
+ def damm_of input_value
12
+ Damm.of input_value
13
+ end
14
+ alias_method :damm, :damm_of
15
+
16
+ def luhn_of input_value
17
+ Luhn.of input_value
18
+ end
19
+ alias_method :luhn, :luhn_of
20
+
21
+ def verhoeff_of input_value
22
+ Verhoeff.of input_value
23
+ end
24
+ alias_method :verhoeff, :verhoeff_of
25
+
26
+ def valid_damm? input_value
27
+ Damm.valid? input_value
28
+ end
29
+ alias_method :damm?, :valid_damm?
30
+
31
+ def valid_luhn? input_value
32
+ Luhn.valid? input_value
33
+ end
34
+ alias_method :luhn?, :valid_luhn?
35
+
36
+ def valid_verhoeff? input_value
37
+ Verhoeff.valid? input_value
38
+ end
39
+ alias_method :verhoeff?, :valid_verhoeff?
40
+
41
+ def make_damm input_value
42
+ Damm.convert input_value
43
+ end
44
+ alias_method :damm!, :make_damm
45
+
46
+ def make_luhn input_value
47
+ Luhn.convert input_value
48
+ end
49
+ alias_method :luhn!, :make_luhn
50
+
51
+ def make_verhoeff input_value
52
+ Verhoeff.convert input_value
53
+ end
54
+ alias_method :verhoeff!, :make_verhoeff
55
+
56
+ end
data/sjekksum.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'sjekksum/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "sjekksum"
8
+ spec.version = Sjekksum::VERSION
9
+ spec.authors = ["Christoph Grabo"]
10
+ spec.email = ["chris@dinarrr.com"]
11
+ spec.summary = %q{Collection of some checksum/validation algorithms}
12
+ spec.description = %q{A gem to provide some checksum algorithms like Luhn, Damm and Verhoeff.}
13
+ spec.homepage = "https://github.com/asaaki/sjekksum"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "inch"
24
+ spec.add_development_dependency "pry"
25
+ spec.add_development_dependency "pry-doc"
26
+ spec.add_development_dependency "rspec"
27
+ end
@@ -0,0 +1,64 @@
1
+ shared_examples "a checksum implementation:" do |success_spec_matrix, fail_spec_matrix|
2
+
3
+ describe :of do
4
+ success_spec_matrix.each do |spec_item|
5
+ it "calculates checksum: #{spec_item[0]} => #{spec_item[1]}" do
6
+ expect(described_class.of(spec_item[0])).to eq(spec_item[1])
7
+ end
8
+ end
9
+
10
+ fail_spec_matrix.each do |spec_item|
11
+ it "does not calculate checksum: #{spec_item[0]} => #{spec_item[1]}" do
12
+ expect(described_class.of(spec_item[0])).to_not eq(spec_item[1])
13
+ end
14
+ end
15
+ end
16
+
17
+ describe :valid? do
18
+ success_spec_matrix.each do |spec_item|
19
+ spec_value = spec_item[0] * 10 + spec_item[1]
20
+ it "returns true for #{spec_value}" do
21
+ expect(described_class.valid?(spec_value)).to be_true
22
+ end
23
+ end
24
+
25
+ fail_spec_matrix.each do |spec_item|
26
+ spec_value = spec_item[0] * 10 + spec_item[1]
27
+ it "does not return true for #{spec_value}" do
28
+ expect(described_class.valid?(spec_value)).to_not be_true
29
+ end
30
+ end
31
+ end
32
+
33
+ describe :convert do
34
+ success_spec_matrix.each do |spec_item|
35
+ spec_value = spec_item[0] * 10 + spec_item[1]
36
+ it "transforms #{spec_item[0]} to #{spec_value}" do
37
+ expect(described_class.convert(spec_item[0])).to eq(spec_value)
38
+ end
39
+ end
40
+
41
+ fail_spec_matrix.each do |spec_item|
42
+ spec_value = spec_item[0] * 10 + spec_item[1]
43
+ it "does not transform #{spec_item[0]} to #{spec_value}" do
44
+ expect(described_class.convert(spec_item[0])).to_not eq(spec_value)
45
+ end
46
+ end
47
+ end
48
+
49
+ context "invalid input" do
50
+ ["1234", 12.34, true, false, nil, {}, [], Proc.new{}, Class.new, Module.new].each do |invalid_input|
51
+ it "#of raises an ArgumentError for #{invalid_input.inspect} (type: #{invalid_input.class})" do
52
+ expect{ described_class.of(invalid_input) }.to raise_error(ArgumentError)
53
+ end
54
+ it "#valid? raises an ArgumentError for #{invalid_input.inspect} (type: #{invalid_input.class})" do
55
+ expect{ described_class.valid?(invalid_input) }.to raise_error(ArgumentError)
56
+ end
57
+ it "#convert raises an ArgumentError for #{invalid_input.inspect} (type: #{invalid_input.class})" do
58
+ expect{ described_class.convert(invalid_input) }.to raise_error(ArgumentError)
59
+ end
60
+
61
+ end
62
+ end
63
+
64
+ end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+ require "shared_implementation"
3
+
4
+ describe Sjekksum::Damm do
5
+
6
+ success_spec_matrix = [
7
+ [ 1, 3 ],
8
+ [ 20, 7 ],
9
+ [ 300, 9 ],
10
+ [ 4000, 7 ],
11
+ [ 55555, 5 ],
12
+ [ 424242, 0 ],
13
+ [ 572, 4 ],
14
+ ]
15
+
16
+ fail_spec_matrix = [
17
+ [ 1, 1 ],
18
+ [ 572, 9 ]
19
+ ]
20
+
21
+ it_behaves_like "a checksum implementation:", success_spec_matrix, fail_spec_matrix
22
+
23
+ end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+ require "shared_implementation"
3
+
4
+ describe Sjekksum::Luhn do
5
+
6
+ success_spec_matrix = [
7
+ [ 1, 8 ],
8
+ [ 20, 8 ],
9
+ [ 300, 4 ],
10
+ [ 4000, 6 ],
11
+ [ 55555, 7 ],
12
+ [ 424242, 6 ],
13
+ [ 7992739871, 3 ],
14
+ ]
15
+
16
+ fail_spec_matrix = [
17
+ [ 1, 1 ],
18
+ [ 7992739871, 9 ]
19
+ ]
20
+
21
+ it_behaves_like "a checksum implementation:", success_spec_matrix, fail_spec_matrix
22
+
23
+ end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+ require "shared_implementation"
3
+
4
+ describe Sjekksum::Verhoeff do
5
+
6
+ success_spec_matrix = [
7
+ [ 1, 5 ],
8
+ [ 20, 4 ],
9
+ [ 300, 0 ],
10
+ [ 4000, 1 ],
11
+ [ 55555, 7 ],
12
+ [ 424242, 3 ],
13
+ [ 142857, 0 ]
14
+ ]
15
+
16
+ fail_spec_matrix = [
17
+ [ 1, 1 ],
18
+ [ 142857, 9 ]
19
+ ]
20
+
21
+ it_behaves_like "a checksum implementation:", success_spec_matrix, fail_spec_matrix
22
+
23
+ end
@@ -0,0 +1,59 @@
1
+ require "spec_helper"
2
+
3
+ describe Sjekksum do
4
+
5
+ spec_values = {
6
+ input: 12345,
7
+ damm: 9,
8
+ luhn: 5,
9
+ verhoeff: 1
10
+ }
11
+
12
+ specify { expect(described_class).to be_a(Module) }
13
+
14
+ it "#damm" do
15
+ expected = spec_values[:input] * 10 + spec_values[:damm]
16
+ expect(described_class.damm(spec_values[:input])).to eq(spec_values[:damm])
17
+ end
18
+
19
+ it "#damm?" do
20
+ value = spec_values[:input] * 10 + spec_values[:damm]
21
+ expect(described_class.damm?(value)).to be_true
22
+ end
23
+
24
+ it "#damm!" do
25
+ expected = spec_values[:input] * 10 + spec_values[:damm]
26
+ expect(described_class.damm!(spec_values[:input])).to eq(expected)
27
+ end
28
+
29
+ it "#luhn" do
30
+ expected = spec_values[:input] * 10 + spec_values[:luhn]
31
+ expect(described_class.luhn(spec_values[:input])).to eq(spec_values[:luhn])
32
+ end
33
+
34
+ it "#luhn?" do
35
+ value = spec_values[:input] * 10 + spec_values[:luhn]
36
+ expect(described_class.luhn?(value)).to be_true
37
+ end
38
+
39
+ it "#luhn!" do
40
+ expected = spec_values[:input] * 10 + spec_values[:luhn]
41
+ expect(described_class.luhn!(spec_values[:input])).to eq(expected)
42
+ end
43
+
44
+ it "#verhoeff" do
45
+ expected = spec_values[:input] * 10 + spec_values[:verhoeff]
46
+ expect(described_class.verhoeff(spec_values[:input])).to eq(spec_values[:verhoeff])
47
+ end
48
+
49
+ it "#verhoeff?" do
50
+ value = spec_values[:input] * 10 + spec_values[:verhoeff]
51
+ expect(described_class.verhoeff?(value)).to be_true
52
+ end
53
+
54
+ it "#verhoeff!" do
55
+ expected = spec_values[:input] * 10 + spec_values[:verhoeff]
56
+ expect(described_class.verhoeff!(spec_values[:input])).to eq(expected)
57
+ end
58
+
59
+ end
@@ -0,0 +1,11 @@
1
+ # coding: utf-8
2
+ require "sjekksum"
3
+
4
+ RSpec.configure do |config|
5
+ config.expect_with :rspec do |c|
6
+ c.syntax = :expect
7
+ end
8
+ config.mock_with :rspec do |c|
9
+ c.syntax = :expect
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,155 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sjekksum
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Christoph Grabo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: inch
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-doc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: A gem to provide some checksum algorithms like Luhn, Damm and Verhoeff.
98
+ email:
99
+ - chris@dinarrr.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".rspec"
106
+ - ".travis.yml"
107
+ - Gemfile
108
+ - LICENSE
109
+ - README.md
110
+ - Rakefile
111
+ - lib/sjekksum.rb
112
+ - lib/sjekksum/damm.rb
113
+ - lib/sjekksum/luhn.rb
114
+ - lib/sjekksum/shared.rb
115
+ - lib/sjekksum/verhoeff.rb
116
+ - lib/sjekksum/version.rb
117
+ - sjekksum.gemspec
118
+ - spec/shared_implementation.rb
119
+ - spec/sjekksum/damm_spec.rb
120
+ - spec/sjekksum/luhn_spec.rb
121
+ - spec/sjekksum/verhoeff_spec.rb
122
+ - spec/sjekksum_spec.rb
123
+ - spec/spec_helper.rb
124
+ homepage: https://github.com/asaaki/sjekksum
125
+ licenses:
126
+ - MIT
127
+ metadata: {}
128
+ post_install_message:
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 2.2.0
145
+ signing_key:
146
+ specification_version: 4
147
+ summary: Collection of some checksum/validation algorithms
148
+ test_files:
149
+ - spec/shared_implementation.rb
150
+ - spec/sjekksum/damm_spec.rb
151
+ - spec/sjekksum/luhn_spec.rb
152
+ - spec/sjekksum/verhoeff_spec.rb
153
+ - spec/sjekksum_spec.rb
154
+ - spec/spec_helper.rb
155
+ has_rdoc: