lib/phony_rails.rb in phony_rails-0.3.0 vs lib/phony_rails.rb in phony_rails-0.3.1
- old
+ new
@@ -10,24 +10,26 @@
ISO3166::Country::Data[country_code].try(:[], 'country_code')
end
# This method requires a country_code attribute (eg. NL) and phone_number to be set.
# Options:
+ # :country_number => The country dial code (eg. 31 for NL).
+ # :default_country_number => Fallback country code.
# :country_code => The country code we should use.
# :default_country_code => Some fallback code (eg. 'NL') that can be used as default (comes from phony_normalize_numbers method).
# This idea came from:
# http://www.redguava.com.au/2011/06/rails-convert-phone-numbers-to-international-format-for-sms/
def self.normalize_number(number, options = {})
return if number.nil?
number = number.clone # Just to be sure, we don't want to change the original.
number.gsub!(/[^\d\+]/, '') # Strips weird stuff from the number
return if number.blank?
- if country_number = country_number_for(options[:country_code])
+ if country_number = options[:country_number] || country_number_for(options[:country_code])
# (Force) add country_number if missing
number = "#{country_number}#{number}" if not number =~ /^(00|\+)?#{country_number}/
- elsif default_country_number = country_number_for(options[:default_country_code])
+ elsif default_country_number = options[:default_country_number] || country_number_for(options[:default_country_code])
# Add default_country_number if missing
- number = "#{default_country_number}#{number}" if not number =~ /^(00|\+)/
+ number = "#{default_country_number}#{number}" if not number =~ /^(00|\+|#{default_country_number})/
end
number = Phony.normalize(number) if Phony.plausible?(number)
return number.to_s
rescue
number # If all goes wrong .. we still return the original input.