padrino-helpers 0.10.2 → 0.10.3

Sign up to get free protection for your applications and to get access to all the features.
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,11 +4,26 @@ module Padrino
4
4
  ##
5
5
  # Constructs a form for object using given or default form_builder
6
6
  #
7
- # ==== Examples
8
- #
7
+ # @param [Object] object
8
+ # The object for which the form is being built.
9
+ # @param [String] url
10
+ # The url this form will submit to.
11
+ # @param [Hash] settings
12
+ # The settings associated with this form. Accepts html options.
13
+ # @option settings [String] :builder ("StandardFormBuilder")
14
+ # The FormBuilder class to use such as StandardFormBuilder.
15
+ # @param [Proc] block
16
+ # The fields and content inside this form.
17
+ #
18
+ # @yield [AbstractFormBuilder] The form builder used to compose fields.
19
+ #
20
+ # @return [String] The html object-backed form with the specified options and input fields.
21
+ #
22
+ # @example
9
23
  # form_for :user, '/register' do |f| ... end
10
24
  # form_for @user, '/register', :id => 'register' do |f| ... end
11
25
  #
26
+ # @api public
12
27
  def form_for(object, url, settings={}, &block)
13
28
  form_html = capture_html(builder_instance(object, settings), &block)
14
29
  form_tag(url, settings) { form_html }
@@ -18,11 +33,20 @@ module Padrino
18
33
  # Constructs form fields for an object using given or default form_builder
19
34
  # Used within an existing form to allow alternate objects within one form
20
35
  #
21
- # ==== Examples
36
+ # @param [Object] object
37
+ # The object for which the fields are being built.
38
+ # @param [Hash] settings
39
+ # The settings associated with these fields. Accepts html options.
40
+ # @param [Proc] block
41
+ # The content inside this set of fields.
42
+ #
43
+ # @return [String] The html fields with the specified options.
22
44
  #
45
+ # @example
23
46
  # fields_for @user.assignment do |assignment| ... end
24
47
  # fields_for :assignment do |assigment| ... end
25
48
  #
49
+ # @api public
26
50
  def fields_for(object, settings={}, &block)
27
51
  instance = builder_instance(object, settings)
28
52
  fields_html = capture_html(instance, &block)
@@ -33,10 +57,19 @@ module Padrino
33
57
  ##
34
58
  # Constructs a form without object based on options
35
59
  #
36
- # ==== Examples
60
+ # @param [String] url
61
+ # The url this form will submit to.
62
+ # @param [Hash] options
63
+ # The html options associated with this form.
64
+ # @param [Proc] block
65
+ # The fields and content inside this form.
66
+ #
67
+ # @return [String] The html form with the specified options and input fields.
37
68
  #
38
- # form_tag '/register' do ... end
69
+ # @example
70
+ # form_tag '/register', :class => "registration_form" do ... end
39
71
  #
72
+ # @api public
40
73
  def form_tag(url, options={}, &block)
41
74
  desired_method = options[:method]
42
75
  data_method = options.delete(:method) if options[:method].to_s !~ /get|post/i
@@ -55,11 +88,16 @@ module Padrino
55
88
  # Only 'get' and 'post' are allowed within browsers;
56
89
  # 'put' and 'delete' are just specified using hidden fields with form action still 'put'.
57
90
  #
58
- # ==== Examples
91
+ # @param [String] desired_method
92
+ # The method this hidden field represents (i.e put or delete))
59
93
  #
94
+ # @return [String] The hidden field representing the +desired_method+ for the form.
95
+ #
96
+ # @example
60
97
  # # Generate: <input name="_method" value="delete" />
61
98
  # hidden_form_method_field('delete')
62
99
  #
100
+ # @api semipublic
63
101
  def hidden_form_method_field(desired_method)
64
102
  return '' if desired_method.blank? || desired_method.to_s =~ /get|post/i
65
103
  hidden_field_tag(:_method, :value => desired_method)
@@ -68,10 +106,21 @@ module Padrino
68
106
  ##
69
107
  # Constructs a field_set to group fields with given options
70
108
  #
