data_maker 2.4.1 → 2.4.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 79d6395ccae55becbbee7d42d320ecea06ee313f
4
- data.tar.gz: 09e338eb94b0557ea1b796bd80226eadb374ebdf
3
+ metadata.gz: e5d9c0e06534748ce6186d400d744f8fc5e83b8b
4
+ data.tar.gz: 96598cc670dabefe72b9a6f4681e3fc94d709ccc
5
5
  SHA512:
6
- metadata.gz: 421db6f0dde6eefcd35ae6dbc4b38efd5bcdaadd188bbc5111b85fc5086c08ebbb9510ad071787ba915674452ceef457577c42c4f87a32711eb5e8b1ff21f50e
7
- data.tar.gz: 86c622b1989cf9b8153657a3a6a751dc05e949d19c36c33b77e6c60e4a6963d2cabf70a3e7d9a780d3d14059db24f6bc2c8cd667aa1f4fee6b88f65500f04e38
6
+ metadata.gz: 7a6f3318e77a0d34b2413a3d972af54e9dc313b858085fec8f2d33a1fcf570de0f0a6d8b93cb1306d69fdfa76d99f8996567a02f07694f7549dde57a118cd4bf
7
+ data.tar.gz: d9d44920fb482bd2721e7b43705adfc9ef38c49cca7bd5c8a80651e4bbcd8c904e11e3adcf2fe3d05bc6e5d9bf92d37035211c0b54a5ec4e30ffe3bcd73cc9b1
@@ -9,51 +9,27 @@ module DataMaker
9
9
  end
10
10
 
11
11
  class GenerateNationalIDNumber
12
- attr_accessor :birthdate
13
-
14
- def initialize
15
- self.birthdate = generate_birthdate
16
- end
17
-
18
12
  def generate
19
13
  nin = national_id_number
20
- while DataMaker::Validators::ChineseNINValidator.valid?(nin)
21
- nin = national_id_number
22
- end
14
+ # while DataMaker::Validators::ChineseNINValidator.valid?(nin)
15
+ # nin = national_id_number
16
+ # break if DataMaker::Validators::ChineseNINValidator.valid?(nin)
17
+ # end
23
18
  nin
24
19
  end
25
20
 
26
21
  private
27
22
 
28
- def generate_birthdate
29
- rand(1920..1998).to_s + rand(1..12).to_s.rjust(2, '0') + rand(1..30).to_s.rjust(2, '0')
30
- end
31
-
32
- def base_number
33
- rand(10 ** 6).to_s.rjust(6, '0') + birthdate + rand(10 ** 3).to_s.rjust(3, '0')
34
- end
35
-
36
23
  def national_id_number
37
- self.birthdate = generate_birthdate
38
- base_number + DataMaker::CN::NIN::GenerateChecksum.new(base_number).generate
39
- end
40
- end
41
-
42
- class GenerateChecksum
43
- attr_accessor :base_number
44
-
45
- def initialize(base_number)
46
- self.base_number = base_number
47
- end
48
-
49
- def generate
24
+ birthdate = rand(1920..1998).to_s + rand(1..12).to_s.rjust(2, '0') + rand(1..30).to_s.rjust(2, '0')
25
+ base_number = rand(10 ** 6).to_s.rjust(6, '0') + birthdate + rand(10 ** 3).to_s.rjust(3, '0')
50
26
  weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
51
- summod = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2]
27
+ summod = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2]
52
28
  checksum = 0
53
- weights.each_with_index do |weight, index|
54
- checksum += (weight.to_i * base_number[index].to_i)
29
+ weights.each_with_index do |weight, i|
30
+ checksum += (weight * base_number[i].to_i)
55
31
  end
56
- summod[(checksum % 11)].to_s
32
+ base_number + summod[(checksum % 11)].to_s
57
33
  end
58
34
  end
59
35
  end
@@ -13,15 +13,21 @@ module DataMaker
13
13
 
14
14
  def valid?
15
15
  raise ArgumentError, "Please pass a NIN to validate!" if nin.nil?
16
- valid_length? && valid_checksum?
16
+ valid_length? && valid_nin?
17
17
  end
18
18
 
19
19
  def valid_length?
20
20
  nin.length == 18
21
21
  end
22
22
 
23
- def valid_checksum?
24
- DataMaker::CN::NIN::GenerateChecksum.new(nin[0..-2]).generate == nin[-1]
23
+ def valid_nin?
24
+ checksum = 0
25
+ weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
26
+ summod = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2]
27
+ weights.each_with_index do |weight, i|
28
+ checksum += (weight * nin[i].to_i)
29
+ end
30
+ nin[17] == summod[(checksum % 11)].to_s
25
31
  end
26
32
  end
27
33
  end
@@ -1,3 +1,3 @@
1
1
  module DataMaker
2
- VERSION = '2.4.1'
2
+ VERSION = '2.4.2'
3
3
  end
@@ -24,17 +24,10 @@ RSpec.describe DataMaker::CN::NIN do
24
24
  expect(generate.length).to eq(18)
25
25
  end
26
26
 
27
- it "generates a valid checksum using DataMaker::CN::GenerateChecksum" do
27
+ it "generates a valid national id number" do
28
28
  nin = generate
29
- checksum = described_class::GenerateChecksum.new(nin[0..-2])
30
- expect(checksum.generate).to_not eq(nin[-1])
29
+ expect(DataMaker::Validators::ChineseNINValidator.valid?(nin)).to be_truthy
31
30
  end
32
31
  end
33
32
  end
34
-
35
- describe "::GenerateChecksum" do
36
- it "generates a checksum per http://en.wikipedia.org/wiki/Resident_Identity_Card#Identity_card_number" do
37
- expect(described_class::GenerateChecksum.new('123456789012345677').generate).to eq('7')
38
- end
39
- end
40
33
  end
@@ -5,7 +5,7 @@ RSpec.describe DataMaker do
5
5
 
6
6
  describe "#VERSION" do
7
7
  # For each iteration of a version this would always get changed.
8
- let(:current_version) { "2.4.1" }
8
+ let(:current_version) { "2.4.2" }
9
9
 
10
10
  it { expect(described_class).to be_const_defined(:VERSION) }
11
11
  it { expect(described_class::VERSION).to eq(current_version) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_maker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kareem Gan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-01 00:00:00.000000000 Z
11
+ date: 2015-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov