iban-tools 0.0.8 → 0.0.9
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 +7 -0
- data/README.md +1 -1
- data/lib/iban-tools.rb +1 -0
- data/lib/iban-tools/conversion.rb +40 -0
- data/lib/iban-tools/conversion_rules.yml +3 -0
- data/lib/iban-tools/iban.rb +17 -10
- data/lib/iban-tools/rules.yml +1 -1
- metadata +38 -10
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a70a2f9aeb3b139da9d84a9f50869b36541a86aa
|
4
|
+
data.tar.gz: a19616dd03eb8bbd6518b679dc80523896b0d473
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1575260ee396f4c6c37333c718e66bdf0835cf887faae159cef5ba6c8024d455c55c1fc7ca7b954ae58a18c4025fbeba403bfc305c6d01db97b83e0f614c8ac3
|
7
|
+
data.tar.gz: d32b4e7856f27ec9f7aa20408ff2938df2c379cb333d428bf42741ae9a575189869619fd93a4f3d231b402aa1b23f0f327492091a7973e2f517aaa3d8ca8d24b
|
data/README.md
CHANGED
@@ -35,4 +35,4 @@ Pretty print, canonicalize, and extract fields from an IBAN code
|
|
35
35
|
|
36
36
|
## Credit
|
37
37
|
|
38
|
-
[Iulianu](http://github.com/iulianu) wrote [iban-tools](http://github.com/iulianu/iban-tools). ([AlphaSights](http://dev.alphasights.com)) is now maintaining the gem.
|
38
|
+
[Iulianu](http://github.com/iulianu) wrote [iban-tools](http://github.com/iulianu/iban-tools). ([AlphaSights](http://dev.alphasights.com)) is now maintaining the gem.
|
data/lib/iban-tools.rb
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
module IBANTools
|
2
|
+
class Conversion
|
3
|
+
|
4
|
+
def self.local2iban(country_code, data)
|
5
|
+
config = load_config country_code
|
6
|
+
|
7
|
+
bban = config.map do |key, value|
|
8
|
+
value[1] % data[key.to_sym]
|
9
|
+
end.join('')
|
10
|
+
|
11
|
+
check_digits = "%02d" % checksum(country_code, bban)
|
12
|
+
|
13
|
+
IBAN.new "#{country_code}#{check_digits}#{bban}"
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def self.iban2local(country_code, bban)
|
18
|
+
config = load_config country_code
|
19
|
+
|
20
|
+
local = {}
|
21
|
+
config.map do |key, value|
|
22
|
+
local[key.to_sym] = bban.scan(/^#{value[0]}/).first.sub(/^0+/, '')
|
23
|
+
bban.sub! /^#{value[0]}/, ''
|
24
|
+
end
|
25
|
+
local
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def self.load_config(country_code)
|
31
|
+
default_config = YAML.
|
32
|
+
load(File.read(File.dirname(__FILE__) + '/conversion_rules.yml'))
|
33
|
+
default_config[country_code]
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.checksum(country_code, bban)
|
37
|
+
97 - (IBAN.new("#{country_code}00#{bban}").numerify.to_i % 97) + 1
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/iban-tools/iban.rb
CHANGED
@@ -7,10 +7,27 @@ module IBANTools
|
|
7
7
|
new(code).validation_errors(rules).empty?
|
8
8
|
end
|
9
9
|
|
10
|
+
def self.canonicalize_code( code )
|
11
|
+
code.strip.gsub(/\s+/, '').upcase
|
12
|
+
end
|
13
|
+
|
14
|
+
# Load and cache the default rules from rules.yml
|
15
|
+
def self.default_rules
|
16
|
+
@default_rules ||= IBANRules.defaults
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.from_local(country_code, data)
|
20
|
+
Conversion.local2iban country_code, data
|
21
|
+
end
|
22
|
+
|
10
23
|
def initialize( code )
|
11
24
|
@code = IBAN.canonicalize_code(code)
|
12
25
|
end
|
13
26
|
|
27
|
+
def to_local
|
28
|
+
Conversion.iban2local country_code, bban
|
29
|
+
end
|
30
|
+
|
14
31
|
def validation_errors( rules = nil )
|
15
32
|
errors = []
|
16
33
|
return [:too_short] if @code.size < 5
|
@@ -74,15 +91,5 @@ module IBANTools
|
|
74
91
|
def prettify
|
75
92
|
@code.gsub(/(.{4})/, '\1 ').strip
|
76
93
|
end
|
77
|
-
|
78
|
-
def self.canonicalize_code( code )
|
79
|
-
code.strip.gsub(/\s+/, '').upcase
|
80
|
-
end
|
81
|
-
|
82
|
-
# Load and cache the default rules from rules.yml
|
83
|
-
def self.default_rules
|
84
|
-
@default_rules ||= IBANRules.defaults
|
85
|
-
end
|
86
|
-
|
87
94
|
end
|
88
95
|
end
|
data/lib/iban-tools/rules.yml
CHANGED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iban-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.9
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Iulian Dogariu
|
@@ -10,8 +9,36 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
14
|
-
dependencies:
|
12
|
+
date: 2013-04-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: coveralls
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
15
42
|
description: Validates IBAN account numbers
|
16
43
|
email:
|
17
44
|
- code@iuliandogariu.com
|
@@ -22,32 +49,33 @@ extra_rdoc_files: []
|
|
22
49
|
files:
|
23
50
|
- README.md
|
24
51
|
- lib/iban-tools.rb
|
52
|
+
- lib/iban-tools/conversion.rb
|
53
|
+
- lib/iban-tools/conversion_rules.yml
|
25
54
|
- lib/iban-tools/iban.rb
|
26
55
|
- lib/iban-tools/iban_rules.rb
|
27
56
|
- lib/iban-tools/rules.yml
|
28
57
|
homepage:
|
29
58
|
licenses: []
|
59
|
+
metadata: {}
|
30
60
|
post_install_message:
|
31
61
|
rdoc_options: []
|
32
62
|
require_paths:
|
33
63
|
- lib
|
34
64
|
required_ruby_version: !ruby/object:Gem::Requirement
|
35
|
-
none: false
|
36
65
|
requirements:
|
37
|
-
- -
|
66
|
+
- - '>='
|
38
67
|
- !ruby/object:Gem::Version
|
39
68
|
version: '0'
|
40
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
70
|
requirements:
|
43
|
-
- -
|
71
|
+
- - '>='
|
44
72
|
- !ruby/object:Gem::Version
|
45
73
|
version: '0'
|
46
74
|
requirements:
|
47
75
|
- none
|
48
76
|
rubyforge_project:
|
49
|
-
rubygems_version:
|
77
|
+
rubygems_version: 2.0.0
|
50
78
|
signing_key:
|
51
|
-
specification_version:
|
79
|
+
specification_version: 4
|
52
80
|
summary: IBAN validator
|
53
81
|
test_files: []
|