Class: Attributor::Integer
- Defined in:
- lib/attributor/types/integer.rb
Constant Summary collapse
- EXAMPLE_RANGE =
1000
Class Method Summary collapse
- .example(_context = nil, options: {}) ⇒ Object
- .load(value, context = Attributor::DEFAULT_ROOT_CONTEXT, **options) ⇒ Object
- .native_type ⇒ Object
- .validate_options(options) ⇒ Object
Methods inherited from Numeric
Methods included from Type
Class Method Details
.example(_context = nil, options: {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/attributor/types/integer.rb', line 11 def self.example(_context = nil, options: {}) () # Set default values if [:min].nil? && [:max].nil? min = 0 max = EXAMPLE_RANGE elsif [:min].nil? max = [:max] min = max - EXAMPLE_RANGE elsif [:max].nil? min = [:min] max = min + EXAMPLE_RANGE else min = [:min] max = [:max] end # Generate random number on interval [min,max] rand(max - min + 1) + min end |
.load(value, context = Attributor::DEFAULT_ROOT_CONTEXT, **options) ⇒ Object
33 34 35 36 37 |
# File 'lib/attributor/types/integer.rb', line 33 def self.load(value, context = Attributor::DEFAULT_ROOT_CONTEXT, **) Integer(value) rescue TypeError super end |
.native_type ⇒ Object
7 8 9 |
# File 'lib/attributor/types/integer.rb', line 7 def self.native_type ::Integer end |
.validate_options(options) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/attributor/types/integer.rb', line 39 def self.() if .key?(:min) && .key?(:max) # Both :max and :min must be integers raise AttributorException, "Invalid range: [#{[:min].inspect}, #{[:max].inspect}]" if ![:min].is_a?(::Integer) || ![:max].is_a?(::Integer) # :max cannot be less than :min raise AttributorException, "Invalid range: [#{[:min].inspect}, #{[:max].inspect}]" if [:max] < [:min] elsif !.key?(:min) && .key?(:max) # :max must be an integer raise AttributorException, "Invalid range: [, #{[:max].inspect}]" unless [:max].is_a?(::Integer) elsif .key?(:min) && !.key?(:max) # :min must be an integer raise AttributorException, "Invalid range: [#{[:min].inspect},]" unless [:min].is_a?(::Integer) # Neither :min nor :max were given, noop end true end |