padrino-helpers 0.10.2 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. data/.document +3 -3
  2. data/.yardopts +1 -0
  3. data/{LICENSE → LICENSE.txt} +0 -0
  4. data/README.rdoc +3 -3
  5. data/lib/padrino-helpers.rb +21 -14
  6. data/lib/padrino-helpers/asset_tag_helpers.rb +163 -34
  7. data/lib/padrino-helpers/form_builder/abstract_form_builder.rb +1 -1
  8. data/lib/padrino-helpers/form_helpers.rb +287 -134
  9. data/lib/padrino-helpers/format_helpers.rb +135 -17
  10. data/lib/padrino-helpers/locale/lv.yml +103 -0
  11. data/lib/padrino-helpers/locale/zh_cn.yml +1 -1
  12. data/lib/padrino-helpers/number_helpers.rb +73 -59
  13. data/lib/padrino-helpers/output_helpers.rb +59 -15
  14. data/lib/padrino-helpers/output_helpers/abstract_handler.rb +15 -20
  15. data/lib/padrino-helpers/output_helpers/erb_handler.rb +12 -15
  16. data/lib/padrino-helpers/output_helpers/haml_handler.rb +10 -14
  17. data/lib/padrino-helpers/output_helpers/slim_handler.rb +10 -14
  18. data/lib/padrino-helpers/render_helpers.rb +23 -7
  19. data/lib/padrino-helpers/tag_helpers.rb +41 -16
  20. data/lib/padrino-helpers/translation_helpers.rb +14 -0
  21. data/test/fixtures/markup_app/views/content_for.erb +3 -0
  22. data/test/fixtures/markup_app/views/content_for.haml +3 -0
  23. data/test/fixtures/markup_app/views/content_for.slim +3 -0
  24. data/test/helper.rb +3 -15
  25. data/test/test_asset_tag_helpers.rb +1 -1
  26. data/test/test_form_builder.rb +3 -5
  27. data/test/test_form_helpers.rb +1 -1
  28. data/test/test_format_helpers.rb +1 -1
  29. data/test/test_locale.rb +1 -1
  30. data/test/test_number_helpers.rb +1 -1
  31. data/test/test_output_helpers.rb +22 -2
  32. data/test/test_render_helpers.rb +1 -1
  33. data/test/test_tag_helpers.rb +1 -1
  34. metadata +10 -8
@@ -4,6 +4,16 @@ module Padrino
4
4
  ##
5
5
  # Returns escaped text to protect against malicious content
6
6
  #
7
+ # @param [String] text
8
+ # Unsanitized HTML string that needs to be escaped.
9
+ #
10
+ # @return [String] HTML with escaped characters.
11
+ #
12
+ # @example
13
+ # escape_html("<b>Hey<b>") => "&lt;b&gt;Hey&lt;b;gt;"
14
+ # h("Me & Bob") => "Me &amp; Bob"
15
+ #
16
+ # @api public
7
17
  def escape_html(text)
8
18
  Rack::Utils.escape_html(text)
9
19
  end
@@ -14,6 +24,18 @@ module Padrino
14
24
  # Returns escaped text to protect against malicious content
15
25
  # Returns blank if the text is empty
16
26
  #
27
+ # @param [String] text
28
+ # Unsanitized HTML string that needs to be escaped.
29
+ # @param [String] blank_text
30
+ # Text to return if escaped text is blank.
31
+ #
32
+ # @return [String] HTML with escaped characters or the value specified if blank.
33
+ #
34
+ # @example
35
+ # h!("Me & Bob") => "Me &amp; Bob"
36
+ # h!("", "Whoops") => "Whoops"
37
+ #
38
+ # @api public
17
39
  def h!(text, blank_text = '&nbsp;')
18
40
  return blank_text if text.nil? || text.empty?
19
41
  h text
@@ -22,6 +44,15 @@ module Padrino
22
44
  ##
23
45
  # Strips all HTML tags from the html
24
46
  #
47
+ # @param [String] html
48
+ # The HTML for which to strip tags.
49
+ #
50
+ # @return [String] HTML with tags stripped.
51
+ #
52
+ # @example
53
+ # strip_tags("<b>Hey</b>") => "Hey"
54
+ #
55
+ # @api public
25
56
  def strip_tags(html)
26
57
  html.gsub(/<\/?[^>]*>/, "") if html
27
58
  end