71
- # ==== Examples
109
+ # @overload field_set_tag(legend=nil, options={}, &block)
110
+ # @param [String] legend The legend caption for the fieldset
111
+ # @param [Hash] options The html options for the fieldset.
112
+ # @param [Proc] block The content inside the fieldset.
113
+ # @overload field_set_tag(options={}, &block)
114
+ # @param [Hash] options The html options for the fieldset.
115
+ # @param [Proc] block The content inside the fieldset.
116
+ #
117
+ # @return [String] The html for the fieldset tag based on given +options+.
72
118
  #
73
- # field_set_tag("Office", :class => 'office-set')
119
+ # @example
120
+ # field_set_tag(:class => "office-set") { }
121
+ # field_set_tag("Office", :class => 'office-set') { }
74
122
  #
123
+ # @api public
75
124
  def field_set_tag(*args, &block)
76
125
  options = args.extract_options!
77
126
  legend_text = args[0].is_a?(String) ? args.first : nil
@@ -83,30 +132,41 @@ module Padrino
83
132
  ##
84
133
  # Constructs list html for the errors for a given symbol
85
134
  #
86
- # ==== Options
87
- #
88
- # :header_tag:: Used for the header of the error div (default: "h2").
89
- # :id:: The id of the error div (default: "errorExplanation").
90
- # :class:: The class of the error div (default: "errorExplanation").
91
- # :object:: The object (or array of objects) for which to display errors,
92
- # if you need to escape the instance variable convention.
93
- # :object_name:: The object name to use in the header, or any text that you prefer.
94
- # If +:object_name+ is not set, the name of the first object will be used.
95
- # :header_message:: The message in the header of the error div. Pass +nil+
96
- # or an empty string to avoid the header message altogether. (Default: "X errors
97
- # prohibited this object from being saved").
98
- # :message:: The explanation message after the header message and before
99
- # the error list. Pass +nil+ or an empty string to avoid the explanation message
100
- # altogether. (Default: "There were problems with the following fields:").
101
- #
102
- # ==== Examples
103
- #
135
+ # @overload error_messages_for(*objects, options = {})
136
+ # @param [Array<Object>] object Splat of objects to display errors for.
137
+ # @param [Hash] options Error message display options.
138
+ # @option options [String] :header_tag ("h2")
139
+ # Used for the header of the error div
140
+ # @option options [String] :id ("errorExplanation")
141
+ # The id of the error div.
142
+ # @option options [String] :class ("errorExplanation")
143
+ # The class of the error div.
144
+ # @option options [Array<Object>] :object
145
+ # The object (or array of objects) for which to display errors,
146
+ # if you need to escape the instance variable convention.
147
+ # @option options [String] :object_name
148
+ # The object name to use in the header, or any text that you prefer.
149
+ # If +:object_name+ is not set, the name of the first object will be used.
150
+ # @option options [String] :header_message ("X errors prohibited this object from being saved")
151
+ # The message in the header of the error div. Pass +nil+ or an empty string
152
+ # to avoid the header message altogether.
153
+ # @option options [String] :message ("There were problems with the following fields:")
154
+ # The explanation message after the header message and before
155
+ # the error list. Pass +nil+ or an empty string to avoid the explanation message
156
+ # altogether.
157
+ #
158
+ # @return [String] The html section with all errors for the specified +objects+
159
+ #
160
+ # @example
104
161
  # error_messages_for :user
105
162
  #
163
+ # @api public
106
164
  def error_messages_for(*objects)
107
165
  options = objects.extract_options!.symbolize_keys
108
- objects = objects.map {|object_name| object_name.is_a?(Symbol) ? instance_variable_get("@#{object_name}") : object_name }.compact
109
- count = objects.inject(0) {|sum, object| sum + object.errors.size }
166
+ objects = objects.map { |object_name|
167
+ object_name.is_a?(Symbol) ? instance_variable_get("@#{object_name}") : object_name
168
+ }.compact
169
+ count = objects.inject(0) { |sum, object| sum + object.errors.size }
110
170
 
111
171
  unless count.zero?
112
172
  html = {}
@@ -153,14 +213,20 @@ module Padrino
153
213
  ##
154
214
  # Returns a string containing the error message attached to the +method+ on the +object+ if one exists.
