Sha256: 292e7747122b56775f19939f271d1474386b61c197affed928b813bf0c9c6b89

Contents?: true

Size: 991 Bytes

Versions: 1

Compression:

Stored size: 991 Bytes

Contents

# frozen_string_literal: true

require 'phonelib'

module Roqua
  module Healthy
    module A19
      module PhoneValidator
        EU_COUNTRY_CODES = Set.new(
          %w[AT BE BG CY CZ DE DK EE EL ES FI FR HR HU IE IT LT LU LV MT NL PL PT RO SE SI SK UK]
        )

        def self.phone_cell_number?(number)
          stripped_number = strip_non_phone_number_characters(number)

          phone_cell_number_in_european_country?(stripped_number) &&
            contains_only_phone_number_characters?(stripped_number)
        end

        def self.phone_cell_number_in_european_country?(number)
          phone = Phonelib.parse(number, 'NL')

          phone.type == :mobile && EU_COUNTRY_CODES.include?(phone.country)
        end

        def self.contains_only_phone_number_characters?(number)
          /^\+?\d+$/.match(number).present?
        end

        def self.strip_non_phone_number_characters(number)
          number.gsub(/[-\s.]/, '')
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
roqua-healthy-1.6.0 lib/roqua/healthy/a19/phone_validator.rb