Skip to content

Commit 49a73b5

Browse files
committed
Document round_mode option in action view's number helper
Round mode option was added in rails@7905bdf but it was documented in active supports number helper only. Action views number helper is using active supports helper and accepts round_mode option so it should be documented there also. Examples are also unified and it should be more clear that they return string and not a number. [ci skip]
1 parent 5b62994 commit 49a73b5

File tree

1 file changed

+60
-42
lines changed

1 file changed

+60
-42
lines changed

actionview/lib/action_view/helpers/number_helper.rb

Lines changed: 60 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ def number_to_phone(number, options = {})
8585
# (defaults to current locale).
8686
# * <tt>:precision</tt> - Sets the level of precision (defaults
8787
# to 2).
88+
# * <tt>:round_mode</tt> - Determine how rounding is performed
89+
# (defaults to :default. See BigDecimal::mode)
8890
# * <tt>:unit</tt> - Sets the denomination of the currency
8991
# (defaults to "$").
9092
# * <tt>:separator</tt> - Sets the separator between the units
@@ -107,24 +109,26 @@ def number_to_phone(number, options = {})
107109
#
108110
# ==== Examples
109111
#
110-
# number_to_currency(1234567890.50) # => $1,234,567,890.50
111-
# number_to_currency(1234567890.506) # => $1,234,567,890.51
112-
# number_to_currency(1234567890.506, precision: 3) # => $1,234,567,890.506
113-
# number_to_currency(1234567890.506, locale: :fr) # => 1 234 567 890,51 €
114-
# number_to_currency("123a456") # => $123a456
112+
# number_to_currency(1234567890.50) # => "$1,234,567,890.50"
113+
# number_to_currency(1234567890.506) # => "$1,234,567,890.51"
114+
# number_to_currency(1234567890.506, precision: 3) # => "$1,234,567,890.506"
115+
# number_to_currency(1234567890.506, locale: :fr) # => "1 234 567 890,51 €"
116+
# number_to_currency("123a456") # => "$123a456"
115117
#
116118
# number_to_currency("123a456", raise: true) # => InvalidNumberError
117119
#
118120
# number_to_currency(-0.456789, precision: 0)
119121
# # => "$0"
120122
# number_to_currency(-1234567890.50, negative_format: "(%u%n)")
121-
# # => ($1,234,567,890.50)
123+
# # => "($1,234,567,890.50)"
122124
# number_to_currency(1234567890.50, unit: "R$", separator: ",", delimiter: "")
123-
# # => R$1234567890,50
125+
# # => "R$1234567890,50"
124126
# number_to_currency(1234567890.50, unit: "R$", separator: ",", delimiter: "", format: "%n %u")
125-
# # => 1234567890,50 R$
127+
# # => "1234567890,50 R$"
126128
# number_to_currency(1234567890.50, strip_insignificant_zeros: true)
127129
# # => "$1,234,567,890.5"
130+
# number_to_currency(1234567890.50, precision: 0, round_mode: :up)
131+
# # => "$1,234,567,891"
128132
def number_to_currency(number, options = {})
129133
delegate_number_helper_method(:number_to_currency, number, options)
130134
end
@@ -138,6 +142,8 @@ def number_to_currency(number, options = {})
138142
# (defaults to current locale).
139143
# * <tt>:precision</tt> - Sets the precision of the number
140144
# (defaults to 3).
145+
# * <tt>:round_mode</tt> - Determine how rounding is performed
146+
# (defaults to :default. See BigDecimal::mode)
141147
# * <tt>:significant</tt> - If +true+, precision will be the number
142148
# of significant_digits. If +false+, the number of fractional
143149
# digits (defaults to +false+).
@@ -155,16 +161,17 @@ def number_to_currency(number, options = {})
155161
#
156162
# ==== Examples
157163
#
158-
# number_to_percentage(100) # => 100.000%
159-
# number_to_percentage("98") # => 98.000%
160-
# number_to_percentage(100, precision: 0) # => 100%
161-
# number_to_percentage(1000, delimiter: '.', separator: ',') # => 1.000,000%
162-
# number_to_percentage(302.24398923423, precision: 5) # => 302.24399%
163-
# number_to_percentage(1000, locale: :fr) # => 1 000,000%
164-
# number_to_percentage("98a") # => 98a%
165-
# number_to_percentage(100, format: "%n %") # => 100.000 %
166-
#
167-
# number_to_percentage("98a", raise: true) # => InvalidNumberError
164+
# number_to_percentage(100) # => "100.000%"
165+
# number_to_percentage("98") # => "98.000%"
166+
# number_to_percentage(100, precision: 0) # => "100%"
167+
# number_to_percentage(1000, delimiter: '.', separator: ',') # => "1.000,000%"
168+
# number_to_percentage(302.24398923423, precision: 5) # => "302.24399%"
169+
# number_to_percentage(1000, locale: :fr) # => "1 000,000%"
170+
# number_to_percentage("98a") # => "98a%"
171+
# number_to_percentage(100, format: "%n %") # => "100.000 %"
172+
# number_to_percentage(302.24398923423, precision: 5, round_mode: :down) # => "302.24398%"
173+
#
174+
# number_to_percentage("98a", raise: true) # => InvalidNumberError
168175
def number_to_percentage(number, options = {})
169176
delegate_number_helper_method(:number_to_percentage, number, options)
170177
end
@@ -219,6 +226,8 @@ def number_with_delimiter(number, options = {})
219226
# (defaults to current locale).
220227
# * <tt>:precision</tt> - Sets the precision of the number
221228
# (defaults to 3).
229+
# * <tt>:round_mode</tt> - Determine how rounding is performed
230+
# (defaults to :default. See BigDecimal::mode)
222231
# * <tt>:significant</tt> - If +true+, precision will be the number
223232
# of significant_digits. If +false+, the number of fractional
224233
# digits (defaults to +false+).
@@ -234,21 +243,23 @@ def number_with_delimiter(number, options = {})
234243
#
235244
# ==== Examples
236245
#
237-
# number_with_precision(111.2345) # => 111.235
238-
# number_with_precision(111.2345, precision: 2) # => 111.23
239-
# number_with_precision(13, precision: 5) # => 13.00000
240-
# number_with_precision(389.32314, precision: 0) # => 389
241-
# number_with_precision(111.2345, significant: true) # => 111
242-
# number_with_precision(111.2345, precision: 1, significant: true) # => 100
243-
# number_with_precision(13, precision: 5, significant: true) # => 13.000
244-
# number_with_precision(111.234, locale: :fr) # => 111,234
246+
# number_with_precision(111.2345) # => "111.235"
247+
# number_with_precision(111.2345, precision: 2) # => "111.23"
248+
# number_with_precision(13, precision: 5) # => "13.00000"
249+
# number_with_precision(389.32314, precision: 0) # => "389"
250+
# number_with_precision(111.2345, significant: true) # => "111"
251+
# number_with_precision(111.2345, precision: 1, significant: true) # => "100"
252+
# number_with_precision(13, precision: 5, significant: true) # => "13.000"
253+
# number_with_precision(13, precision: nil) # => "13"
254+
# number_with_precision(389.32314, precision: 0, round_mode: :up) # => "390"
255+
# number_with_precision(111.234, locale: :fr) # => "111,234"
245256
#
246257
# number_with_precision(13, precision: 5, significant: true, strip_insignificant_zeros: true)
247-
# # => 13
258+
# # => "13"
248259
#
249260
# number_with_precision(389.32314, precision: 4, significant: true) # => 389.3
250261
# number_with_precision(1111.2345, precision: 2, separator: ',', delimiter: '.')
251-
# # => 1.111,23
262+
# # => "1.111,23"
252263
def number_with_precision(number, options = {})
253264
delegate_number_helper_method(:number_to_rounded, number, options)
254265
end
@@ -267,6 +278,8 @@ def number_with_precision(number, options = {})
267278
# (defaults to current locale).
268279
# * <tt>:precision</tt> - Sets the precision of the number
269280
# (defaults to 3).
281+
# * <tt>:round_mode</tt> - Determine how rounding is performed
282+
# (defaults to :default. See BigDecimal::mode)
270283
# * <tt>:significant</tt> - If +true+, precision will be the number
271284
# of significant_digits. If +false+, the number of fractional
272285
# digits (defaults to +true+)
@@ -282,17 +295,18 @@ def number_with_precision(number, options = {})
282295
#
283296
# ==== Examples
284297
#
285-
# number_to_human_size(123) # => 123 Bytes
286-
# number_to_human_size(1234) # => 1.21 KB
287-
# number_to_human_size(12345) # => 12.1 KB
288-
# number_to_human_size(1234567) # => 1.18 MB
289-
# number_to_human_size(1234567890) # => 1.15 GB
290-
# number_to_human_size(1234567890123) # => 1.12 TB
291-
# number_to_human_size(1234567890123456) # => 1.1 PB
292-
# number_to_human_size(1234567890123456789) # => 1.07 EB
293-
# number_to_human_size(1234567, precision: 2) # => 1.2 MB
294-
# number_to_human_size(483989, precision: 2) # => 470 KB
295-
# number_to_human_size(1234567, precision: 2, separator: ',') # => 1,2 MB
298+
# number_to_human_size(123) # => "123 Bytes"
299+
# number_to_human_size(1234) # => "1.21 KB"
300+
# number_to_human_size(12345) # => "12.1 KB"
301+
# number_to_human_size(1234567) # => "1.18 MB"
302+
# number_to_human_size(1234567890) # => "1.15 GB"
303+
# number_to_human_size(1234567890123) # => "1.12 TB"
304+
# number_to_human_size(1234567890123456) # => "1.1 PB"
305+
# number_to_human_size(1234567890123456789) # => "1.07 EB"
306+
# number_to_human_size(1234567, precision: 2) # => "1.2 MB"
307+
# number_to_human_size(483989, precision: 2) # => "470 KB"
308+
# number_to_human_size(483989, precision: 2, round_mode: :up) # => "480 KB"
309+
# number_to_human_size(1234567, precision: 2, separator: ',') # => "1,2 MB"
296310
# number_to_human_size(1234567890123, precision: 5) # => "1.1228 TB"
297311
# number_to_human_size(524288000, precision: 5) # => "500 MB"
298312
def number_to_human_size(number, options = {})
@@ -319,6 +333,8 @@ def number_to_human_size(number, options = {})
319333
# (defaults to current locale).
320334
# * <tt>:precision</tt> - Sets the precision of the number
321335
# (defaults to 3).
336+
# * <tt>:round_mode</tt> - Determine how rounding is performed
337+
# (defaults to :default. See BigDecimal::mode)
322338
# * <tt>:significant</tt> - If +true+, precision will be the number
323339
# of significant_digits. If +false+, the number of fractional
324340
# digits (defaults to +true+)
@@ -358,11 +374,13 @@ def number_to_human_size(number, options = {})
358374
# number_to_human(1234567890123456789) # => "1230 Quadrillion"
359375
# number_to_human(489939, precision: 2) # => "490 Thousand"
360376
# number_to_human(489939, precision: 4) # => "489.9 Thousand"
377+
# number_to_human(489939, precision: 2,
378+
# round_mode: :down) # => "480 Thousand"
361379
# number_to_human(1234567, precision: 4,
362-
# significant: false) # => "1.2346 Million"
380+
# significant: false) # => "1.2346 Million"
363381
# number_to_human(1234567, precision: 1,
364-
# separator: ',',
365-
# significant: false) # => "1,2 Million"
382+
# separator: ',',
383+
# significant: false) # => "1,2 Million"
366384
#
367385
# number_to_human(500000000, precision: 5) # => "500 Million"
368386
# number_to_human(12345012345, significant: false) # => "12.345 Billion"

0 commit comments

Comments
 (0)