Module: HumanTone::Coercion
- Defined in:
- lib/humantone/coercion.rb
Defined Under Namespace
Classes: Error
Class Method Summary collapse
- .boolean!(value, field) ⇒ Object
- .enum_symbol!(value, field, valid) ⇒ Object
- .hash!(value, field) ⇒ Object
- .integer!(value, field) ⇒ Object
- .integer_in_range!(value, field, range) ⇒ Object
- .optional_iso8601_time(value, field) ⇒ Object
- .optional_string(value, field) ⇒ Object
- .string!(value, field) ⇒ Object
Class Method Details
.boolean!(value, field) ⇒ Object
32 33 34 35 36 37 |
# File 'lib/humantone/coercion.rb', line 32 def boolean!(value, field) raise Error.new(field, 'missing') if value.nil? return value if value.is_a?(TrueClass) || value.is_a?(FalseClass) raise Error.new(field, "expected Boolean, got #{value.class}") end |
.enum_symbol!(value, field, valid) ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/humantone/coercion.rb', line 64 def enum_symbol!(value, field, valid) raise Error.new(field, 'missing') if value.nil? raise Error.new(field, "expected String, got #{value.class}") unless value.is_a?(String) sym = value.to_sym raise Error.new(field, "expected one of #{valid.inspect}, got #{value.inspect}") unless valid.include?(sym) sym end |
.hash!(value, field) ⇒ Object
74 75 76 77 78 79 |
# File 'lib/humantone/coercion.rb', line 74 def hash!(value, field) raise Error.new(field, 'missing') if value.nil? raise Error.new(field, "expected Hash, got #{value.class}") unless value.is_a?(Hash) value end |
.integer!(value, field) ⇒ Object
18 19 20 21 22 23 |
# File 'lib/humantone/coercion.rb', line 18 def integer!(value, field) raise Error.new(field, 'missing') if value.nil? raise Error.new(field, "expected Integer, got #{value.class}") unless value.is_a?(Integer) value end |
.integer_in_range!(value, field, range) ⇒ Object
25 26 27 28 29 30 |
# File 'lib/humantone/coercion.rb', line 25 def integer_in_range!(value, field, range) integer!(value, field) raise Error.new(field, "out of range #{range}, got #{value}") unless range.cover?(value) value end |
.optional_iso8601_time(value, field) ⇒ Object
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/humantone/coercion.rb', line 53 def optional_iso8601_time(value, field) return nil if value.nil? raise Error.new(field, "expected ISO 8601 String, got #{value.class}") unless value.is_a?(String) begin Time.iso8601(value).utc rescue ArgumentError => e raise Error.new(field, "unparseable ISO 8601: #{e.}") end end |