bicvalidator 0.1.2 → 0.1.3

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: 6c321ebf86e1e672e2c097f4f5813caf795d7e38
4
- data.tar.gz: 34e449db08b93742528ca1b1d240982ee8a7a17f
3
+ metadata.gz: 82d4b194fd9542db105f28417793c1ab7509596a
4
+ data.tar.gz: ae7994ca2142ed3d6215fa0cfeb165bcc009b6de
5
5
  SHA512:
6
- metadata.gz: c688af75a8caa1217735e9a54733bdf6f3cc94781c6d58815b2f927a19aa0acb6eda4569bcf5fe1b71b06a640ff301fd8ed9302cdc426a72f8fa4d6de2a62792
7
- data.tar.gz: 295dbf1d6561c291ae593b48c03ed9e50da7b8ff29dd20f93c2a3a45cddb2f5b1c7c893c50c5415fc911905b4dd2bdb59747931671b86bd85dac4356c09d2c4a
6
+ metadata.gz: faba57f7de958b26b323fbabd57c3d473d799ba6454d9b7b2c377d8ba3af533a3ff52b846d4224658e08c27e4da2e34c147f32c5df8f7c0c54db72b7327e891b
7
+ data.tar.gz: c52eecde0d93095dc6c2c2df32d54e2a8db1272f01b1f4c28f029aabfd7f1e6a7c71a4b726cb4cc03699852f82b034e21e152e3fbb9ff452995f5a0c5cc3c583
data/README.md CHANGED
@@ -9,7 +9,7 @@ Optional kann man den Check auch ausstellen.
9
9
  Das muss ins Gemfile:
10
10
 
11
11
  ```ruby
12
- gem 'bicvalidator',:git => 'https://github.com/olafkaderka/bicvalidator.git', :branch => 'master'
12
+ gem 'bicvalidator'
13
13
  ```
14
14
 
15
15
  Und dann ausführen:
data/Rakefile CHANGED
@@ -1,3 +1,6 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'appraisal'
1
4
  require "bundler/gem_tasks"
2
5
  require "rspec/core/rake_task"
3
6
 
data/bicvalidator.gemspec CHANGED
@@ -33,10 +33,11 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency "bundler", "~> 1.15"
34
34
  spec.add_development_dependency "rake", "~> 10.0"
35
35
  spec.add_development_dependency "rspec", "~> 3.0"
36
-
36
+ #A Ruby library for testing your library against different versions of dependencie
37
+ spec.add_development_dependency 'appraisal'
37
38
 
38
39
  #for mattr_accessor, reverse_merge
39
- spec.add_dependency "activesupport", '>= 4.0'
40
+ spec.add_dependency "activesupport"
40
41
 
41
42
  #laender
42
43
  #Countries is a collection of all sorts of useful information for every country in the ISO 3166 standard.
@@ -1,3 +1,3 @@
1
1
  module Bicvalidator
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
data/lib/bicvalidator.rb CHANGED
@@ -5,155 +5,100 @@ require 'active_support/core_ext'
5
5
  require 'countries'
6
6
 
7
7
  module Bicvalidator
8
- #mattr_accessor kommt aus active_support/core_ext'
9
- mattr_accessor :sepa_bic_countries
8
+
9
+ mattr_accessor :sepa_bic_countries
10
10
 
11
- ##https://wiki.xmldation.com/Support/EPC/List_of_SEPA_countries
12
- #kann ich somit in einem initailizer wieder ueberschreiben
13
11
  Bicvalidator.sepa_bic_countries = ["AT", "BE", "BG", "CH", "CY", "CZ", "DE", "DK", "EE", "ES", "FI", "FR", "GB", "GR", "HR", "HU", "IE", "IT", "LI", "LT", "LU", "LV", "MC", "MT", "NL", "NO", "PL", "PT", "RO", "SE", "SI", "SK", "SM", "GI", "GF", "GP", "GG", "IS", "IM", "JE", "MQ", "YT", "RE", "BL", "MF", "PM"]
14
12
 
15
13
 