155
215
  #
156
- # ==== Options
157
- #
158
- # :tag:: The tag that enclose your error. (Default 'div')
159
- # :prepend:: Text to add before error.
160
- # :append:: Text to add after error.
161
- #
162
- # ==== Examples
163
- #
216
+ # @param [Object] object
217
+ # The object to display the error for.
218
+ # @param [Symbol] field
219
+ # The field on the +object+ to display the error for.
220
+ # @param [Hash] options
221
+ # The options to control the error display.
222
+ # @option options [String] :tag ("div")
223
+ # The tag that encloses the error.
224
+ # @option options [String] :prepend ("")
225
+ # The text to prepend before the field error.
226
+ # @option options [String] :append ("")
227
+ # The text to append after the field error.
228
+ #
229
+ # @example
164
230
  # # => <span class="error">can't be blank</div>
165
231
  # error_message_on :post, :title
166
232
  # error_message_on @post, :title
@@ -171,6 +237,9 @@ module Padrino
171
237
  # # => <div class="error">This title can't be blank (or it won't work)</div>
172
238
  # error_message_on :post, :title, :prepend => "This title", :append => "(or it won't work)"
173
239
  #
240
+ # @return [String] The html display of an error for a particular +object+ and +field+.
241
+ #
242
+ # @api public
174
243
  def error_message_on(object, field, options={})
175
244
  object = object.is_a?(Symbol) ? instance_variable_get("@#{object}") : object
176
245
  error = object.errors[field] rescue nil
@@ -188,11 +257,22 @@ module Padrino
188
257
  ##
189
258
  # Constructs a label tag from the given options
190
259
  #
191
- # ==== Examples
260
+ # @param [String] name
261
+ # The name of the field to label.
262
+ # @param [Hash] options
263
+ # The html options for this label.
264
+ # @option options :caption
265
+ # The caption for this label.
266
+ # @param [Proc] block
267
+ # The content to be inserted into the label.
268
+ #
269
+ # @return [String] The html for this label with the given +options+.
192
270
  #
271
+ # @example
193
272
  # label_tag :username, :class => 'long-label'
194
273
  # label_tag :username, :class => 'long-label' do ... end
195
274
  #
275
+ # @api public
196
276
  def label_tag(name, options={}, &block)
197
277
  options.reverse_merge!(:caption => "#{name.to_s.humanize}: ", :for => name)
198
278
  caption_text = options.delete(:caption)
@@ -206,36 +286,48 @@ module Padrino
206
286
  end
207
287
 
208
288
  ##
209
- # Constructs a hidden field input from the given options
289
+ # Constructs a text field input from the given options
210
290
  #
211
- # ==== Examples
291
+ # @macro [new] input_field_doc
292
+ # @param [String] name
293
+ # The name of the input field.
294
+ # @param [Hash] options
295
+ # The html options for the input field.
212
296
  #
213
- # hidden_field_tag :session_key, :value => "__secret__"
297
+ # @return [String] The html input field based on the +options+ specified
214
298
  #
215
- def hidden_field_tag(name, options={})
299
+ # @example
300
+ # text_field_tag :username, :class => 'long'
301
+ #
302
+ # @api public
303
+ def text_field_tag(name, options={})
216
304
  options.reverse_merge!(:name => name)
217
- input_tag(:hidden, options)
305
+ input_tag(:text, options)
218
306
  end
219
307
 
220
308
  ##
221
- # Constructs a text field input from the given options
309
+ # Constructs a hidden field input from the given options
222
310
  #
223
- # ==== Examples
311
+ # @macro input_field_doc
224
312
  #
225
- # text_field_tag :username, :class => 'long'
313
+ # @example
314
+ # hidden_field_tag :session_key, :value => "__secret__"
226
315
  #
227
- def text_field_tag(name, options={})
316
+ # @api public
317
+ def hidden_field_tag(name, options={})
228
318
  options.reverse_merge!(:name => name)
229
- input_tag(:text, options)
319
+ input_tag(:hidden, options)
230
320
  end
231
321
 
232
322
  ##
233
323
  # Constructs a text area input from the given options
234
324
  #
