module SimpleForm::Components::MinMax
Public Instance Methods
min_max(wrapper_options = nil)
click to toggle source
# File lib/simple_form/components/min_max.rb, line 5 def min_max(wrapper_options = nil) if numeric_validator = find_numericality_validator validator_options = numeric_validator.options input_html_options[:min] ||= minimum_value(validator_options) input_html_options[:max] ||= maximum_value(validator_options) end nil end
Private Instance Methods
evaluate_numericality_validator_option(option)
click to toggle source
# File lib/simple_form/components/min_max.rb, line 40 def evaluate_numericality_validator_option(option) if option.is_a?(Numeric) option elsif option.is_a?(Symbol) object.send(option) elsif option.respond_to?(:call) option.call(object) end end
find_numericality_validator()
click to toggle source
# File lib/simple_form/components/min_max.rb, line 36 def find_numericality_validator find_validator(:numericality) end
integer?()
click to toggle source
# File lib/simple_form/components/min_max.rb, line 16 def integer? input_type == :integer end
maximum_value(validator_options)
click to toggle source
# File lib/simple_form/components/min_max.rb, line 28 def maximum_value(validator_options) if integer? && validator_options.key?(:less_than) evaluate_numericality_validator_option(validator_options[:less_than]) - 1 else evaluate_numericality_validator_option(validator_options[:less_than_or_equal_to]) end end
minimum_value(validator_options)
click to toggle source
# File lib/simple_form/components/min_max.rb, line 20 def minimum_value(validator_options) if integer? && validator_options.key?(:greater_than) evaluate_numericality_validator_option(validator_options[:greater_than]) + 1 else evaluate_numericality_validator_option(validator_options[:greater_than_or_equal_to]) end end