Sha256: bea9d853497512d3ff9047628fec6e7431b10e06fb9c1ba2032a05a1e2685b47
Contents?: true
Size: 1.44 KB
Versions: 3
Compression:
Stored size: 1.44 KB
Contents
module SimpleForm module Components module MinMax def min_max 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 end private def integer? input_type == :integer end 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 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 def find_numericality_validator find_validator(ActiveModel::Validations::NumericalityValidator) end 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 end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
simple_form-2.0.1 | lib/simple_form/components/min_max.rb |
simple_form-2.0.0 | lib/simple_form/components/min_max.rb |
simple_form-2.0.0.rc | lib/simple_form/components/min_max.rb |