sec_id 2.0.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39592f5327accec4a952728b6a609c9c2e91adce7fe3097ee7aa980631ed89d9
4
- data.tar.gz: e24a61f1e3ebe25096b53c8a59bce72cbb1049fb751fee5b1f7c517aa57e3712
3
+ metadata.gz: 7aeb4ad8258b298a785df7243f6f7a5186b11cad7f8feaf643a2b9e367a027b2
4
+ data.tar.gz: 4aed13a00f680c41e9b87483dee8ce97cc6bd0a2369174e425efe288c477bc88
5
5
  SHA512:
6
- metadata.gz: 87f2852f2c8fae7dcd46e0a731c38df333e210328963f64ce21dab8e4fe9529837740b15681eab82e2c3aeb7129a954d0fb8c08334f22a46673c5954e68a5a8c
7
- data.tar.gz: 851b4d5bc78642ca4d184e245b1a163487cc36b51531e187f452a861b89ad378fc01e6b80ac9939b0534215da236c667bb1eee445dd7a733fec4834779d2dea1
6
+ metadata.gz: b1f04f9919ef3597875c5faa54a83797122b2e424ff109b0b638f2ce14696ff254c18cdc8bed34dbed8d923a16d67e1cba1933c41e39013145dbce7d719945a7
7
+ data.tar.gz: d73e8e860993d61133309105f87c6a9093a06deb1294c3c01f245cf3987240ae9231983cd7ce197edc3dc96ecdc3cddd41e38387bacf60ef3270f3deacdba4f9
data/.rubocop.yml CHANGED
@@ -2,17 +2,26 @@ require:
2
2
  - rubocop-rspec
3
3
 
4
4
  AllCops:
5
- TargetRubyVersion: 2.3
5
+ TargetRubyVersion: 2.5
6
6
  DisplayCopNames: true
7
7
  DisplayStyleGuide: true
8
8
  ExtraDetails: true
9
9
 
10
- Metrics/LineLength:
10
+ Layout/LineLength:
11
11
  Max: 120
12
12
 
13
13
  Style/Documentation:
14
14
  Enabled: false
15
15
 
16
+ Style/HashEachMethods:
17
+ Enabled: true
18
+
19
+ Style/HashTransformKeys:
20
+ Enabled: true
21
+
22
+ Style/HashTransformValues:
23
+ Enabled: true
24
+
16
25
  Metrics/BlockLength:
17
26
  Exclude:
18
27
  - 'spec/**/*'
data/.travis.yml CHANGED
@@ -8,15 +8,16 @@ env:
8
8
  - CC_TEST_REPORTER_ID=48c33b2bc3ccdc6dafe9ed76482eca03cde47b922a7859074fc2be791247e5fd
9
9
 
10
10
  rvm:
11
- - 2.3
12
- - 2.4
13
11
  - 2.5
14
12
  - 2.6
13
+ - 2.7
15
14
  - ruby-head
15
+ - truffleruby
16
16
 
17
17
  matrix:
18
18
  allow_failures:
19
19
  - rvm: ruby-head
20
+ - rvm: truffleruby
20
21
  fast_finish: true
21
22
 
22
23
  before_script:
@@ -29,7 +30,3 @@ script:
29
30
 
30
31
  after_script:
31
32
  - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
32
-
33
- notifications:
34
- recipients: leonid@svyatov.ru
35
- on_failure: change
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.0.0] - 2020-03-10
4
+
5
+ ### Breaking changes
6
+
7
+ - Minimum required Ruby version is 2.5 now
8
+
9
+ ### Updated
10
+
11
+ - Small internal refactorings
12
+ - TravisCI config updated: dropped Ruby 2.3 and 2.4, added Ruby 2.7
13
+ - Rubocop's Ruby target version changed to 2.5
14
+
3
15
  ## [2.0.0] - 2019-02-03
4
16
 
5
17
  ### Added
