diff --git a/lib/global_phone/context.rb b/lib/global_phone/context.rb index 4524524..ec496d1 100644 --- a/lib/global_phone/context.rb +++ b/lib/global_phone/context.rb @@ -19,8 +19,8 @@ def default_territory_name=(territory_name) @default_territory_name = territory_name.to_s.intern end - def parse(string, territory_name = default_territory_name) - db.parse(string, territory_name) + def parse(string, territory_name = default_territory_name, skip_e161=false) + db.parse(string, territory_name, skip_e161) end def normalize(string, territory_name = default_territory_name) diff --git a/lib/global_phone/number.rb b/lib/global_phone/number.rb index 7f209a5..439a3f7 100644 --- a/lib/global_phone/number.rb +++ b/lib/global_phone/number.rb @@ -10,11 +10,11 @@ class Number NON_DIALABLE_CHARS = /[^,#+\*\d]/ SPLIT_FIRST_GROUP = /^(\d+)(.*)$/ - def self.normalize(string) - string.to_s. - gsub(VALID_ALPHA_CHARS) { |c| E161_MAPPING[c.downcase] }. - gsub(LEADING_PLUS_CHARS, "+"). - gsub(NON_DIALABLE_CHARS, "") + def self.normalize(string, skip_e161=false) + str = string.to_s + + str = str.gsub(VALID_ALPHA_CHARS) { |c| E161_MAPPING[c.downcase] } unless skip_e161 + str.gsub(LEADING_PLUS_CHARS, '+').gsub(NON_DIALABLE_CHARS, '') end attr_reader :territory, :national_string diff --git a/lib/global_phone/parsing.rb b/lib/global_phone/parsing.rb index 1aa88b0..3c42d58 100644 --- a/lib/global_phone/parsing.rb +++ b/lib/global_phone/parsing.rb @@ -3,8 +3,8 @@ module GlobalPhone module Parsing - def parse(string, territory_name) - string = Number.normalize(string) + def parse(string, territory_name, skip_e161=false) + string = Number.normalize(string, skip_e161) territory = self.territory(territory_name) raise ArgumentError, "unknown territory `#{territory_name}'" unless territory