Sha256: 972c20902849cfc4190ad91e54ccc8c043590a4994c9b91c1c3bcd870e52647c

Contents?: true

Size: 992 Bytes

Versions: 9

Compression:

Stored size: 992 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

9 entries across 9 versions & 1 rubygems

Version Path
roqua-healthy-1.5.13 lib/roqua/healthy/a19/phone_validator.rb
roqua-healthy-1.5.12 lib/roqua/healthy/a19/phone_validator.rb
roqua-healthy-1.5.11 lib/roqua/healthy/a19/phone_validator.rb
roqua-healthy-1.5.10 lib/roqua/healthy/a19/phone_validator.rb
roqua-healthy-1.5.9 lib/roqua/healthy/a19/phone_validator.rb
roqua-healthy-1.5.8 lib/roqua/healthy/a19/phone_validator.rb
roqua-healthy-1.5.7 lib/roqua/healthy/a19/phone_validator.rb
roqua-healthy-1.5.6 lib/roqua/healthy/a19/phone_validator.rb
roqua-healthy-1.5.5 lib/roqua/healthy/a19/phone_validator.rb