提交 8da026cb 编写于 作者: X Xavier Shay 提交者: wycats

Remove some of the blank rescues from number helper. This makes the code...

Remove some of the blank rescues from number helper. This makes the code easier to understand, as you're not left wondering what the rescue is actually doing. This does not change documented/tested behaviour.
Signed-off-by: Nwycats <wycats@gmail.com>
上级 7d4d97e2
...@@ -28,14 +28,15 @@ module NumberHelper ...@@ -28,14 +28,15 @@ module NumberHelper
# number_to_phone(1235551234, :country_code => 1, :extension => 1343, :delimiter => ".") # number_to_phone(1235551234, :country_code => 1, :extension => 1343, :delimiter => ".")
# => +1.123.555.1234 x 1343 # => +1.123.555.1234 x 1343
def number_to_phone(number, options = {}) def number_to_phone(number, options = {})
number = number.to_s.strip unless number.nil? return nil if number.nil?
number = number.to_s.strip
options = options.symbolize_keys options = options.symbolize_keys
area_code = options[:area_code] || nil area_code = options[:area_code] || nil
delimiter = options[:delimiter] || "-" delimiter = options[:delimiter] || "-"
extension = options[:extension].to_s.strip || nil extension = options[:extension].to_s.strip || nil
country_code = options[:country_code] || nil country_code = options[:country_code] || nil
begin
str = "" str = ""
str << "+#{country_code}#{delimiter}" unless country_code.blank? str << "+#{country_code}#{delimiter}" unless country_code.blank?
str << if area_code str << if area_code
...@@ -46,9 +47,6 @@ def number_to_phone(number, options = {}) ...@@ -46,9 +47,6 @@ def number_to_phone(number, options = {})
end end
str << " x #{extension}" unless extension.blank? str << " x #{extension}" unless extension.blank?
str str
rescue
number
end
end end
# Formats a +number+ into a currency string (e.g., $13.65). You can customize the format # Formats a +number+ into a currency string (e.g., $13.65). You can customize the format
...@@ -87,13 +85,14 @@ def number_to_currency(number, options = {}) ...@@ -87,13 +85,14 @@ def number_to_currency(number, options = {})
format = options[:format] || defaults[:format] format = options[:format] || defaults[:format]
separator = '' if precision == 0 separator = '' if precision == 0
begin value = number_with_precision(number,
format.gsub(/%n/, number_with_precision(number,
:precision => precision, :precision => precision,
:delimiter => delimiter, :delimiter => delimiter,
:separator => separator) :separator => separator)
).gsub(/%u/, unit).html_safe
rescue if value
format.gsub(/%n/, value).gsub(/%u/, unit).html_safe
else
number number
end end
end end
...@@ -122,14 +121,11 @@ def number_to_percentage(number, options = {}) ...@@ -122,14 +121,11 @@ def number_to_percentage(number, options = {})
separator = options[:separator] || defaults[:separator] separator = options[:separator] || defaults[:separator]
delimiter = options[:delimiter] || defaults[:delimiter] delimiter = options[:delimiter] || defaults[:delimiter]
begin value = number_with_precision(number,
number_with_precision(number,
:precision => precision, :precision => precision,
:separator => separator, :separator => separator,
:delimiter => delimiter) + "%" :delimiter => delimiter)
rescue value ? value + "%" : number
number
end
end end
# Formats a +number+ with grouped thousands using +delimiter+ (e.g., 12,324). You can # Formats a +number+ with grouped thousands using +delimiter+ (e.g., 12,324). You can
...@@ -168,11 +164,11 @@ def number_with_delimiter(number, *args) ...@@ -168,11 +164,11 @@ def number_with_delimiter(number, *args)
delimiter ||= (options[:delimiter] || defaults[:delimiter]) delimiter ||= (options[:delimiter] || defaults[:delimiter])
separator ||= (options[:separator] || defaults[:separator]) separator ||= (options[:separator] || defaults[:separator])
begin
parts = number.to_s.split('.') parts = number.to_s.split('.')
if parts[0]
parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}") parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
parts.join(separator) parts.join(separator)
rescue else
number number
end end
end end
...@@ -216,11 +212,17 @@ def number_with_precision(number, *args) ...@@ -216,11 +212,17 @@ def number_with_precision(number, *args)
delimiter ||= (options[:delimiter] || defaults[:delimiter]) delimiter ||= (options[:delimiter] || defaults[:delimiter])
begin begin
value = Float(number)
rescue ArgumentError, TypeError
value = nil
end
if value
rounded_number = BigDecimal.new((Float(number) * (10 ** precision)).to_s).round.to_f / 10 ** precision rounded_number = BigDecimal.new((Float(number) * (10 ** precision)).to_s).round.to_f / 10 ** precision
number_with_delimiter("%01.#{precision}f" % rounded_number, number_with_delimiter("%01.#{precision}f" % rounded_number,
:separator => separator, :separator => separator,
:delimiter => delimiter) :delimiter => delimiter)
rescue else
number number
end end
end end
...@@ -293,7 +295,6 @@ def number_to_human_size(number, *args) ...@@ -293,7 +295,6 @@ def number_to_human_size(number, *args)
unit_key = STORAGE_UNITS[exponent] unit_key = STORAGE_UNITS[exponent]
unit = I18n.translate(:"number.human.storage_units.units.#{unit_key}", :locale => options[:locale], :count => number, :raise => true) unit = I18n.translate(:"number.human.storage_units.units.#{unit_key}", :locale => options[:locale], :count => number, :raise => true)
begin
escaped_separator = Regexp.escape(separator) escaped_separator = Regexp.escape(separator)
formatted_number = number_with_precision(number, formatted_number = number_with_precision(number,
:precision => precision, :precision => precision,
...@@ -301,9 +302,6 @@ def number_to_human_size(number, *args) ...@@ -301,9 +302,6 @@ def number_to_human_size(number, *args)
:delimiter => delimiter :delimiter => delimiter
).sub(/(#{escaped_separator})(\d*[1-9])?0+\z/, '\1\2').sub(/#{escaped_separator}\z/, '') ).sub(/(#{escaped_separator})(\d*[1-9])?0+\z/, '\1\2').sub(/#{escaped_separator}\z/, '')
storage_units_format.gsub(/%n/, formatted_number).gsub(/%u/, unit) storage_units_format.gsub(/%n/, formatted_number).gsub(/%u/, unit)
rescue
number
end
end end
end end
end end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册