|
5 | 5 | require 'active_support/core_ext/numeric'
|
6 | 6 | require 'active_support/core_ext/string/output_safety'
|
7 | 7 | require 'active_support/number_helper'
|
8 |
| -require 'erb' |
9 | 8 |
|
10 | 9 | module ActionView
|
11 | 10 | # = Action View Number Helpers
|
@@ -112,7 +111,7 @@ def number_to_phone(number, options = {})
|
112 | 111 | def number_to_currency(number, options = {})
|
113 | 112 | return unless number
|
114 | 113 | options = escape_unsafe_delimiters_and_separators(options.symbolize_keys)
|
115 |
| - |
| 114 | + |
116 | 115 | wrap_with_output_safety_handling(number, options[:raise]){ ActiveSupport::NumberHelper.number_to_currency(number, options) }
|
117 | 116 | end
|
118 | 117 |
|
@@ -155,7 +154,7 @@ def number_to_currency(number, options = {})
|
155 | 154 | def number_to_percentage(number, options = {})
|
156 | 155 | return unless number
|
157 | 156 | options = escape_unsafe_delimiters_and_separators(options.symbolize_keys)
|
158 |
| - |
| 157 | + |
159 | 158 | wrap_with_output_safety_handling(number, options[:raise]){ ActiveSupport::NumberHelper.number_to_percentage(number, options) }
|
160 | 159 | end
|
161 | 160 |
|
@@ -400,25 +399,26 @@ def number_to_human(number, options = {})
|
400 | 399 | end
|
401 | 400 |
|
402 | 401 | private
|
403 |
| - |
| 402 | + |
404 | 403 | def escape_unsafe_delimiters_and_separators(options)
|
405 | 404 | options[:separator] = ERB::Util.html_escape(options[:separator]) if options[:separator] && !options[:separator].html_safe?
|
406 | 405 | options[:delimiter] = ERB::Util.html_escape(options[:delimiter]) if options[:delimiter] && !options[:delimiter].html_safe?
|
407 | 406 | options
|
408 | 407 | end
|
409 |
| - |
| 408 | + |
410 | 409 | def wrap_with_output_safety_handling(number, raise_on_invalid, &block)
|
411 |
| - raise InvalidNumberError, number if raise_on_invalid && !valid_float?(number) |
412 |
| - |
| 410 | + valid_float = valid_float?(number) |
| 411 | + raise InvalidNumberError, number if raise_on_invalid && !valid_float |
| 412 | + |
413 | 413 | formatted_number = yield
|
414 |
| - |
415 |
| - if valid_float?(number) || number.html_safe? |
| 414 | + |
| 415 | + if valid_float || number.html_safe? |
416 | 416 | formatted_number.html_safe
|
417 | 417 | else
|
418 | 418 | formatted_number
|
419 |
| - end |
| 419 | + end |
420 | 420 | end
|
421 |
| - |
| 421 | + |
422 | 422 | def valid_float?(number)
|
423 | 423 | !parse_float(number, false).nil?
|
424 | 424 | end
|
|
0 commit comments