Module: Turbopuffer::Internal::Type::Enum Private
- Includes:
- Converter, Util::SorbetRuntimeSupport
- Included in:
- Models::DistanceMetric, Models::Language, Models::NamespaceExplainQueryParams::Consistency::Level, Models::NamespaceMultiQueryParams::Consistency::Level, Models::NamespaceQueryParams::Consistency::Level, Models::Tokenizer, Models::VectorEncoding
- Defined in:
- lib/turbopuffer/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
60 61 62 63 64 |
# File 'lib/turbopuffer/internal/type/enum.rb', line 60 def ==(other) # rubocop:disable Style/CaseEquality Turbopuffer::Internal::Type::Enum === other && other.values.to_set == values.to_set # rubocop:enable Style/CaseEquality end |
#===(other) ⇒ Boolean
53 |
# File 'lib/turbopuffer/internal/type/enum.rb', line 53 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.
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/turbopuffer/internal/type/enum.rb', line 91 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/turbopuffer/internal/type/enum.rb', line 108
|
#hash ⇒ Integer
69 |
# File 'lib/turbopuffer/internal/type/enum.rb', line 69 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.
139 140 141 142 143 144 145 146 147 148 |
# File 'lib/turbopuffer/internal/type/enum.rb', line 139 def inspect(depth: 0) if depth.positive? return is_a?(Module) ? super() : self.class.name end members = values.map { Turbopuffer::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.
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/turbopuffer/internal/type/enum.rb', line 122 def to_sorbet_type types = values.map { Turbopuffer::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.
46 |
# File 'lib/turbopuffer/internal/type/enum.rb', line 46 def values = constants.map { const_get(_1) } |