module GlobalPhone::Parsing
Public Instance Methods
parse(string, territory_name)
click to toggle source
# File lib/global_phone/parsing.rb, line 6 def parse(string, territory_name) string = Number.normalize(string) territory = self.territory(territory_name) raise ArgumentError, "unknown territory `#{territory_name}'" unless territory if starts_with_plus?(string) parse_international_string(string) elsif string =~ territory.international_prefix string = strip_international_prefix(territory, string) parse_international_string(string) else territory.parse_national_string(string) end end
parse_international_string(string)
click to toggle source
# File lib/global_phone/parsing.rb, line 21 def parse_international_string(string) string = Number.normalize(string) string = strip_leading_plus(string) if starts_with_plus?(string) if region = region_for_string(string) region.parse_national_string(string) end end
Protected Instance Methods
country_code_candidates_for(string)
click to toggle source
# File lib/global_phone/parsing.rb, line 48 def country_code_candidates_for(string) (1..3).map { |length| string[0, length] } end
region_for_string(string)
click to toggle source
# File lib/global_phone/parsing.rb, line 43 def region_for_string(string) candidates = country_code_candidates_for(string) Utils.map_detect(candidates) { |country_code| region(country_code) } end
starts_with_plus?(string)
click to toggle source
# File lib/global_phone/parsing.rb, line 31 def starts_with_plus?(string) string[0, 1] == "+" end
strip_international_prefix(territory, string)
click to toggle source
# File lib/global_phone/parsing.rb, line 39 def strip_international_prefix(territory, string) string.sub(territory.international_prefix, "") end
strip_leading_plus(string)
click to toggle source
# File lib/global_phone/parsing.rb, line 35 def strip_leading_plus(string) string[1..-1] end