@@ -31,11 +62,20 @@ module Padrino
31
62
  # as a paragraph and wrapped in <p> or your own tags. One newline (\n) is considered as a linebreak and a <br /> tag is appended.
32
63
  # This method does not remove the newlines from the text.
33
64
  #
34
- # ==== Examples
65
+ # @param [String] text
66
+ # The simple text to be formatted.
67
+ # @param [Hash] options
68
+ # Formatting options for the text. Can accept html options for the wrapper tag.
69
+ # @option options [Symbol] :tag (p)
70
+ # The html tag to use for formatting newlines.
71
+ #
72
+ # @return [String] The text formatted as simple HTML.
35
73
  #
74
+ # @example
36
75
  # simple_format("hello\nworld") # => "<p>hello<br/>world</p>"
37
76
  # simple_format("hello\nworld", :tag => :div, :class => :foo) # => "<div class="foo">hello<br/>world</div>"
38
77
  #
78
+ # @api public
39
79
  def simple_format(text, options={})
40
80
  t = options.delete(:tag) || :p
41
81
  start_tag = tag(t, options.merge(:open => true))
@@ -51,10 +91,19 @@ module Padrino
51
91
  # Attempts to pluralize the singular word unless count is 1. If plural is supplied, it will use that when count is > 1,
52
92
  # otherwise it will use the Inflector to determine the plural form
53
93
  #
54
- # ==== Examples
94
+ # @param [Fixnum] count
95
+ # The count which determines pluralization.
96
+ # @param [String] singular
97
+ # The word to be pluralized if appropriate based on +count+.
98
+ # @param [String] plural
99
+ # Explicit pluralized word to be used; if not specified uses inflector.
55
100
  #
101
+ # @return [String] The properly pluralized word.
102
+ #
103
+ # @example
56
104
  # pluralize(2, 'person') => '2 people'
57
105
  #
106
+ # @api public
58
107
  def pluralize(count, singular, plural = nil)
59
108
  "#{count || 0} " + ((count == 1 || count == '1') ? singular : (plural || singular.pluralize))
60
109
  end
@@ -63,10 +112,21 @@ module Padrino
63
112
  # Truncates a given text after a given :length if text is longer than :length (defaults to 30).
64
113
  # The last characters will be replaced with the :omission (defaults to "…") for a total length not exceeding :length.
65
114
  #
66
- # ==== Examples
115
+ # @param [String] text
116
+ # The text to be truncated.
117
+ # @param [Hash] options
118
+ # Formatting options for the truncation.
119
+ # @option options [Fixnum] :length (30)
120
+ # The number of characters before truncation occurs.
121
+ # @option options [String] :omission ("...")
122
+ # The characters that are placed after the truncated text.
123
+ #
124
+ # @return [String] The text truncated after the given number of characters.
67
125
  #
126
+ # @example
68
127
  # truncate("Once upon a time in a world far far away", :length => 8) => "Once upon..."
69
128
  #
129
+ # @api public
70
130
  def truncate(text, options={})
71
131
  options.reverse_merge!(:length => 30, :omission => "...")
72
132
  if text
@@ -75,15 +135,26 @@ module Padrino
75
135
  (chars.length > options[:length] ? chars[0...len] + options[:omission] : text).to_s
76
136
  end
77
137
  end
78
-
138
+
79
139
  ##
80
140
  # Truncates words of a given text after a given :length if number of words in text is more than :length (defaults to 30).
81
141
  # The last words will be replaced with the :omission (defaults to "…") for a total number of words not exceeding :length.
82
142
  #
83
- # ==== Examples
143
+ # @param [String] text
144
+ # The text to be truncated.
145
+ # @param [Hash] options
146
+ # Formatting options for the truncation.
147
+ # @option options [Fixnum] :length (30)
148
+ # The number of words before truncation occurs.
149
+ # @option options [String] :omission ("...")
150
+ # The characters that are placed after the truncated text.
84
151
  #
152
+ # @return [String] The text truncated after the given number of words.
153
+ #
154
+ # @example
85
155
  # truncate_words("Once upon a time in a world far far away", :length => 8) => "Once upon a time in a world far..."
86
156
  #
157
+ # @api public
87
158
  def truncate_words(text, options={})
88
159
  options.reverse_merge!(:length => 30, :omission => "...")
89
160
  if text
@@ -96,10 +167,20 @@ module Padrino
96
167
  # Wraps the text into lines no longer than line_width width.
