Module: OnebusawaySDK::Internal::Type::Enum Private
- Includes:
- Converter, Util::SorbetRuntimeSupport
- Included in:
- Models::References::Situation::Reason, Models::ReportProblemWithStopRetrieveParams::Code, Models::ReportProblemWithTripRetrieveParams::Code
- Defined in:
- lib/onebusaway_sdk/internal/type/enum.rb
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
A value from among a specified list of options. OpenAPI enum values map to Ruby values in the SDK as follows:
-
boolean => true | false
-
integer => Integer
-
float => Float
-
string => Symbol
We can therefore convert string values to Symbols, but can’t convert other values safely.
Instance Method Summary collapse
- #==(other) ⇒ Boolean
- #===(other) ⇒ Boolean
-
#coerce(value, state:) ⇒ Symbol, Object
private
Unlike with primitives, ‘Enum` additionally validates that the value is a member of the enum.
- #dump(value, state: ) ⇒ Symbol, Object private
- #hash ⇒ Integer
- #inspect(depth: 0) ⇒ String private
- #to_sorbet_type ⇒ Object private
-
#values ⇒ Array<NilClass, Boolean, Integer, Float, Symbol>
private
All of the valid Symbol values for this enum.
Methods included from Util::SorbetRuntimeSupport
#const_missing, #define_sorbet_constant!, #sorbet_constant_defined?, to_sorbet_type
Methods included from Converter
coerce, dump, inspect, meta_info, new_coerce_state, type_info
Instance Method Details
#==(other) ⇒ Boolean
39 40 41 42 43 |
# File 'lib/onebusaway_sdk/internal/type/enum.rb', line 39 def ==(other) # rubocop:disable Style/CaseEquality OnebusawaySDK::Internal::Type::Enum === other && other.values.to_set == values.to_set # rubocop:enable Style/CaseEquality end |
#===(other) ⇒ Boolean
32 |
# File 'lib/onebusaway_sdk/internal/type/enum.rb', line 32 def ===(other) = values.include?(other) |
#coerce(value, state:) ⇒ Symbol, Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Unlike with primitives, ‘Enum` additionally validates that the value is a member of the enum.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/onebusaway_sdk/internal/type/enum.rb', line 70 def coerce(value, state:) exactness = state.fetch(:exactness) val = value.is_a?(String) ? value.to_sym : value if values.include?(val) exactness[:yes] += 1 val elsif values.first&.class == val.class exactness[:maybe] += 1 value else exactness[:no] += 1 state[:error] = TypeError.new("#{value.class} can't be coerced into #{self}") value end end |
#dump(value, state: ) ⇒ Symbol, Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
|
|
# File 'lib/onebusaway_sdk/internal/type/enum.rb', line 87
|
#hash ⇒ Integer
48 |
# File 'lib/onebusaway_sdk/internal/type/enum.rb', line 48 def hash = values.to_set.hash |
#inspect(depth: 0) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
118 119 120 121 122 123 124 125 126 127 |
# File 'lib/onebusaway_sdk/internal/type/enum.rb', line 118 def inspect(depth: 0) if depth.positive? return is_a?(Module) ? super() : self.class.name end members = values.map { OnebusawaySDK::Internal::Type::Converter.inspect(_1, depth: depth.succ) } prefix = is_a?(Module) ? name : self.class.name "#{prefix}[#{members.join(' | ')}]" end |
#to_sorbet_type ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/onebusaway_sdk/internal/type/enum.rb', line 101 def to_sorbet_type types = values.map { OnebusawaySDK::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(_1) }.uniq case types in [] T.noreturn in [type] type else T.any(*types) end end |
#values ⇒ Array<NilClass, Boolean, Integer, Float, Symbol>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
All of the valid Symbol values for this enum.
25 |
# File 'lib/onebusaway_sdk/internal/type/enum.rb', line 25 def values = constants.map { const_get(_1) } |