Module: ActionView::Helpers::NumberHelper
- Defined in:
- lib/action_view/helpers/number_helper.rb
Overview
Provides methods for converting a number into a formatted string that currently represents one of the following forms: phone number, percentage, money, or precision level.
Instance Method Summary collapse
-
#number_to_currency(number, options = {}) ⇒ Object
Formats a
number
into a currency string. -
#number_to_human_size(size) ⇒ Object
(also: #human_size)
Returns a formatted-for-humans file size.
-
#number_to_percentage(number, options = {}) ⇒ Object
Formats a
number
as into a percentage string. -
#number_to_phone(number, options = {}) ⇒ Object
Formats a
number
into a US phone number string. -
#number_with_delimiter(number, delimiter = ",") ⇒ Object
Formats a
number
with adelimiter
. -
#number_with_precision(number, precision = 3) ⇒ Object
Formats a
number
with a level ofprecision
.
Instance Method Details
#number_to_currency(number, options = {}) ⇒ Object
Formats a number
into a currency string. The options
hash can be used to customize the format of the output. The number
can contain a level of precision using the precision
key; default is 2 The currency type can be set using the unit
key; default is “$” The unit separator can be set using the separator
key; default is “.” The delimiter can be set using the delimiter
key; default is “,” Examples:
number_to_currency(1234567890.50) => $1,234,567,890.50
number_to_currency(1234567890.506) => $1,234,567,890.51
number_to_currency(1234567890.50, {:unit => "£", :separator => ",", :delimiter => ""}) => £1234567890,50
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/action_view/helpers/number_helper.rb', line 37 def number_to_currency(number, = {}) = .stringify_keys precision, unit, separator, delimiter = .delete("precision") { 2 }, .delete("unit") { "$" }, .delete("separator") { "." }, .delete("delimiter") { "," } separator = "" unless precision > 0 begin parts = number_with_precision(number, precision).split('.') unit + number_with_delimiter(parts[0], delimiter) + separator + parts[1].to_s rescue number end end |
#number_to_human_size(size) ⇒ Object Also known as: human_size
Returns a formatted-for-humans file size.
Examples:
human_size(123) => 123 Bytes
human_size(1234) => 1.2 KB
human_size(12345) => 12.1 KB
human_size(1234567) => 1.2 MB
human_size(1234567890) => 1.1 GB
87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/action_view/helpers/number_helper.rb', line 87 def number_to_human_size(size) begin return "%d Bytes" % size if size < 1.kilobytes return "%.1f KB" % (size/1.0.kilobytes) if size < 1.megabytes return "%.1f MB" % (size/1.0.megabytes) if size < 1.gigabytes return "%.1f GB" % (size/1.0.gigabytes) if size < 1.terabytes return "%.1f TB" % (size/1.0.terabytes) rescue # just return nothing end end |
#number_to_percentage(number, options = {}) ⇒ Object
Formats a number
as into a percentage string. The options
hash can be used to customize the format of the output. The number
can contain a level of precision using the precision
key; default is 3 The unit separator can be set using the separator
key; default is “.” Examples:
number_to_percentage(100) => 100.000%
number_to_percentage(100, {:precision => 0}) => 100%
number_to_percentage(302.0574, {:precision => 2}) => 302.06%
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/action_view/helpers/number_helper.rb', line 56 def number_to_percentage(number, = {}) = .stringify_keys precision, separator = .delete("precision") { 3 }, .delete("separator") { "." } begin number = number_with_precision(number, precision) parts = number.split('.') if parts.at(1).nil? parts[0] + "%" else parts[0] + separator + parts[1].to_s + "%" end rescue number end end |
#number_to_phone(number, options = {}) ⇒ Object
Formats a number
into a US phone number string. The options
can be a hash used to customize the format of the output. The area code can be surrounded by parentheses by setting :area_code
to true; default is false The delimiter can be set using :delimiter
; default is “-” Examples:
number_to_phone(1235551234) => 123-555-1234
number_to_phone(1235551234, {:area_code => true}) => (123) 555-1234
number_to_phone(1235551234, {:delimiter => " "}) => 123 555 1234
number_to_phone(1235551234, {:area_code => true, :extension => 555}) => (123) 555-1234 x 555
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/action_view/helpers/number_helper.rb', line 15 def number_to_phone(number, = {}) = .stringify_keys area_code = .delete("area_code") { false } delimiter = .delete("delimiter") { "-" } extension = .delete("extension") { "" } begin str = area_code == true ? number.to_s.gsub(/([0-9]{3})([0-9]{3})([0-9]{4})/,"(\\1) \\2#{delimiter}\\3") : number.to_s.gsub(/([0-9]{3})([0-9]{3})([0-9]{4})/,"\\1#{delimiter}\\2#{delimiter}\\3") extension.to_s.strip.empty? ? str : "#{str} x #{extension.to_s.strip}" rescue number end end |
#number_with_delimiter(number, delimiter = ",") ⇒ Object
Formats a number
with a delimiter
. Example:
number_with_delimiter(12345678) => 12,345,678
75 76 77 |
# File 'lib/action_view/helpers/number_helper.rb', line 75 def number_with_delimiter(number, delimiter=",") number.to_s.gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}") end |
#number_with_precision(number, precision = 3) ⇒ Object
Formats a number
with a level of precision
. Example:
number_with_precision(111.2345) => 111.235
104 105 106 |
# File 'lib/action_view/helpers/number_helper.rb', line 104 def number_with_precision(number, precision=3) sprintf("%01.#{precision}f", number) end |