aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2012-01-20 16:26:45 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2012-01-20 16:26:45 -0300
commitf170453493dd7c2d62f7b866867f7a3c8ec623d7 (patch)
tree89236544a1c89c02fbc738bbe79072d2f425dc93 /actionpack/lib/action_view
parent30b0e5848c5a91c0bfd1ef33ec4b9bc36bcead0b (diff)
downloadrails-f170453493dd7c2d62f7b866867f7a3c8ec623d7.tar.gz
rails-f170453493dd7c2d62f7b866867f7a3c8ec623d7.tar.bz2
rails-f170453493dd7c2d62f7b866867f7a3c8ec623d7.zip
Remove code duplication
Diffstat (limited to 'actionpack/lib/action_view')
-rw-r--r--actionpack/lib/action_view/helpers/number_helper.rb53
1 files changed, 19 insertions, 34 deletions
diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb
index c560750927..d4f1c22c14 100644
--- a/actionpack/lib/action_view/helpers/number_helper.rb
+++ b/actionpack/lib/action_view/helpers/number_helper.rb
@@ -237,14 +237,8 @@ module ActionView
def number_with_delimiter(number, options = {})
options.symbolize_keys!
- begin
- Float(number)
- rescue ArgumentError, TypeError
- if options[:raise]
- raise InvalidNumberError, number
- else
- return number
- end
+ parse_float_number(number, options[:raise]) do
+ return number
end
defaults = I18n.translate(:'number.format', :locale => options[:locale], :default => {})
@@ -253,7 +247,6 @@ module ActionView
parts = number.to_s.to_str.split('.')
parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{options[:delimiter]}")
parts.join(options[:separator]).html_safe
-
end
# Formats a +number+ with the specified level of <tt>:precision</tt> (e.g., 112.32 has a precision
@@ -290,14 +283,8 @@ module ActionView
def number_with_precision(number, options = {})
options.symbolize_keys!
- number = begin
- Float(number)
- rescue ArgumentError, TypeError
- if options[:raise]
- raise InvalidNumberError, number
- else
- return number
- end
+ number = parse_float_number(number, options[:raise]) do
+ return number
end
defaults = I18n.translate(:'number.format', :locale => options[:locale], :default => {})
@@ -329,7 +316,6 @@ module ActionView
else
formatted_number
end
-
end
STORAGE_UNITS = [:byte, :kb, :mb, :gb, :tb].freeze
@@ -367,14 +353,8 @@ module ActionView
def number_to_human_size(number, options = {})
options.symbolize_keys!
- number = begin
- Float(number)
- rescue ArgumentError, TypeError
- if options[:raise]
- raise InvalidNumberError, number
- else
- return number
- end
+ number = parse_float_number(number, options[:raise]) do
+ return number
end
defaults = I18n.translate(:'number.format', :locale => options[:locale], :default => {})
@@ -486,14 +466,8 @@ module ActionView
def number_to_human(number, options = {})
options.symbolize_keys!
- number = begin
- Float(number)
- rescue ArgumentError, TypeError
- if options[:raise]
- raise InvalidNumberError, number
- else
- return number
- end
+ number = parse_float_number(number, options[:raise]) do
+ return number
end
defaults = I18n.translate(:'number.format', :locale => options[:locale], :default => {})
@@ -536,6 +510,17 @@ module ActionView
decimal_format.gsub(/%n/, formatted_number).gsub(/%u/, unit).strip.html_safe
end
+ private
+
+ def parse_float_number(number, raise_error)
+ Float(number)
+ rescue ArgumentError, TypeError
+ if raise_error
+ raise InvalidNumberError, number
+ else
+ yield
+ end
+ end
end
end
end