data/lib/sec_id/base.rb CHANGED
@@ -1,29 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SecId
4
- class Base
5
- CHAR_TO_DIGITS = {
6
- '0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4,
7
- '5' => 5, '6' => 6, '7' => 7, '8' => 8, '9' => 9,
8
- 'A' => [1, 0], 'B' => [1, 1], 'C' => [1, 2], 'D' => [1, 3], 'E' => [1, 4],
9
- 'F' => [1, 5], 'G' => [1, 6], 'H' => [1, 7], 'I' => [1, 8], 'J' => [1, 9],
10
- 'K' => [2, 0], 'L' => [2, 1], 'M' => [2, 2], 'N' => [2, 3], 'O' => [2, 4],
11
- 'P' => [2, 5], 'Q' => [2, 6], 'R' => [2, 7], 'S' => [2, 8], 'T' => [2, 9],
12
- 'U' => [3, 0], 'V' => [3, 1], 'W' => [3, 2], 'X' => [3, 3], 'Y' => [3, 4], 'Z' => [3, 5],
13
- '*' => [3, 6], '@' => [3, 7], '#' => [3, 8]
14
- }.freeze
15
-
16
- CHAR_TO_DIGIT = {
17
- '0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4,
18
- '5' => 5, '6' => 6, '7' => 7, '8' => 8, '9' => 9,
19
- 'A' => 10, 'B' => 11, 'C' => 12, 'D' => 13, 'E' => 14,
20
- 'F' => 15, 'G' => 16, 'H' => 17, 'I' => 18, 'J' => 19,
21
- 'K' => 20, 'L' => 21, 'M' => 22, 'N' => 23, 'O' => 24,
22
- 'P' => 25, 'Q' => 26, 'R' => 27, 'S' => 28, 'T' => 29,
23
- 'U' => 30, 'V' => 31, 'W' => 32, 'X' => 33, 'Y' => 34, 'Z' => 35,
24
- '*' => 36, '@' => 37, '#' => 38
25
- }.freeze
4
+ CHAR_TO_DIGITS = {
5
+ '0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4,
6
+ '5' => 5, '6' => 6, '7' => 7, '8' => 8, '9' => 9,
7
+ 'A' => [1, 0], 'B' => [1, 1], 'C' => [1, 2], 'D' => [1, 3], 'E' => [1, 4],
8
+ 'F' => [1, 5], 'G' => [1, 6], 'H' => [1, 7], 'I' => [1, 8], 'J' => [1, 9],
9
+ 'K' => [2, 0], 'L' => [2, 1], 'M' => [2, 2], 'N' => [2, 3], 'O' => [2, 4],
10
+ 'P' => [2, 5], 'Q' => [2, 6], 'R' => [2, 7], 'S' => [2, 8], 'T' => [2, 9],
11
+ 'U' => [3, 0], 'V' => [3, 1], 'W' => [3, 2], 'X' => [3, 3], 'Y' => [3, 4], 'Z' => [3, 5],
12
+ '*' => [3, 6], '@' => [3, 7], '#' => [3, 8]
13
+ }.freeze
14
+
15
+ CHAR_TO_DIGIT = {
16
+ '0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4,
17
+ '5' => 5, '6' => 6, '7' => 7, '8' => 8, '9' => 9,
18
+ 'A' => 10, 'B' => 11, 'C' => 12, 'D' => 13, 'E' => 14,
19
+ 'F' => 15, 'G' => 16, 'H' => 17, 'I' => 18, 'J' => 19,
20
+ 'K' => 20, 'L' => 21, 'M' => 22, 'N' => 23, 'O' => 24,
21
+ 'P' => 25, 'Q' => 26, 'R' => 27, 'S' => 28, 'T' => 29,
22
+ 'U' => 30, 'V' => 31, 'W' => 32, 'X' => 33, 'Y' => 34, 'Z' => 35,
23
+ '*' => 36, '@' => 37, '#' => 38
24
+ }.freeze
26
25
 
26
+ class Base
27
27
  attr_reader :full_number, :identifier, :check_digit
28
28
 
29
29
  def self.valid?(id)
@@ -72,7 +72,7 @@ module SecId
72
72
 
73
73
  private
74
74
 
75
- def digitized_identifier
75
+ def id_digits
76
76
  raise NotImplementedError
77
77
  end
78
78
 
@@ -82,11 +82,11 @@ module SecId
82
82
  end
83
83
 
84
84
  def char_to_digits(char)
85
- CHAR_TO_DIGITS.fetch(char)
85
+ SecId::CHAR_TO_DIGITS.fetch(char)
86
86
  end
87
87
 
88
88
  def char_to_digit(char)
89
- CHAR_TO_DIGIT.fetch(char)
89
+ SecId::CHAR_TO_DIGIT.fetch(char)
90
90
  end
91
91
 
92
92
  def mod_10(sum)
data/lib/sec_id/cusip.rb CHANGED
@@ -32,7 +32,7 @@ module SecId
32
32
  def modified_luhn_sum
33
33
  sum = 0
34
34
 
35
- digitized_identifier.reverse.each_slice(2) do |even, odd|
35
+ id_digits.reverse.each_slice(2) do |even, odd|
36
36
  double_even = (even || 0) * 2
37
37
  sum += div_10_mod_10(double_even) + div_10_mod_10(odd || 0)
38
38
  end
@@ -40,8 +40,8 @@ module SecId
40
40
  sum
41
41
  end