235
- # ==== Examples
325
+ # @macro input_field_doc
236
326
  #
327
+ # @example
237
328
  # text_area_tag :username, :class => 'long', :value => "Demo?"
238
329
  #
330
+ # @api public
239
331
  def text_area_tag(name, options={})
240
332
  options.reverse_merge!(:name => name, :rows => "", :cols => "")
241
333
  content_tag(:textarea, options.delete(:value).to_s, options)
@@ -244,20 +336,63 @@ module Padrino
244
336
  ##
245
337
  # Constructs a password field input from the given options
246
338
  #
247
- # ==== Examples
339
+ # @macro input_field_doc
248
340
  #
341
+ # @example
249
342
  # password_field_tag :password, :class => 'long'
250
343
  #
344
+ # @api public
251
345
  def password_field_tag(name, options={})
252
346
  options.reverse_merge!(:name => name)
253
347
  input_tag(:password, options)
254
348
  end
255
349
 
256
350
  ##
257
- # Constructs a select from the given options
351
+ # Constructs a check_box from the given options
258
352
  #
259
- # ==== Examples
353
+ # @macro input_field_doc
354
+ #
355
+ # @example
356
+ # check_box_tag :remember_me, :value => 'Yes'
260
357
  #
358
+ # @api public
359
+ def check_box_tag(name, options={})
360
+ options.reverse_merge!(:name => name, :value => '1')
361
+ input_tag(:checkbox, options)
362
+ end
363
+
364
+ ##
365
+ # Constructs a radio_button from the given options
366
+ #
367
+ # @macro input_field_doc
368
+ #
369
+ # @example
370
+ # radio_button_tag :remember_me, :value => 'true'
371
+ #
372
+ # @api public
373
+ def radio_button_tag(name, options={})
374
+ options.reverse_merge!(:name => name)
375
+ input_tag(:radio, options)
376
+ end
377
+
378
+ ##
379
+ # Constructs a file field input from the given options
380
+ #
381
+ # @macro input_field_doc
382
+ #
383
+ # @example
384
+ # file_field_tag :photo, :class => 'long'
385
+ #
386
+ # @api public
387
+ def file_field_tag(name, options={})
388
+ options.reverse_merge!(:name => name)
389
+ input_tag(:file, options)
390
+ end
391
+
392
+ ##
393
+ # Constructs a select from the given options
394
+ #
395
+ # @example
261
396
  # options = [['caption', 'value'], ['Green', 'green1'], ['Blue', 'blue1'], ['Black', "black1"]]
262
397
  # options = ['option', 'red', 'yellow' ]
263
398
  # select_tag(:favorite_color, :options => ['red', 'yellow'], :selected => 'green1')
@@ -273,6 +408,28 @@ module Padrino
273
408
  # grouped_options = {'Friends' => ['Yoda',['Obiwan',1]],'Enemies' => ['Palpatine',['Darth Vader',3]]}
274
409
  # select_tag(:color, :grouped_options => [['warm',['red','yellow']],['cool',['blue', 'purple']]])
275
410
  #
411
+ # @param [String] name
412
+ # The name of the input field.
413
+ # @param [Hash] options
414
+ # The html options for the input field.
415
+ # @option options [Array<String, Array>] :options
416
+ # Explicit options to display in the select. Can be strings or string tuples.
417
+ # @option options [Array<Array>] :grouped_options
418
+ # List of options for each group in the select. See examples for details.
419
+ # @option options [Array<Object>] :collection
420
+ # Collection of objects used as options in the select.
421
+ # @option options [Array<Symbol>] :fields
422
+ # The attributes used as "label" and "value" for each +collection+ object.
423
+ # @option options [String] :selected (nil)
424
+ # The option value initially selected.
425
+ # @option options [Boolean] :include_blank (false)
426
+ # Include a blank option in the select.
427
+ # @option options [Boolean] :multiple (false)
428
+ # Allow multiple options to be selected at once.
429
+ #
430
+ # @return [String] The html input field based on the +options+ specified
431
+ #
432
+ # @api public
276
433
  def select_tag(name, options={})
277
434
  options.reverse_merge!(:name => name)
278
435
  collection, fields = options.delete(:collection), options.delete(:fields)
