lib/phonelib/phone_analyzer.rb in phonelib-0.2.7 vs lib/phonelib/phone_analyzer.rb in phonelib-0.2.8

- old
+ new

@@ -5,35 +5,38 @@ NOT_FOR_CHECK = [:general_desc, :fixed_line, :mobile, :fixed_or_mobile] # analyze provided phone if it matches country data ang returns result of # analyze def analyze(phone, country_data) + all_data = {} country_data.each do |data| if country_match = phone_match_data?(phone, data) - return get_national_and_data(phone, data, country_match) + + all_data.merge! get_national_and_data(phone, data, country_match) end end - [ '', {} ] + all_data end private # returns national number for provided phone and analyzing results for # provided phone number def get_national_and_data(phone, data, country_match) prefix_length = data[Core::COUNTRY_CODE].length prefix_length += country_match[1].length unless country_match[1].nil? - national = phone[prefix_length..-1] - data[:format] = get_number_format(national, data[Core::FORMATS]) - data.merge! all_number_types(national, data[Core::TYPES]) - [ national, { data[:id] => data } ] + result = data.select { |k, v| ![:types, :formats].include?(k) } + result[:national] = phone[prefix_length..-1] + result[:format] = get_number_format(result[:national], data[Core::FORMATS]) + result.merge! all_number_types(result[:national], data[Core::TYPES]) + { result[:id] => result } end # Check if sanitized phone match country data def phone_match_data?(phone, data) country_code = "#{data[Core::COUNTRY_CODE]}" inter_prefix = "(#{data[Core::INTERNATIONAL_PREFIX]})?" - if phone.match(/^#{inter_prefix}#{country_code}/) + if phone =~ /^#{inter_prefix}#{country_code}/ _possible, valid = get_patterns(data[Core::TYPES], Core::GENERAL) phone.match /^#{inter_prefix}#{country_code}#{valid}$/ end end \ No newline at end of file