16
- class Validate
17
- attr_accessor :errorcode, :bic_bankcode, :bic_code, :bic_country, :sepa_country
18
-
19
- def initialize(options={})
20
- default_options = {
21
- :bic_code => nil,
22
- :bic_bankcode => nil,
23
- :bic_country => nil,
24
- :sepa_country_check => true,
25
- }
26
- @options = options.reverse_merge(default_options)
27
- @errorcode = nil
28
- @sepa_country = false
29
- self.start_validation
14
+ class Bic
15
+
16
+ attr_accessor :bic_code, :bank, :country, :location, :branch
17
+
18
+ def initialize(bic_str)
19
+ ##strip reicht nicht denn strip entfernt nur leerzeichen vorne und hinten
20
+ @bic_code = bic_str.strip.gsub(/\s+/, '').upcase
21
+ end
22
+
23
+ def errorcode
24
+ return if valid?
25
+ return "BV0010" if !has_valid_lenght?
26
+ return "BV0011" if !has_valid_format?
27
+ return "BV0012" if !valid_country_code?
28
+ return "BV0013" if !valid_location_code?
29
+ return "BV0014" if !valid_branch_code?
30
+ end
31
+ #in instanz
32
+ def valid?
33
+ has_valid_lenght? && has_valid_format? && valid_country_code? && valid_location_code? && valid_branch_code?
34
+ end
35
+
36
+ def has_valid_lenght?
37
+ [8, 11].include? @bic_code.length
38
+ end
39
+
40
+ def has_valid_format?
41
+ !(@bic_code =~ bic_iso_format).nil?
30
42
  end
31
43
 
32
- def start_validation
33
- #hier muss auch = "" abgefangen werden, daher check mit blank?
34
- @bic_code = @options[:bic_code].blank? ? nil : @options[:bic_code]
35
- @bic_bankcode = @options[:bic_bankcode].blank? ? nil : @options[:bic_bankcode]
36
- @bic_country = @options[:bic_country].blank? ? nil : @options[:bic_country]
37
-
38
-
39
- if [@bic_code,@bic_bankcode,@bic_country].all? {|x| x.nil?}
40
- @errorcode = "BV0000"
41
- return
42
- end
43
-
44
- @sepa_country_check = @options[:sepa_country_check]
45
-
46
- if @bic_code
47
- #strip reicht nicht denn strip entfernt nur leerzeichen vorne und hinten
48
- @bic_code = self.canonicalize_str(@bic_code)
49
-
50
- #invalid character
51
- if (@bic_code =~ /^[A-Z0-9]+$/).nil?
52
- @bic_code = nil
53
- @errorcode = "BV0010"
54
- return
55
- end
56
-
57
- #muss 8 oder 11 stellen haben
58
- case @bic_code.length
59
- when 8
60
- #wir furllen immer mit XXX auf 11 Stellen auf
61
- @bic_code = "#{@bic_code}XXX"
62
- when 11
63
-
64
- else
65
- @bic_code = nil
66
- @errorcode = "BV0011"
67
- return
68
- end
69
- #wir setzen bic_country auf die 4+5 Stelle des der BIC
70
- @bic_country = @bic_code[4..5]
71
-
72
- end
73
-
74
- #egal ob durch biccode gesetzt oder das land ubergeben wurde immer st checkn ob da was geht
75
- if @bic_country
76
- #strip reicht nicht denn strip entfernt nur leerzeichen vorne und hinten
77
- @bic_country = self.canonicalize_str(@bic_country)
78
-
79
- if @bic_country.length != 2
80
- @bic_country = nil
81
- @errorcode = "BV0020"
82
- return
83
- end
84
- if (@bic_country =~ /^[A-Z]+$/).nil?
85
- @bic_country = nil
86
- @errorcode = "BV0021"
87
- return
88
- end
89
-
90
- #gibts das land uberhaupt zb wenn ZZ kommt
91
- if ISO3166::Country.new("#{@bic_country}").nil?
92
- @bic_country = nil
93
- @errorcode = "BV0025"
94
- return
95
- end
96
-
97
- if Bicvalidator.sepa_bic_countries.include? @bic_country
98
- @sepa_country = true
99
- end
100
-
101
- if @sepa_country_check and !@sepa_country
102
- @errorcode = "BV0026"
103
- return
104
- end
105
-
106
- end
107
-
108
- if @bic_bankcode
109
-
110
- if !@bic_country
111
- #bankcode ohne land geht nicht
112
- @errorcode = "BV0030"
113
- return
114
- end
115
-
116
- #strip reicht nicht denn strip entfernt nur leerzeichen vorne und hinten
117
- @bic_bankcode = self.canonicalize_str(@bic_bankcode)
118
-
119
- #es duerfen nur A-Z und 0-9 kommne, keine Sonderzeichen
120
- if (@bic_bankcode =~ /^[A-Z0-9]+$/).nil?
121
- @bic_bankcode = nil
122
- @errorcode = "BV0032"
123
- return
124
- end
125
-
126
- return if !["DE","AT","ES","CH"].include? @bic_country
127
-
128
- #kontonummer in DE 8 stellig
129
- case @bic_country
130
- when "AT","CH"
131
- #kontonummer in AT 5 stellig Zahlen
132
- rule = '^[0-9]{5}$'
133
- when "DE","ES"
134
- #kontonummer in DE 8 stellig Zahlen
135
- rule = '^[0-9]{8}$'
136
- end
137
-
138
- if regexp = Regexp.new(rule).match(@bic_bankcode)
139
- #hat er gefunden
140
- else
141
- @bic_bankcode = nil
142
- @errorcode = "BV0040"
143
- return
144
- end
145
-
146
- end
44
+ def valid_country_code?
45
+ !ISO3166::Country.new(country).nil?
46
+ end
147
47
 