@@ -289,133 +446,122 @@ module Padrino
289
446
  end
290
447
 
291
448
  ##
292
- # Constructs a check_box from the given options
293
- #
294
- # ==== Examples
295
- #
296
- # check_box_tag :remember_me, :value => 'Yes'
297
- #
298
- def check_box_tag(name, options={})
299
- options.reverse_merge!(:name => name, :value => '1')
300
- input_tag(:checkbox, options)
301
- end
302
-
303
- ##
304
- # Constructs a radio_button from the given options
305
- #
306
- # ==== Examples
307
- #
308
- # radio_button_tag :remember_me, :value => 'true'
449
+ # Constructs a button input from the given options
309
450
  #
310
- def radio_button_tag(name, options={})
311
- options.reverse_merge!(:name => name)
312
- input_tag(:radio, options)
313
- end
314
-
315
- ##
316
- # Constructs a file field input from the given options
451
+ # @param [String] caption
452
+ # The caption for the button.
453
+ # @param [Hash] options
454
+ # The html options for the input field.
317
455
  #
318
- # ==== Examples
456
+ # @return [String] The html button based on the +options+ specified.
319
457
  #
320
- # file_field_tag :photo, :class => 'long'
458
+ # @example
459
+ # button_tag "Cancel", :class => 'clear'
321
460
  #
322
- def file_field_tag(name, options={})
323
- options.reverse_merge!(:name => name)
324
- input_tag(:file, options)
461
+ # @api public
462
+ def button_tag(caption, options = {})
463
+ options.reverse_merge!(:value => caption)
464
+ input_tag(:button, options)
325
465
  end
326
466
 
327
467
  ##
328
468
  # Constructs a submit button from the given options
329
469
  #
330
- # ==== Examples
470
+ # @param [String] caption
471
+ # The caption for the submit button.
472
+ # @param [Hash] options
473
+ # The html options for the input field.
331
474
  #
475
+ # @return [String] The html submit button based on the +options+ specified.
476
+ #
477
+ # @example
332
478
  # submit_tag "Create", :class => 'success'
333
479
  #
480
+ # @api public
334
481
  def submit_tag(caption="Submit", options={})
335
482
  options.reverse_merge!(:value => caption)
336
483
  input_tag(:submit, options)
337
484
  end
338
485
 
339
- ##
340
- # Constructs a button input from the given options
341
- #
342
- # ==== Examples
343
- #
344
- # button_tag "Cancel", :class => 'clear'
345
- #
346
- def button_tag(caption, options = {})
347
- options.reverse_merge!(:value => caption)
348
- input_tag(:button, options)
349
- end
350
-
351
486
  # Constructs a submit button from the given options
352
487
  #
353
- # ==== Examples
488
+ # @param [String] source
489
+ # The source image path for the button.
490
+ # @param [Hash] options
491
+ # The html options for the input field.
492
+ #
493
+ # @return [String] The html image button based on the +options+ specified.
354
494
  #
495
+ # @example
355
496
  # submit_tag "Create", :class => 'success'
356
497
  #
498
+ # @api public
357
499
  def image_submit_tag(source, options={})
358
500
  options.reverse_merge!(:src => image_path(source))
359
501
  input_tag(:image, options)
360
502
  end
361
503
 
362
- ##
363
- # Returns an array of option items for a select field based on the given collection
364
- # fields is an array containing the fields to display from each item in the collection
365
- #
366
- def options_from_collection(collection, fields)
367
- collection.map { |item| [ item.send(fields.first), item.send(fields.last) ] }
368
- end
504
+ protected
369
505
 
370
- #
371
- # Returns the options tags for a select based on the given option items
372
- #
373
- def options_for_select(option_items, selected_value=nil)
374
- return '' if option_items.blank?
375
- option_items.map do |caption, value|
376
- value ||= caption
377
- content_tag(:option, caption, :value => value, :selected => option_is_selected?(value, caption, selected_value))
506
+ ##
507
+ # Returns an array of option items for a select field based on the given collection
508
+ # fields is an array containing the fields to display from each item in the collection
509
+ #
510
+ def options_from_collection(collection, fields)
511
+ collection.map { |item| [ item.send(fields.first), item.send(fields.last) ] }
378
512
  end