42
42
 
43
- def digitized_identifier
44
- @digitized_identifier ||= identifier.each_char.map(&method(:char_to_digit))
43
+ def id_digits
44
+ @id_digits ||= identifier.each_char.map(&method(:char_to_digit))
45
45
  end
46
46
  end
47
47
  end
data/lib/sec_id/isin.rb CHANGED
@@ -32,7 +32,7 @@ module SecId
32
32
  def luhn_sum
33
33
  sum = 0
34
34
 
35
- digitized_identifier.reverse.each_slice(2) do |even, odd|
35
+ id_digits.reverse.each_slice(2) do |even, odd|
36
36
  double_even = (even || 0) * 2
37
37
  double_even -= 9 if double_even > 9
38
38
  sum += double_even + (odd || 0)
@@ -41,8 +41,8 @@ module SecId
41
41
  sum
42
42
  end
43
43
 
44
- def digitized_identifier
45
- @digitized_identifier ||= identifier.each_char.flat_map(&method(:char_to_digits))
44
+ def id_digits
45
+ @id_digits ||= identifier.each_char.flat_map(&method(:char_to_digits))
46
46
  end
47
47
  end
48
48
  end
data/lib/sec_id/sedol.rb CHANGED
@@ -10,8 +10,6 @@ module SecId
10
10
 
11
11
  CHARACTER_WEIGHTS = [1, 3, 1, 7, 3, 9].freeze
12
12
 
13
- attr_reader :full_number
14
-
15
13
  def initialize(sedol)
16
14
  sedol_parts = parse sedol
17
15
  @identifier = sedol_parts[:identifier]
@@ -31,16 +29,16 @@ module SecId
31
29
  index = 0
32
30
  sum = 0
33
31
 
34
- while index < digitized_identifier.size
35
- sum += digitized_identifier[index] * CHARACTER_WEIGHTS[index]
32
+ while index < id_digits.size
33
+ sum += id_digits[index] * CHARACTER_WEIGHTS[index]
36
34
  index += 1
37
35
  end
38
36
 
39
37
  sum
40
38
  end
41
39
 
42
- def digitized_identifier
43
- @digitized_identifier ||= identifier.each_char.map(&method(:char_to_digit))
40
+ def id_digits
41
+ @id_digits ||= identifier.each_char.map(&method(:char_to_digit))
44
42
  end
45
43
  end
46
44
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SecId
4
- VERSION = '2.0.1'
4
+ VERSION = '3.0.0'
5
5
  end
data/sec_id.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.homepage = 'https://github.com/svyatov/sec_id'
16
16
  spec.license = 'MIT'
17
17
 
18
- spec.required_ruby_version = '>= 2.3.0'
18
+ spec.required_ruby_version = '>= 2.5.0'
19
19
 
20
20
  spec.require_paths = ['lib']
21
21
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -24,8 +24,8 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_development_dependency 'bundler', '>= 1.16'
26
26
  spec.add_development_dependency 'rake', '>= 10.0'
27
- spec.add_development_dependency 'rspec', '~> 3.8'
28
- spec.add_development_dependency 'rubocop', '~> 0.63.1'
29
- spec.add_development_dependency 'rubocop-rspec', '~> 1.32'
30
- spec.add_development_dependency 'simplecov', '~> 0.16.1'
27
+ spec.add_development_dependency 'rspec', '~> 3.9'
28
+ spec.add_development_dependency 'rubocop', '~> 0.80.1'
29
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.38'
30
+ spec.add_development_dependency 'simplecov', '~> 0.17.1'
31
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sec_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leonid Svyatov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-03 00:00:00.000000000 Z
11
+ date: 2020-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,56 +44,56 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.8'
47
+ version: '3.9'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.8'
54
+ version: '3.9'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.63.1
61
+ version: 0.80.1
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.63.1
68
+ version: 0.80.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop-rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.32'
75
+ version: '1.38'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.32'
82
+ version: '1.38'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.16.1
89
+ version: 0.17.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.16.1
96
+ version: 0.17.1
97
97
  description: 'Validate securities identification numbers with ease! Currently supported
98
98
  standards: ISIN, CUSIP, SEDOL.'
99
99
  email:
@@ -132,14 +132,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
132
  requirements:
133
133
  - - ">="
134
134
  - !ruby/object:Gem::Version
135
- version: 2.3.0
135
+ version: 2.5.0
136
136
  required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  requirements:
138
138
  - - ">="
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0'
141
141
  requirements: []
142
- rubygems_version: 3.0.2
142
+ rubygems_version: 3.1.2
143
143
  signing_key:
144
144
  specification_version: 4
145
145
  summary: Validate securities identification numbers with ease!