Class: StrongJSON::Type::Enum
- Inherits:
-
Object
- Object
- StrongJSON::Type::Enum
- Includes:
- Match
- Defined in:
- lib/strong_json/type.rb
Instance Attribute Summary collapse
-
#types ⇒ Object
readonly
Returns the value of attribute types.
Instance Method Summary collapse
- #coerce(value, path: []) ⇒ Object
-
#initialize(types) ⇒ Enum
constructor
A new instance of Enum.
- #to_s ⇒ Object
Methods included from Match
Constructor Details
#initialize(types) ⇒ Enum
Returns a new instance of Enum.
198 199 200 |
# File 'lib/strong_json/type.rb', line 198 def initialize(types) @types = types end |
Instance Attribute Details
#types ⇒ Object (readonly)
Returns the value of attribute types.
196 197 198 |
# File 'lib/strong_json/type.rb', line 196 def types @types end |
Instance Method Details
#coerce(value, path: []) ⇒ Object
206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/strong_json/type.rb', line 206 def coerce(value, path: []) result = types.find do |ty| begin break ty.coerce(value) rescue UnexpectedFieldError, IllegalTypeError, Error # rubocop:disable Lint/HandleExceptions end end if result result else raise Error.new(path: path, type: self, value: value) end end |
#to_s ⇒ Object
202 203 204 |
# File 'lib/strong_json/type.rb', line 202 def to_s "enum(#{types.map(&:to_s).join(", ")})" end |