Exception: IbanCalculator::InvalidData

Inherits:
StandardError
  • Object
show all
Defined in:
lib/iban_calculator/invalid_data.rb

Constant Summary collapse

CODES =
{
  128  => [:account_number, [:checksum_failed]],
  256  => [:bank_code,      [:not_found]],
  512  => [:account_number, [:invalid_length]],
  1024 => [:bank_code,      [:invalid_length]],
  2048 => [:iban,           [:checksum_failed]],
  4096 => [:base,           [:data_missing]],
  8192 => [:country,        [:not_supported]],
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(msg, error_code) ⇒ InvalidData

Returns a new instance of InvalidData.



15
16
17
18
# File 'lib/iban_calculator/invalid_data.rb', line 15

def initialize(msg, error_code)
  self.errors = resolve_error_code(error_code)
  super(msg)
end

Instance Attribute Details

#errorsObject

Returns the value of attribute errors.



13
14
15
# File 'lib/iban_calculator/invalid_data.rb', line 13

def errors
  @errors
end

Instance Method Details

#error_codes(n) ⇒ Object



32
33
34
# File 'lib/iban_calculator/invalid_data.rb', line 32

def error_codes(n)
  (0..13).map { |i| n & 2**i } - [0]
end

#known_error_codes(error_code) ⇒ Object



28
29
30
# File 'lib/iban_calculator/invalid_data.rb', line 28

def known_error_codes(error_code)
  error_codes(error_code) & CODES.keys
end

#resolve_error_code(error_code) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/iban_calculator/invalid_data.rb', line 20

def resolve_error_code(error_code)
  known_error_codes(error_code).reduce(Hash.new([])) do |hsh, item|
    error = CODES[item]
    hsh[error[0]] += error[1]
    hsh
  end
end