97
168
  # This method breaks on the first whitespace character that does not exceed line_width (which is 80 by default).
98
169
  #
99
- # ==== Examples
170
+ # @overload word_wrap(text, options={})
171
+ # @param [String] text
172
+ # The text to be wrapped.
173
+ # @param [Hash] options
174
+ # Formatting options for the wrapping.
175
+ # @option options [Fixnum] :line_width (80)
176
+ # The line width before a wrap should occur.
177
+ #
178
+ # @return [String] The text with line wraps for lines longer then +line_width+
100
179
  #
180
+ # @example
101
181
  # word_wrap('Once upon a time', :line_width => 8) => "Once upon\na time"
102
182
  #
183
+ # @api public
103
184
  def word_wrap(text, *args)
104
185
  options = args.extract_options!
105
186
  unless args.blank?
@@ -116,16 +197,28 @@ module Padrino
116
197
  # Highlights one or more words everywhere in text by inserting it into a :highlighter string.
117
198
  #
118
199
  # The highlighter can be customized by passing :+highlighter+ as a single-quoted string
119
- # with \1 where the phrase is to be inserted (defaults to ’<strong class="highlight">\1</strong>’)
200
+ # with \1 where the phrase is to be inserted.
120
201
  #
121
- # ==== Examples
202
+ # @overload highlight(text, words, options={})
203
+ # @param [String] text
204
+ # The text that will be searched.
205
+ # @param [String] words
206
+ # The words to be highlighted in the +text+.
207
+ # @param [Hash] options
208
+ # Formatting options for the highlight.
209
+ # @option options [String] :highlighter (’<strong class="highlight">\1</strong>’)
210
+ # The html pattern for wrapping the highlighted words.
122
211
  #
123
- # # => Lorem ipsum <strong class="highlight">dolor</strong> sit amet
212
+ # @return [String] The text with the words specified wrapped with highlighted spans.
213
+ #
214
+ # @example
124
215
  # highlight('Lorem ipsum dolor sit amet', 'dolor')
216
+ # # => Lorem ipsum <strong class="highlight">dolor</strong> sit amet
125
217
  #
126
- # # => Lorem ipsum <span class="custom">dolor</span> sit amet
127
218
  # highlight('Lorem ipsum dolor sit amet', 'dolor', :highlighter => '<span class="custom">\1</span>')
219
+ # # => Lorem ipsum <strong class="custom">dolor</strong> sit amet
128
220
  #
221
+ # @api public
129
222
  def highlight(text, words, *args)
130
223
  options = args.extract_options!
131
224
  options.reverse_merge!(:highlighter => '<strong class="highlight">\1</strong>')
@@ -140,7 +233,7 @@ module Padrino
140
233
 
141
234
  ##
142
235
  # Reports the approximate distance in time between two Time or Date objects or integers as seconds.
143
- # Set <tt>include_seconds</tt> to true if you want more detailed approximations when distance < 1 min, 29 secs
236
+ # Set +include_seconds+ to true if you want more detailed approximations when distance < 1 min, 29 secs
144
237
  # Distances are reported based on the following table:
145
238
  #
146
239
  # 0 <-> 29 secs # => less than a minute
@@ -157,7 +250,7 @@ module Padrino
157
250
  # 1 yr, 9 months <-> 2 yr minus 1 sec # => almost 2 years
158
251
  # 2 yrs <-> max time or date # => (same rules as 1 yr)
159
252
  #
160
- # With <tt>include_seconds</tt> = true and the difference < 1 minute 29 seconds:
253
+ # With +include_seconds+ = true and the difference < 1 minute 29 seconds:
161
254
  # 0-4 secs # => less than 5 seconds
162
255
  # 5-9 secs # => less than 10 seconds
163
256
  # 10-19 secs # => less than 20 seconds
@@ -165,8 +258,20 @@ module Padrino
165
258
  # 40-59 secs # => less than a minute
166
259
  # 60-89 secs # => 1 minute
167
260
  #
168
- # ==== Examples
261
+ # @param [Time] from_time
262
+ # The time to be compared against +to_time+ in order to approximate the distance.
263
+ # @param [Time] to_time
264
+ # The time to be compared against +from_time+ in order to approximate the distance.
265
+ # @param [Boolean] include_seconds
266
+ # Set true for more detailed approximations.
267
+ # @param [Hash] options
268
+ # Flags for the approximation.
269
+ # @option options [String] :locale
270
+ # The translation locale to be used for approximating the time.
271
+ #
272
+ # @return [String] The time formatted as a relative string.
169
273
  #