379
- end
380
513
 
381
- #
382
- # Returns the optgroups with options tags for a select based on the given :grouped_options items
383
- #
384
- def grouped_options_for_select(collection,selected=nil,prompt=false)
385
- if collection.is_a?(Hash)
386
- collection.map do |key, value|
387
- content_tag :optgroup, :label => key do
388
- options_for_select(value, selected)
389
- end
514
+ #
515
+ # Returns the options tags for a select based on the given option items
516
+ #
517
+ def options_for_select(option_items, selected_value=nil)
518
+ return '' if option_items.blank?
519
+ option_items.map do |caption, value|
520
+ value ||= caption
521
+ content_tag(:option, caption, :value => value, :selected => option_is_selected?(value, caption, selected_value))
390
522
  end
391
- elsif collection.is_a?(Array)
392
- collection.map do |optgroup|
393
- content_tag :optgroup, :label => optgroup.first do
394
- options_for_select(optgroup.last, selected)
523
+ end
524
+
525
+ #
526
+ # Returns the optgroups with options tags for a select based on the given :grouped_options items
527
+ #
528
+ def grouped_options_for_select(collection, selected=nil, prompt=false)
529
+ if collection.is_a?(Hash)
530
+ collection.map do |key, value|
531
+ content_tag :optgroup, :label => key do
532
+ options_for_select(value, selected)
533
+ end
534
+ end
535
+ elsif collection.is_a?(Array)
536
+ collection.map do |optgroup|
537
+ content_tag :optgroup, :label => optgroup.first do
538
+ options_for_select(optgroup.last, selected)
539
+ end
395
540
  end
396
541
  end
397
542
  end
398
- end
399
543
 
400
- #
401
- # Returns the blank option serving as a prompt if passed
402
- #
403
- def blank_option(prompt)
404
- return unless prompt
405
- case prompt
406
- when String then content_tag(:option, prompt, :value => '')
407
- when Array then content_tag(:option, prompt.first, :value => prompt.last)
408
- else content_tag(:option, '', :value => '')
544
+ #
545
+ # Returns the blank option serving as a prompt if passed
546
+ #
547
+ def blank_option(prompt)
548
+ return unless prompt
549
+ case prompt
550
+ when String then content_tag(:option, prompt, :value => '')
551
+ when Array then content_tag(:option, prompt.first, :value => prompt.last)
552
+ else content_tag(:option, '', :value => '')
553
+ end
409
554
  end
410
- end
411
555
 
412
556
  private
413
557
  ##
414
558
  # Returns the FormBuilder class to use based on all available setting sources
415
559
  # If explicitly defined, returns that, otherwise returns defaults.
416
560
  #
561
+ # @example
417
562
  # configured_form_builder_class(nil) => StandardFormBuilder
418
563
  #
564
+ # @api private
419
565
  def configured_form_builder_class(explicit_builder=nil)
420
566
  default_builder = self.respond_to?(:settings) && self.settings.default_builder
421
567
  configured_builder = explicit_builder || default_builder || 'StandardFormBuilder'
@@ -426,8 +572,10 @@ module Padrino
426
572
  ##
427
573
  # Returns an initialized builder instance for the given object and settings
428
574
  #
575
+ # @example
429
576
  # builder_instance(@account, :nested => { ... }) => <FormBuilder>
430
577
  #
578
+ # @api private
431
579
  def builder_instance(object, settings={})
432
580
  builder_class = configured_form_builder_class(settings.delete(:builder))
433
581
  builder_class.new(self, object, settings)
@@ -436,6 +584,11 @@ module Padrino
436
584
  ##
437
585
  # Returns whether the option should be selected or not
438
586
  #
587
+ # @example
588
+ # option_is_selected?("red", "Red", ["red", "blue"]) => true
589
+ # option_is_selected?("red", "Red", ["green", "blue"]) => false
590
+ #
591
+ # @api private
439
592
  def option_is_selected?(value, caption, selected_values)
440
593
  Array(selected_values).any? do |selected|
441
594
  [value.to_s, caption.to_s].include?(selected.to_s)