module ActionView::Helpers::NumberHelper
Action View Number Helpers
Provides methods for converting numbers into formatted strings. Methods are provided for phone numbers, currency, percentage, precision, positional notation, file size, and pretty printing.
Most methods expect a number argument, and will return it unchanged if canβt be converted into a valid number.
Public Instance Methods
Source
# File lib/action_view/helpers/number_helper.rb, line 51 def number_to_currency(number, options = {}) delegate_number_helper_method(:number_to_currency, number, options) end
Delegates to ActiveSupport::NumberHelper#number_to_currency.
Additionally, supports a :raise option that will cause InvalidNumberError to be raised if number is not a valid number:
number_to_currency("12x34") # => "$12x34" number_to_currency("12x34", raise: true) # => InvalidNumberError
Source
# File lib/action_view/helpers/number_helper.rb, line 111 def number_to_human(number, options = {}) delegate_number_helper_method(:number_to_human, number, options) end
Delegates to ActiveSupport::NumberHelper#number_to_human.
Additionally, supports a :raise option that will cause InvalidNumberError to be raised if number is not a valid number:
number_to_human("12x34") # => "12x34" number_to_human("12x34", raise: true) # => InvalidNumberError
Source
# File lib/action_view/helpers/number_helper.rb, line 99 def number_to_human_size(number, options = {}) delegate_number_helper_method(:number_to_human_size, number, options) end
Delegates to ActiveSupport::NumberHelper#number_to_human_size.
Additionally, supports a :raise option that will cause InvalidNumberError to be raised if number is not a valid number:
number_to_human_size("12x34") # => "12x34" number_to_human_size("12x34", raise: true) # => InvalidNumberError
Source
# File lib/action_view/helpers/number_helper.rb, line 63 def number_to_percentage(number, options = {}) delegate_number_helper_method(:number_to_percentage, number, options) end
Delegates to ActiveSupport::NumberHelper#number_to_percentage.
Additionally, supports a :raise option that will cause InvalidNumberError to be raised if number is not a valid number:
number_to_percentage("99x") # => "99x%" number_to_percentage("99x", raise: true) # => InvalidNumberError
Source
# File lib/action_view/helpers/number_helper.rb, line 35 def number_to_phone(number, options = {}) return unless number options = options.symbolize_keys parse_float(number, true) if options.delete(:raise) ERB::Util.html_escape(ActiveSupport::NumberHelper.number_to_phone(number, options)) end
Delegates to ActiveSupport::NumberHelper#number_to_phone.
Additionally, supports a :raise option that will cause InvalidNumberError to be raised if number is not a valid number:
number_to_phone("12x34") # => "12x34" number_to_phone("12x34", raise: true) # => InvalidNumberError
Source
# File lib/action_view/helpers/number_helper.rb, line 75 def number_with_delimiter(number, options = {}) delegate_number_helper_method(:number_to_delimited, number, options) end
Delegates to ActiveSupport::NumberHelper#number_to_delimited.
Additionally, supports a :raise option that will cause InvalidNumberError to be raised if number is not a valid number:
number_with_delimiter("12x34") # => "12x34" number_with_delimiter("12x34", raise: true) # => InvalidNumberError
Source
# File lib/action_view/helpers/number_helper.rb, line 87 def number_with_precision(number, options = {}) delegate_number_helper_method(:number_to_rounded, number, options) end
Delegates to ActiveSupport::NumberHelper#number_to_rounded.
Additionally, supports a :raise option that will cause InvalidNumberError to be raised if number is not a valid number:
number_with_precision("12x34") # => "12x34" number_with_precision("12x34", raise: true) # => InvalidNumberError
Private Instance Methods
Source
# File lib/action_view/helpers/number_helper.rb, line 116 def delegate_number_helper_method(method, number, options) return unless number options = escape_unsafe_options(options.symbolize_keys) wrap_with_output_safety_handling(number, options.delete(:raise)) { ActiveSupport::NumberHelper.public_send(method, number, options) } end
Source
# File lib/action_view/helpers/number_helper.rb, line 135 def escape_units(units) units.transform_values do |v| ERB::Util.html_escape(v) end end
Source
# File lib/action_view/helpers/number_helper.rb, line 125 def escape_unsafe_options(options) options[:format] = ERB::Util.html_escape(options[:format]) if options[:format] options[:negative_format] = ERB::Util.html_escape(options[:negative_format]) if options[:negative_format] options[:separator] = ERB::Util.html_escape(options[:separator]) if options[:separator] options[:delimiter] = ERB::Util.html_escape(options[:delimiter]) if options[:delimiter] options[:unit] = ERB::Util.html_escape(options[:unit]) if options[:unit] && !options[:unit].html_safe? options[:units] = escape_units(options[:units]) if options[:units] && Hash === options[:units] options end
Source
# File lib/action_view/helpers/number_helper.rb, line 158 def parse_float(number, raise_error) result = Float(number, exception: false) raise InvalidNumberError, number if result.nil? && raise_error result end
Source
# File lib/action_view/helpers/number_helper.rb, line 154 def valid_float?(number) !parse_float(number, false).nil? end
Source
# File lib/action_view/helpers/number_helper.rb, line 141 def wrap_with_output_safety_handling(number, raise_on_invalid, &block) valid_float = valid_float?(number) raise InvalidNumberError, number if raise_on_invalid && !valid_float formatted_number = yield if valid_float || number.html_safe? formatted_number.html_safe else formatted_number end end