274
+ # @example
170
275
  # from_time = Time.now
171
276
  # distance_of_time_in_words(from_time, from_time + 50.minutes) # => about 1 hour
172
277
  # distance_of_time_in_words(from_time, 50.minutes.from_now) # => about 1 hour
@@ -180,12 +285,12 @@ module Padrino
180
285
  # distance_of_time_in_words(from_time, from_time + 1.year + 3.days) # => about 1 year
181
286
  # distance_of_time_in_words(from_time, from_time + 3.years + 6.months) # => over 3 years
182
287
  # distance_of_time_in_words(from_time, from_time + 4.years + 9.days + 30.minutes + 5.seconds) # => about 4 years
183
- #
184
288
  # to_time = Time.now + 6.years + 19.days
185
289
  # distance_of_time_in_words(from_time, to_time, true) # => about 6 years
186
290
  # distance_of_time_in_words(to_time, from_time, true) # => about 6 years
187
291
  # distance_of_time_in_words(Time.now, Time.now) # => less than a minute
188
292
  #
293
+ # @api public
189
294
  def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false, options = {})
190
295
  from_time = from_time.to_time if from_time.respond_to?(:to_time)
191
296
  to_time = to_time.to_time if to_time.respond_to?(:to_time)
@@ -233,14 +338,19 @@ module Padrino
233
338
  ##
234
339
  # Like distance_of_time_in_words, but where <tt>to_time</tt> is fixed to <tt>Time.now</tt>.
235
340
  #
236
- # ==== Examples
341
+ # @param [Time] from_time
342
+ # The time to be compared against now in order to approximate the distance.
343
+ # @param [Boolean] include_seconds
344
+ # Set true for more detailed approximations.
345
+ #
346
+ # @return [String] The time formatted as a relative string.
237
347
  #
348
+ # @example
238
349
  # time_ago_in_words(3.minutes.from_now) # => 3 minutes
239
350
  # time_ago_in_words(Time.now - 15.hours) # => 15 hours
240
351
  # time_ago_in_words(Time.now) # => less than a minute
241
352
  #
242
- # from_time = Time.now - 3.days - 14.minutes - 25.seconds # => 3 days
243
- #
353
+ # @api public
244
354
  def time_ago_in_words(from_time, include_seconds = false)
245
355
  distance_of_time_in_words(from_time, Time.now, include_seconds)
246
356
  end
@@ -248,13 +358,21 @@ module Padrino
248
358
  ##
249
359
  # Used in xxxx.js.erb files to escape html so that it can be passed to javascript from Padrino
250
360
  #
361
+ # @param [String] html
362
+ # The html content to be escaped into javascript compatible format.
363
+ #
364
+ # @return [String] The html escaped for javascript passing.
365
+ #
366
+ # @example
251
367
  # js_escape_html("<h1>Hey</h1>")
252
368
  #
369
+ # @api public
253
370
  def js_escape_html(html_content)
254
371
  return '' unless html_content
255
372
  javascript_mapping = { '\\' => '\\\\', '</' => '<\/', "\r\n" => '\n', "\n" => '\n', "\r" => '\n', '"' => '\\"', "'" => "\\'" }
