bicvalidator 0.1.7 → 0.1.8

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: 786e4bf30de058e920d733251a099ca19aa5c08b
4
- data.tar.gz: b61fcc4448692a261a0c237efdd9589d24d1ff85
3
+ metadata.gz: 4cf499d2b2c72ca034d2eea94f5b1c85434eff03
4
+ data.tar.gz: 80586fc2866526f40ca682cf4863f0f75722788a
5
5
  SHA512:
6
- metadata.gz: 5b0c48bed78bea721c15b149cb244d344beff5ab031d13c00ab5375edd221cf97709b24143417cb4f39b593b04fc3289a721ad1fea3d8fd9037504c92762b819
7
- data.tar.gz: 591257c388490872ce0db5ab21712360eb97098b89163fe2cb955d3cbefbfc939aeb64a9d780d7698c28a6420e1a87a945f9a4b99ee431307cf678844f3bcb9a
6
+ metadata.gz: eb7cf46367c94f7b5935c69a6c4d60572da2252f526572e2fc354eb01763fd99e0082e9866a55178162f3452c84e7658f94808bee7d9c2358c7c935f5a3ad32b
7
+ data.tar.gz: e254564ebc560dc09fff8f1b2ceda9841782c286696c1455d37b57b26bb3113755c2c55df3654818f4230e6cbda138719da214a9c71419c1b05edda4bc79ceda
data/.gitignore CHANGED
@@ -7,6 +7,6 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
-
10
+ *.gem
11
11
  # rspec failure tracking
12
12
  .rspec_status
data/Appraisals ADDED
@@ -0,0 +1,15 @@
1
+ appraise 'rails 3.0' do
2
+ gem 'activesupport', '~>3.0.0'
3
+ end
4
+
5
+ appraise 'rails 4.0' do
6
+ gem 'activesupport', '~>4.0.0'
7
+ end
8
+
9
+ appraise 'rails 4.2' do
10
+ gem 'activesupport', '~>4.2.0'
11
+ end
12
+
13
+ appraise 'rails 5.0' do
14
+ gem 'activesupport', '~>5.0.0'
15
+ end
data/bicvalidator.gemspec CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  end
29
29
  spec.bindir = "exe"
30
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
- spec.require_paths = ["lib"]
31
+ spec.require_paths = ["lib","lib/bicvalidator"]
32
32
 
33
33
  spec.add_development_dependency "bundler", "~> 1.15"
34
34
  spec.add_development_dependency "rake", "~> 10.0"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~>3.0.0"
6
+
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~>4.0.0"
6
+
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~>4.2.0"
6
+
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activesupport", "~>5.0.0"
6
+
7
+
8
+ gemspec :path => "../"
data/lib/bicvalidator.rb CHANGED
@@ -2,10 +2,13 @@ require "bicvalidator/version"
2
2
  require 'active_model'
3
3
  require 'active_support'
4
4
  require 'active_support/core_ext'
5
- require "bicvalidator/bic"
6
- require 'bicvalidator/bic_model_validator'
7
5
  #brauch ich fuer laendercodes ISO3166::Country
8
6
  require 'countries'
7
+
8
+ require "bicvalidator/bic"
9
+ require 'bicvalidator/bic_model_validator'
10
+
11
+
9
12
  module Bicvalidator
10
13
  mattr_accessor :sepa_bic_countries
11
14
  mattr_accessor :countries
@@ -14,7 +17,11 @@ module Bicvalidator
14
17
  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"]
15
18
  Bicvalidator.countries = ISO3166::Country.translations.keys
16
19
  Bicvalidator.eu_countries = ISO3166::Country.all.select {|it| it.in_eu?}.map{|et| et.alpha2}
20
+
21
+
17
22
  end
23
+
18
24
  ActiveModel::Validations.send(:include, Bicvalidator)
25
+
19
26
  I18n.load_path += Dir[File.expand_path(File.join(File.dirname(__FILE__),
20
27
  '/locales', '*.yml')).to_s]
