Module: Phonelib::Core
- Included in:
- PhoneValidator, Phonelib
- Defined in:
- lib/phonelib/core.rb
Overview
main module that includes all basic data and methods
Constant Summary collapse
- FILE_MAIN_DATA =
'data/phone_data.dat'
- FILE_EXT_DATA =
'data/extended_data.dat'
- GENERAL =
Validation patterns keys constants
:general_desc
- PREMIUM_RATE =
:premium_rate
- TOLL_FREE =
:toll_free
- SHARED_COST =
between caller and recipient, and is hence typically less than PREMIUM_RATE calls
:shared_cost
- VOIP =
:voip
- PERSONAL_NUMBER =
and may be routed to either a MOBILE or FIXED_LINE number.
:personal_number
- PAGER =
:pager
- UAN =
:uan
- VOICEMAIL =
:voicemail
- FIXED_LINE =
:fixed_line
- MOBILE =
:mobile
- FIXED_OR_MOBILE =
:fixed_or_mobile
- SHORT_CODE =
:short_code
- EMERGENCY =
:emergency
- CARRIER_SPECIFIC =
:carrier_specific
- SMS_SERVICES =
:sms_services
- EXPANDED_EMERGENCY =
:expanded_emergency
- NO_INTERNATIONAL_DIALING =
:no_international_dialling
- CARRIER_SERVICES =
:carrier_services
- DIRECTORY_SERVICES =
:directory_services
- STANDARD_RATE =
:standard_rate
- CARRIER_SELECTION_CODES =
:carrier_selection_codes
- AREA_CODE_OPTIONAL =
:area_code_optional
- VALID_PATTERN =
Internal use keys for validations
:national_number_pattern
- POSSIBLE_PATTERN =
:possible_number_pattern
- NATIONAL_PREFIX =
:national_prefix
- NATIONAL_PREFIX_FOR_PARSING =
:national_prefix_for_parsing
- NATIONAL_PREFIX_TRANSFORM_RULE =
:national_prefix_transform_rule
- NATIONAL_PREFIX_RULE =
:national_prefix_formatting_rule
- COUNTRY_CODE =
:country_code
- LEADING_DIGITS =
:leading_digits
- INTERNATIONAL_PREFIX =
:international_prefix
- MAIN_COUNTRY_FOR_CODE =
:main_country_for_code
- DOUBLE_COUNTRY_PREFIX_FLAG =
:double_prefix
- TYPES =
:types
- FORMATS =
:formats
- PATTERN =
:pattern
- SHORT =
:short
- PLUS_SIGN =
'+'.freeze
- VANITY_4_LETTERS_KEYS_REGEX =
/[SVYZ]/.freeze
- AREA_CODE_TYPES =
[FIXED_LINE, FIXED_OR_MOBILE, MOBILE].freeze
- AREA_CODE_MOBILE_COUNTRIES =
%w(AR MX BR).freeze
- AREA_CODE_MOBILE_TOKENS =
{ 'MX' => '1', 'AR' => '9' }.freeze
- DEFAULT_NUMBER_FORMAT =
{ pattern: '(\\d+)(\\d{3})(\\d{4})', format: '$1 $2 $3' }.freeze
- TYPES_DESC =
{ general_desc: 'General Pattern', premium_rate: 'Premium Rate', toll_free: 'Toll Free', shared_cost: 'Shared Cost', voip: 'VoIP', personal_number: 'Personal Number', pager: 'Pager', uan: 'UAN', voicemail: 'VoiceMail', fixed_line: 'Fixed Line', mobile: 'Mobile', fixed_or_mobile: 'Fixed Line or Mobile', short_code: 'Short code', emergency: 'Emergency services', carrier_specific: 'Carrier specific number', sms_services: 'SMS Services only phone', expanded_emergency: 'Expanded emergency', no_international_dialling: 'No International Dialing phone', carrier_services: 'Carrier Services', directory_services: 'Directory Services', standard_rate: 'Standard Rate Destination', carrier_selection_codes: 'Carrier Selection codes', area_code_optional: 'Are code optional' }.freeze
- SHORT_CODES =
[ :short_code, :emergency, :carrier_specific, :sms_services, :expanded_emergency, :no_international_dialling, :carrier_services, :directory_services, :standard_rate, :carrier_selection_codes, :area_code_optional ].freeze
- EXT_PREFIXES =
:prefixes
- EXT_GEO_NAMES =
:geo_names
- EXT_COUNTRY_NAMES =
:country_names
- EXT_TIMEZONES =
:timezones
- EXT_CARRIERS =
:carriers
- EXT_GEO_NAME_KEY =
:g
- EXT_TIMEZONE_KEY =
:t
- EXT_CARRIER_KEY =
:c
- @@phone_data =
nil
- @@phone_regexp_cache =
{}
- @@phone_ext_data =
nil
- @@default_country =
nil
- @@extension_separator =
';'
- @@extension_separate_symbols =
'#;'
- @@parse_special =
false
- @@strict_check =
false
- @@sanitize_regex =
'[^0-9]+'
- @@strict_double_prefix_check =
false
- @@override_phone_data =
nil
- @@additional_regexes =
{}
- @@vanity_conversion =
false
Instance Method Summary collapse
- #add_additional_regex(country, type, national_regex) ⇒ Object
- #additional_regexes ⇒ Object
-
#additional_regexes=(data) ⇒ Object
setter for data file to use.
-
#default_country ⇒ String|nil
getter method for default_country variable.
-
#default_country=(country) ⇒ String|nil
setter method for default_country variable.
- #dump_additional_regexes ⇒ Object
-
#extension_separate_symbols ⇒ String
getter method for extension_separate_symbols variable.
-
#extension_separate_symbols=(separator) ⇒ String
setter method for extension_separate_symbols variable.
-
#extension_separator ⇒ String
getter method for extension_separator variable.
-
#extension_separator=(separator) ⇒ String
setter method for extension_separator variable.
-
#impossible?(phone_number) ⇒ Boolean
method checks if passed phone number is impossible.
-
#invalid?(phone_number) ⇒ Boolean
method checks if passed phone number is invalid.
-
#invalid_for_country?(phone_number, country) ⇒ Boolean
method checks if passed phone number is invalid for provided country.
- #override_phone_data ⇒ Object
-
#override_phone_data=(file_path) ⇒ Object
setter for data file to use.
-
#parse(phone, passed_country = nil) ⇒ Phonelib::Phone
method for parsing phone number.
-
#parse_special ⇒ Boolean
getter for flag for special phone types parsing.
-
#parse_special=(special) ⇒ Boolean
setter for flag for special phone types parsing.
-
#phone_data ⇒ Hash
getter for phone data for other modules of gem, can be used outside.
- #phone_ext_data ⇒ Object
- #phone_regexp_cache ⇒ Object
-
#possible?(phone_number) ⇒ Boolean
method checks if passed phone number is possible.
-
#sanitize_regex ⇒ String
getter for sanitize regex.
-
#sanitize_regex=(regex) ⇒ String
setter for sanitize regex.
-
#strict_check ⇒ Boolean
getter for strict check flag.
-
#strict_check=(strict) ⇒ Boolean
setter for strict check flag.
-
#strict_double_prefix_check ⇒ Boolean
getter for strict double prefix check flag.
-
#strict_double_prefix_check=(strict) ⇒ Boolean
setter for strict double prefix check flag.
-
#valid?(phone_number) ⇒ Boolean
method checks if passed phone number is valid.
-
#valid_for_country?(phone_number, country) ⇒ Boolean
method checks if passed phone number is valid for provided country.
- #vanity_conversion ⇒ Object
-
#vanity_conversion=(value) ⇒ Object
setter for vanity phone numbers chars replacement.
Instance Method Details
#add_additional_regex(country, type, national_regex) ⇒ Object
163 164 165 166 167 168 169 170 |
# File 'lib/phonelib/core.rb', line 163 def add_additional_regex(country, type, national_regex) return unless Phonelib::Core::TYPES_DESC.keys.include?(type.to_sym) return unless national_regex.is_a?(String) @@phone_data = nil @@additional_regexes[country.to_s.upcase] ||= {} @@additional_regexes[country.to_s.upcase][type] ||= [] @@additional_regexes[country.to_s.upcase][type] << national_regex end |
#additional_regexes ⇒ Object
184 185 186 |
# File 'lib/phonelib/core.rb', line 184 def additional_regexes @@additional_regexes end |
#additional_regexes=(data) ⇒ Object
setter for data file to use
154 155 156 157 158 159 160 161 |
# File 'lib/phonelib/core.rb', line 154 def additional_regexes=(data) return unless data.is_a?(Array) @@additional_regexes = {} data.each do |row| next if row.size != 3 add_additional_regex(*row) end end |
#default_country ⇒ String|nil
getter method for default_country variable
34 35 36 |
# File 'lib/phonelib/core.rb', line 34 def default_country @@default_country end |
#default_country=(country) ⇒ String|nil
setter method for default_country variable
41 42 43 |
# File 'lib/phonelib/core.rb', line 41 def default_country=(country) @@default_country = country end |
#dump_additional_regexes ⇒ Object
172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/phonelib/core.rb', line 172 def dump_additional_regexes rows = [] @@additional_regexes.each do |country, types| types.each do |type, regexes| regexes.each do |regex| rows << [country, type, regex] end end end rows end |
#extension_separate_symbols ⇒ String
getter method for extension_separate_symbols variable
66 67 68 |
# File 'lib/phonelib/core.rb', line 66 def extension_separate_symbols @@extension_separate_symbols end |
#extension_separate_symbols=(separator) ⇒ String
setter method for extension_separate_symbols variable
73 74 75 |
# File 'lib/phonelib/core.rb', line 73 def extension_separate_symbols=(separator) @@extension_separate_symbols = separator end |
#extension_separator ⇒ String
getter method for extension_separator variable
50 51 52 |
# File 'lib/phonelib/core.rb', line 50 def extension_separator @@extension_separator end |
#extension_separator=(separator) ⇒ String
setter method for extension_separator variable
57 58 59 |
# File 'lib/phonelib/core.rb', line 57 def extension_separator=(separator) @@extension_separator = separator end |
#impossible?(phone_number) ⇒ Boolean
method checks if passed phone number is impossible
402 403 404 |
# File 'lib/phonelib/core.rb', line 402 def impossible?(phone_number) parse(phone_number).impossible? end |
#invalid?(phone_number) ⇒ Boolean
method checks if passed phone number is invalid
388 389 390 |
# File 'lib/phonelib/core.rb', line 388 def invalid?(phone_number) parse(phone_number).invalid? end |
#invalid_for_country?(phone_number, country) ⇒ Boolean
method checks if passed phone number is invalid for provided country
418 419 420 |
# File 'lib/phonelib/core.rb', line 418 def invalid_for_country?(phone_number, country) parse(phone_number, country).invalid_for_country?(country) end |
#override_phone_data ⇒ Object
148 149 150 |
# File 'lib/phonelib/core.rb', line 148 def override_phone_data @@override_phone_data end |
#override_phone_data=(file_path) ⇒ Object
setter for data file to use
144 145 146 |
# File 'lib/phonelib/core.rb', line 144 def override_phone_data=(file_path) @@override_phone_data = file_path end |
#parse(phone, passed_country = nil) ⇒ Phonelib::Phone
method for parsing phone number. On first run fills @@phone_data with data present in yaml file
374 375 376 |
# File 'lib/phonelib/core.rb', line 374 def parse(phone, passed_country = nil) Phonelib::Phone.new phone, passed_country end |
#parse_special ⇒ Boolean
getter for flag for special phone types parsing
83 84 85 |
# File 'lib/phonelib/core.rb', line 83 def parse_special @@parse_special end |
#parse_special=(special) ⇒ Boolean
setter for flag for special phone types parsing
90 91 92 |
# File 'lib/phonelib/core.rb', line 90 def parse_special=(special) @@parse_special = special end |
#phone_data ⇒ Hash
getter for phone data for other modules of gem, can be used outside
9 10 11 |
# File 'lib/phonelib/core.rb', line 9 def phone_data @@phone_data ||= load_data.freeze end |
#phone_ext_data ⇒ Object
25 26 27 |
# File 'lib/phonelib/core.rb', line 25 def phone_ext_data @@phone_ext_data ||= load_ext_data.freeze end |
#phone_regexp_cache ⇒ Object
17 18 19 |
# File 'lib/phonelib/core.rb', line 17 def phone_regexp_cache @@phone_regexp_cache end |
#possible?(phone_number) ⇒ Boolean
method checks if passed phone number is possible
395 396 397 |
# File 'lib/phonelib/core.rb', line 395 def possible?(phone_number) parse(phone_number).possible? end |
#sanitize_regex ⇒ String
getter for sanitize regex
115 116 117 |
# File 'lib/phonelib/core.rb', line 115 def sanitize_regex @@sanitize_regex end |
#sanitize_regex=(regex) ⇒ String
setter for sanitize regex
122 123 124 |
# File 'lib/phonelib/core.rb', line 122 def sanitize_regex=(regex) @@sanitize_regex = regex.is_a?(String) ? regex : regex.to_s end |
#strict_check ⇒ Boolean
getter for strict check flag
99 100 101 |
# File 'lib/phonelib/core.rb', line 99 def strict_check @@strict_check end |
#strict_check=(strict) ⇒ Boolean
setter for strict check flag
106 107 108 |
# File 'lib/phonelib/core.rb', line 106 def strict_check=(strict) @@strict_check = strict end |
#strict_double_prefix_check ⇒ Boolean
getter for strict double prefix check flag
131 132 133 |
# File 'lib/phonelib/core.rb', line 131 def strict_double_prefix_check @@strict_double_prefix_check end |
#strict_double_prefix_check=(strict) ⇒ Boolean
setter for strict double prefix check flag
138 139 140 |
# File 'lib/phonelib/core.rb', line 138 def strict_double_prefix_check=(strict) @@strict_double_prefix_check = strict end |
#valid?(phone_number) ⇒ Boolean
method checks if passed phone number is valid
381 382 383 |
# File 'lib/phonelib/core.rb', line 381 def valid?(phone_number) parse(phone_number).valid? end |
#valid_for_country?(phone_number, country) ⇒ Boolean
method checks if passed phone number is valid for provided country
410 411 412 |
# File 'lib/phonelib/core.rb', line 410 def valid_for_country?(phone_number, country) parse(phone_number, country).valid_for_country?(country) end |
#vanity_conversion ⇒ Object
194 195 196 |
# File 'lib/phonelib/core.rb', line 194 def vanity_conversion @@vanity_conversion end |
#vanity_conversion=(value) ⇒ Object
setter for vanity phone numbers chars replacement
190 191 192 |
# File 'lib/phonelib/core.rb', line 190 def vanity_conversion=(value) @@vanity_conversion = value end |