256
373
  html_content.gsub(/(\\|<\/|\r\n|[\n\r"'])/) { javascript_mapping[$1] }
257
374
  end
375
+
258
376
  end # FormatHelpers
259
377
  end # Helpers
260
378
  end # Padrino
@@ -0,0 +1,103 @@
1
+ lv:
2
+ number:
3
+ # Used in number_with_delimiter()
4
+ # These are also the defaults for 'currency', 'percentage', 'precision', and 'human'
5
+ format:
6
+ # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5)
7
+ separator: ","
8
+ # Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three)
9
+ delimiter: "."
10
+ # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00)
11
+ precision: 2
12
+
13
+ # Used in number_to_currency()
14
+ currency:
15
+ format:
16
+ # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00)
17
+ format: "%u %n"
18
+ unit: "LVL"
19
+ # These three are to override number.format and are optional
20
+ separator: ","
21
+ delimiter: "."
22
+ precision: 2
23
+
24
+ # Used in number_to_percentage()
25
+ percentage:
26
+ format:
27
+ # These three are to override number.format and are optional
28
+ # separator:
29
+ delimiter: ""
30
+ # precision:
31
+
32
+ # Used in number_to_precision()
33
+ precision:
34
+ format:
35
+ # These three are to override number.format and are optional
36
+ # separator:
37
+ delimiter: ""
38
+ # precision:
39
+
40
+ # Used in number_to_human_size()
41
+ human:
42
+ format:
43
+ # These three are to override number.format and are optional
44
+ # separator:
45
+ delimiter: ""
46
+ precision: 1
47
+ storage_units:
48
+ # Storage units output formatting.
49
+ # %u is the storage unit, %n is the number (default: 2 MB)
50
+ format: "%n %u"
51
+ units:
52
+ byte:
53
+ one: "Baits"
54
+ other: "Baiti"
55
+ kb: "KB"
56
+ mb: "MB"
57
+ gb: "GB"
58
+ tb: "TB"
59
+
60
+ # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
61
+ datetime:
62
+ distance_in_words:
63
+ half_a_minute: "pusminūte"
64
+ less_than_x_seconds:
65
+ one: "mazāk par vienu sekundi"
66
+ other: "mazāk par %{count} sekundēm"
67
+ x_seconds:
68
+ one: "1 sekunde"
69
+ other: "%{count} sekundes"
70
+ less_than_x_minutes:
71
+ one: "mazāk par vienu minūti"
72
+ other: "mazāk par %{count} minūtēm"
73
+ x_minutes:
74
+ one: "1 minūte"
75
+ other: "%{count} minūtes"
76
+ about_x_hours:
77
+ one: "apmēram 1 stunda"
78
+ other: "apmēram %{count} stundas"
79
+ x_days:
80
+ one: "1 diena"
81
+ other: "%{count} dienas"
82
+ about_x_months:
83
+ one: "apmēram 1 mēnesis"
84
+ other: "apmēram %{count} mēneši"
85
+ x_months:
86
+ one: "1 mēnesis"
87
+ other: "%{count} mēneši"
88
+ about_x_years:
89
+ one: "apmēram 1 gads"
90
+ other: "apmēram %{count} gadi"
91
+ over_x_years:
92
+ one: "vairāk kā gads"
93
+ other: "vairāk kā %{count} gadi"
94
+ almost_x_years:
95
+ one: "gandrīz 1 gads"
96
+ other: "gandrīz %{count} gadi"
97
+ models:
98
+ errors:
99
+ template:
100
+ header:
101
+ one: "Dēļ 1 kļūdas šis %{model} netika saglabāts"
102
+ other: "Dēļ %{count} kļūdām šis %{model} netika saglabāts"
103
+ body: "Problēmas ir šajos ievades laukos:"
@@ -57,7 +57,7 @@ zh_cn:
57
57
  gb: "GB"
58
58
  tb: "TB"
59
59
 
60
- # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
60
+ # Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
61
61
  datetime:
62
62
  distance_in_words:
63
63
  half_a_minute: "半分钟"
@@ -5,35 +5,42 @@ module Padrino
5
5
  # Methods are provided for phone numbers, currency, percentage,
6
6
  # precision, positional notation, and file size.
7
7
  #
8
- # Verbatim copy of Rails Number Helpers
8
+ # Adapted from Rails Number Helpers.
9
9
  #
10
10
  module NumberHelpers
11
11
  ##
12
12
  # Formats a +number+ into a currency string (e.g., $13.65). You can customize the format
13
13
  # in the +options+ hash.
14
14
  #
15
- # ==== Options
16
- #
17
- # :precision:: Sets the level of precision (defaults to 2).
18
- # :unit:: Sets the denomination of the currency (defaults to "$").
19
- # :separator:: Sets the separator between the units (defaults to ".").
20
- # :delimiter:: Sets the thousands delimiter (defaults to ",").
21
- # :format:: Sets the format of the output string (defaults to "%u%n"). The field types are:
22
- #
15
+ # @param [Float] number
16
+ # Currency value to format.
17
+ # @param [Hash] options
18
+ # Options for currency conversion.
19
+ # @option options [Fixnum] :precision (2)
20
+ # Sets the level of precision.
21
+ # @option options [String] :unit ("$")
22
+ # Sets the denomination of the currency.
23
+ # @option options [String] :separator (".")
24
+ # Sets the separator between the units.
25
+ # @option options [String] :delimiter (",")
26
+ # Sets the thousands delimiter.
27
+ # @option options [String] :format ("%u%n")
28
+ # Sets the format of the output string. The field types are:
23
29
  # %u The currency unit
24
30
  # %n The number
25
31
  #
26
- # ==== Examples
32
+ # @return [String] The formatted representation of the currency
27
33
  #
34
+ # @example
28
35
  # number_to_currency(1234567890.50) # => $1,234,567,890.50
29
36
  # number_to_currency(1234567890.506) # => $1,234,567,890.51
30
37
  # number_to_currency(1234567890.506, :precision => 3) # => $1,234,567,890.506
31
- #
32
38
  # number_to_currency(1234567890.50, :unit => "&pound;", :separator => ",", :delimiter => "")
33
39
  # # => &pound;1234567890,50
34
40
  # number_to_currency(1234567890.50, :unit => "&pound;", :separator => ",", :delimiter => "", :format => "%n %u")
35
41
  # # => 1234567890,50 &pound;
36
42
  #
43
+ # @api public
37
44
  def number_to_currency(number, options = {})
38
45
  options.symbolize_keys!
39
46
 
@@ -63,19 +70,26 @@ module Padrino
63
70
  # Formats a +number+ as a percentage string (e.g., 65%). You can customize the
64
71
  # format in the +options+ hash.
65
72
  #
66
- # ==== Options
67
- #
68
- # :precision:: Sets the level of precision (defaults to 3).
69
- # :separator:: Sets the separator between the units (defaults to ".").
70
- # :delimiter:: Sets the thousands delimiter (defaults to "").
73
+ # @param [Fixnum, Float] number
74
+ # Percentage value to format.
75
+ # @param [Hash] options
76
+ # Options for percentage conversion.
77
+ # @option options [Fixnum] :precision (3)
78
+ # Sets the level of precision.
79
+ # @option options [String] :separator (".")
80
+ # Sets the separator between the units.
81
+ # @option options [String] :delimiter ("")
82
+ # Sets the thousands delimiter
71
83
  #
72
- # ==== Examples
84
+ # @return [String] The formatted representation of the percentage
73
85
  #
86
+ # @example
74
87
  # number_to_percentage(100) # => 100.000%
75
88
  # number_to_percentage(100, :precision => 0) # => 100%
76
89
  # number_to_percentage(1000, :delimiter => '.', :separator => ',') # => 1.000,000%
77
90
  # number_to_percentage(302.24398923423, :precision => 5) # => 302.24399%
78
91
  #
92
+ # @api public
79
93
  def number_to_percentage(number, options = {})
80
94
  options.symbolize_keys!
81
95
 
@@ -101,13 +115,19 @@ module Padrino
101
115
  # Formats a +number+ with grouped thousands using +delimiter+ (e.g., 12,324). You can
102
116
  # customize the format in the +options+ hash.
103
117
  #
104
- # ==== Options
118
+ # @overload number_with_delimiter(number, options={})
119
+ # @param [Fixnum, Float] number
120
+ # Number value to format.
121
+ # @param [Hash] options
122
+ # Options for formatter.
123
+ # @option options [String] :delimiter (", ")
124
+ # Sets the thousands delimiter
125
+ # @option options [String] :separator (".")
126
+ # Sets the separator between the units.
105
127
  #
106
- # :delimiter:: Sets the thousands delimiter (defaults to ",").
107
- # :separator:: Sets the separator between the units (defaults to ".").
108
- #
109
- # ==== Examples
128
+ # @return [String] The formatted representation of the number
110
129
  #
130
+ # @example
111
131
  # number_with_delimiter(12345678) # => 12,345,678
112
132
  # number_with_delimiter(12345678.05) # => 12,345,678.05
113
133
  # number_with_delimiter(12345678, :delimiter => ".") # => 12.345.678
@@ -115,13 +135,7 @@ module Padrino
115
135
  # number_with_delimiter(98765432.98, :delimiter => " ", :separator => ",")
116
136
  # # => 98 765 432,98
117
137
  #
118
- # You can still use <tt>number_with_delimiter</tt> with the old API that accepts the
119
- # +delimiter+ as its optional second and the +separator+ as its
120
- # optional third parameter:
121
- #
122
- # number_with_delimiter(12345678, " ") # => 12 345.678
123
- # number_with_delimiter(12345678.05, ".", ",") # => 12.345.678,05
124
- #
138
+ # @api public
125
139
  def number_with_delimiter(number, *args)
126
140
  options = args.extract_options!
127
141
  options.symbolize_keys!
@@ -144,14 +158,21 @@ module Padrino
144
158
  # Formats a +number+ with the specified level of <tt>:precision</tt> (e.g., 112.32 has a precision of 2).
145
159
  # You can customize the format in the +options+ hash.
146
160
  #
147
- # ==== Options
148
- #
149
- # :precision:: Sets the level of precision (defaults to 3).
150
- # :separator:: Sets the separator between the units (defaults to ".").
151
- # :delimiter:: Sets the thousands delimiter (defaults to "").
152
- #
153
- # ==== Examples
154
- #
161
+ # @overload number_with_precision(number, options={})
162
+ # @param [Fixnum, Float] number
163
+ # Number value to format.
164
+ # @param [Hash] options
165
+ # Options for formatter.
166
+ # @option options [Fixnum] :precision (3)
167
+ # Sets the level of precision.
168
+ # @option options [String] :separator (".")
169
+ # Sets the separator between the units.
170
+ # @option options [String] :delimiter ("")
171
+ # Sets the thousands delimiter
172
+ #
173
+ # @return [String] The formatted representation of the number
174
+ #
175
+ # @example
155
176
  # number_with_precision(111.2345) # => 111.235
156
177
  # number_with_precision(111.2345, :precision => 2) # => 111.23
157
178
  # number_with_precision(13, :precision => 5) # => 13.00000
@@ -159,11 +180,7 @@ module Padrino
159
180
  # number_with_precision(1111.2345, :precision => 2, :separator => ',', :delimiter => '.')
160
181
  # # => 1.111,23
161
182
  #
162
- # You can still use <tt>number_with_precision</tt> with the old API that accepts the
163
- # +precision+ as its optional second parameter:
164
- #
165
- # number_with_precision(number_with_precision(111.2345, 2) # => 111.23
166
- #
183
+ # @api public
167
184
  def number_with_precision(number, *args)
168
185
  options = args.extract_options!
169
186
  options.symbolize_keys!
@@ -196,14 +213,22 @@ module Padrino
196
213
  # +size+ cannot be converted into a number. You can customize the
197
214
  # format in the +options+ hash.
198
215
  #
199
- # ==== Options
200
216
  #
201
- # :precision:: Sets the level of precision (defaults to 1).
202
- # :separator:: Sets the separator between the units (defaults to ".").
203
- # :delimiter:: Sets the thousands delimiter (defaults to "").
217
+ # @overload number_to_human_size(number, options={})
218
+ # @param [Fixnum] number
219
+ # Number value to format.
220
+ # @param [Hash] options
221
+ # Options for formatter.
222
+ # @option options [Fixnum] :precision (1)
223
+ # Sets the level of precision.
224
+ # @option options [String] :separator (".")
225
+ # Sets the separator between the units.
226
+ # @option options [String] :delimiter ("")
227
+ # Sets the thousands delimiter
204
228
  #
205
- # ==== Examples
229
+ # @return [String] The formatted representation of bytes
206
230
  #
231
+ # @example
207
232
  # number_to_human_size(123) # => 123 Bytes
208
233
  # number_to_human_size(1234) # => 1.2 KB
209
234
  # number_to_human_size(12345) # => 12.1 KB
@@ -214,18 +239,7 @@ module Padrino
214
239
  # number_to_human_size(483989, :precision => 0) # => 473 KB
215
240
  # number_to_human_size(1234567, :precision => 2, :separator => ',') # => 1,18 MB
216
241
  #
217
- # Zeros after the decimal point are always stripped out, regardless of the
218
- # specified precision:
219
- #
220
- # helper.number_to_human_size(1234567890123, :precision => 5) # => "1.12283 TB"
221
- # helper.number_to_human_size(524288000, :precision=>5) # => "500 MB"
222
- #
223
- # You can still use <tt>number_to_human_size</tt> with the old API that accepts the
224
- # +precision+ as its optional second parameter:
225
- #
226
- # number_to_human_size(1234567, 2) # => 1.18 MB
227
- # number_to_human_size(483989, 0) # => 473 KB
228
- #
242
+ # @api public
229
243
  def number_to_human_size(number, *args)
230
244
  return nil if number.nil?
231
245