48
+ def valid_location_code?
49
+ #http://de.wikipedia.org/wiki/ISO_9362
50
+ #2-stellige Codierung des Ortes in zwei Zeichen. Das erste Zeichen darf nicht die Ziffer „0“ oder „1“ sein.
51
+ #Der Buchstabe 'O' ist als zweites Zeichen nicht gestattet.
52
+ !(location[0] =~ /[^01]/ && location[1] =~ /[^O]/).nil?
53
+ end
148
54
 
55
+ def valid_branch_code?
56
+ #Der Branch-Code darf nicht mit „X“ anfangen, es sei denn, es ist „XXX“.
57
+ return true if @bic_code.length == 8
58
+ return true if branch == "XXX"
59
+ (branch[0] =~ /[X]/).nil?
149
60
  end
150
61
 
62
+ def sepa_scheme?
63
+ valid? and Bicvalidator.sepa_bic_countries.include? country
64
+ end
151
65
 
152
66
 
153
- def canonicalize_str(str)
154
- str.strip.gsub(/\s+/, '').upcase
67
+ def bank
68
+ @bank ||= match[1]
155
69
  end
156
70
 
71
+ def country
72
+ @country ||= match[2]
73
+ end
74
+
75
+ def location
76
+ @location ||= match[3]
77
+ end
78
+
79
+ def branch
80
+ @branch ||= match[4]
81
+ end
82
+
83
+ private
84
+
85
+ def bic_iso_format
86
+ #https://de.wikipedia.org/wiki/ISO_9362
87
+ #BBBB 4-stelliger Bankcode, vom Geldinstitut frei wählbar
88
+ #CC 2-stelliger Ländercode nach ISO 3166-1
89
+ #LL 2-stellige Codierung des Ortes in zwei Zeichen.
90
+ #Das erste Zeichen darf nicht die Ziffer „0“ oder „1“ sein.
91
+ #Wenn das zweite Zeichen kein Buchstabe, sondern eine Ziffer ist, so bedeutet dies:
92
+ #bbb 3-stellige Kennzeichnung (Branch-Code) der Filiale oder Abteilung (optional)
93
+ #test in http://rubular.com/
94
+ /([A-Z]{4})([A-Z]{2})([0-9A-Z]{2})([0-9A-Z]{3})?/
95
+ end
96
+
97
+ def match
98
+ bic_iso_format.match(@bic_code)
99
+ end
100
+
101
+
157
102
  end
158
103
 
159
104
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bicvalidator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olaf Kaderka
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-07 00:00:00.000000000 Z
11
+ date: 2017-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: appraisal
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'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: activesupport
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: '4.0'
75
+ version: '0'
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: '4.0'
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: countries
71
85
  requirement: !ruby/object:Gem::Requirement