Class: Ibanvalidator::Conversion

Inherits:
Object
  • Object
show all
Defined in:
lib/ibanvalidator/conversion.rb

Class Method Summary collapse

Class Method Details

.iban2local(country_code, bban, leading_zero = false) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/ibanvalidator/conversion.rb', line 25

def self.iban2local(country_code, bban, leading_zero = false)
  config = load_config country_code



  local = {}
  config.map do |key, values|
    local[key.to_sym] = [values].flatten.map do |value|
      regexp = /^#{bban_format_to_regexp(value)}/
      ret = bban.scan(regexp).first
      bban.sub! regexp, ''
      ret
    end.join('')
    #entefernen von führenden nullen
    local[key.to_sym].sub!(/^0+/, '') if !leading_zero
    local[key.to_sym] = '0' if local[key.to_sym] == ''
  end
  local
end

.local2iban(country_code, data) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/ibanvalidator/conversion.rb', line 4

def self.local2iban(country_code, data)
  config = load_config country_code

  bban = config.map do |key, values|
    d = data[key.to_sym].dup
    ret = [values].flatten.map do |value|
      l = bban_format_length(value)
      r = bban_format_to_format_string(value) % bban_format_cast(value, d[0..(l-1)])
      d[0..(l-1)] = ''
      r
    end.join('')
    # "%05s" % "a" -> "    a" and not "0000a"
    ret.gsub(/ /, '0')
  end.join('')

  check_digits = "%02d" % checksum(country_code, bban)

  IBAN.new "#{country_code}#{check_digits}#{bban}"
end