Sha256: 4b295d67b7c002958bffec0808e3b7fabde0190ee253190e3b410f68167a8253

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

# encoding: utf-8
module SEPA
  class IBANValidator < ActiveModel::Validator
    def validate(record)
      unless IBANTools::IBAN.valid?(record.iban.to_s)
        record.errors.add(:iban, 'is invalid')
      end
    end
  end

  class BICValidator < ActiveModel::Validator
    def validate(record)
      unless record.bic.to_s.match /[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}/
        record.errors.add(:bic, 'is invalid')
      end
    end
  end

  class CreditorIdentifierValidator < ActiveModel::Validator
    def validate(record)
      unless valid?(record.creditor_identifier)
        record.errors.add(:creditor_identifier, 'is invalid')
      end
    end

    def valid?(creditor_identifier)
      if ok = creditor_identifier.to_s.match(/[a-zA-Z]{2,2}[0-9]{2,2}([A-Za-z0-9]|[\+|\?|\/|\-|\:|\(|\)|\.|,|']){3,3}([A-Za-z0-9]|[\+|\?|\/|\-|:|\(|\)|\.|,|']){1,28}/)
        # In Germany, the identifier has to be exactly 18 chars long
        if creditor_identifier[0..1].match(/DE/i)
          ok = creditor_identifier.length == 18
        end
      end
      ok
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sepa_king-0.0.7 lib/sepa_king/validator.rb
sepa_king-0.0.6 lib/sepa_king/validator.rb
sepa_king-0.0.5 lib/sepa_king/validator.rb