@@ -0,0 +1,97 @@
1
+ module Bicvalidator
2
+ class Bic
3
+ attr_accessor :bic_code, :bank, :country, :location, :branch
4
+ def initialize(bic_str)
5
+ ##strip reicht nicht denn strip entfernt nur leerzeichen vorne und hinten
6
+ @bic_code = bic_str.strip.gsub(/\s+/, '').upcase
7
+ end
8
+ def errorcode
9
+ return if valid?
10
+ return "BV0010" if !has_valid_lenght?
11
+ return "BV0011" if !has_valid_format?
12
+ return "BV0012" if !valid_country_code?
13
+ return "BV0013" if !valid_location_code?
14
+ return "BV0014" if !valid_branch_code?
15
+ end
16
+ #in instanz
17
+ def valid?
18
+ has_valid_lenght? && has_valid_format? && valid_country_code? && valid_location_code? && valid_branch_code?
19
+ end
20
+
21
+ def has_valid_lenght?
22
+ [8, 11].include? @bic_code.length
23
+ end
24
+
25
+ def has_valid_format?
26
+ !(@bic_code =~ bic_iso_format).nil?
27
+ end
28
+
29
+ def valid_country_code?
30
+ Bicvalidator.countries.include? country
31
+ end
32
+
33
+ def valid_location_code?
34
+ #http://de.wikipedia.org/wiki/ISO_9362
35
+ #2-stellige Codierung des Ortes in zwei Zeichen. Das erste Zeichen darf nicht die Ziffer „0“ oder „1“ sein.
36
+ #Der Buchstabe 'O' ist als zweites Zeichen nicht gestattet.
37
+ !(location[0] =~ /[^01]/ && location[1] =~ /[^O]/).nil?
38
+ end
39
+
40
+ def valid_branch_code?
41
+ #Der Branch-Code darf nicht mit „X“ anfangen, es sei denn, es ist „XXX“.
42
+ return true if @bic_code.length == 8
43
+ return true if branch == "XXX"
44
+ (branch[0] =~ /[X]/).nil?
45
+ end
46
+
47
+ def eu?
48
+ @eu ||= (valid? and Bicvalidator.eu_countries.include? country)
49
+ end
50
+
51
+ def non_eu?
52
+ @non_eu ||= (valid? and !eu?)
53
+ end
54
+
55
+ def sepa_scheme?
56
+ #es koennen auch laender am SEAP teilnhmen die nicht in de rEU sind, wie zb CH
57
+ valid? and Bicvalidator.sepa_bic_countries.include? country
58
+ end
59
+
60
+
61
+ def bank
62
+ @bank ||= match[1]
63
+ end
64
+
65
+ def country
66
+ @country ||= match[2]
67
+ end
68
+
69
+ def location
70
+ @location ||= match[3]
71
+ end
72
+
73
+ def branch
74
+ @branch ||= match[4]
75
+ end
76
+
77
+ private
78
+
79
+ def bic_iso_format
80
+ #https://de.wikipedia.org/wiki/ISO_9362
81
+ #BBBB 4-stelliger Bankcode, vom Geldinstitut frei wählbar
82
+ #CC 2-stelliger Ländercode nach ISO 3166-1
83
+ #LL 2-stellige Codierung des Ortes in zwei Zeichen.
84
+ #Das erste Zeichen darf nicht die Ziffer „0“ oder „1“ sein.
85
+ #Wenn das zweite Zeichen kein Buchstabe, sondern eine Ziffer ist, so bedeutet dies:
86
+ #bbb 3-stellige Kennzeichnung (Branch-Code) der Filiale oder Abteilung (optional)
87
+ #test in http://rubular.com/
88
+ /([A-Z]{4})([A-Z]{2})([0-9A-Z]{2})([0-9A-Z]{3})?/
89
+ end
90
+
91
+ def match
92
+ bic_iso_format.match(@bic_code)
93
+ end
94
+
95
+
96
+ end
97
+ end
@@ -0,0 +1,11 @@
1
+ module Bicvalidator
2
+ class BicModelValidator < ActiveModel::EachValidator
3
+ def validate_each(record, attribute, value)
4
+ bic = Bic.new(value)
5
+ if bic.valid?
6
+ else
7
+ record.errors.add attribute, bic.errorcode.to_sym
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Bicvalidator
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
@@ -0,0 +1,8 @@
1
+ de:
2
+ errors:
3
+ messages:
4
+ "BV0010": ungültige Länge
5
+ "BV0011": ungültiges Format
6
+ "BV0012": ungültiges Land
7
+ "BV0013": ungültiger Location Code
8
+ "BV0014": ungültiger Branch Code
@@ -0,0 +1,8 @@
1
+ en:
2
+ errors:
3
+ messages:
4
+ "BV0010": invalid length
5
+ "BV0011": invalid format
6
+ "BV0012": invalid country
7
+ "BV0013": invalid location code
8
+ "BV0014": invalid branch code
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bicvalidator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olaf Kaderka
@@ -118,6 +118,7 @@ files:
118
118
  - ".gitignore"
119
119
  - ".rspec"
120
120
  - ".travis.yml"
121
+ - Appraisals
121
122
  - CODE_OF_CONDUCT.md
122
123
  - Gemfile
123
124
  - LICENSE.txt
@@ -126,8 +127,16 @@ files:
126
127
  - bicvalidator.gemspec
127
128
  - bin/console
128
129
  - bin/setup
130
+ - gemfiles/rails_3.0.gemfile
131
+ - gemfiles/rails_4.0.gemfile
132
+ - gemfiles/rails_4.2.gemfile
133
+ - gemfiles/rails_5.0.gemfile
129
134
  - lib/bicvalidator.rb
135
+ - lib/bicvalidator/bic.rb
136
+ - lib/bicvalidator/bic_model_validator.rb
130
137
  - lib/bicvalidator/version.rb
138
+ - lib/locales/de.yml
139
+ - lib/locales/en.yml
131
140
  homepage: https://github.com/olafkaderka/bicvalidator/
132
141
  licenses:
133
142
  - MIT
@@ -137,6 +146,7 @@ post_install_message:
137
146
  rdoc_options: []
138
147
  require_paths:
139
148
  - lib
149
+ - lib/bicvalidator
140
150
  required_ruby_version: !ruby/object:Gem::Requirement
141
151
  requirements:
142
152
  - - ">="