Module: T::Utils::Nilable
- Defined in:
- lib/types/utils.rb
Defined Under Namespace
Classes: TypeInfo
Class Method Summary collapse
- .get_type_info(prop_type) ⇒ Object
-
.get_underlying_type(prop_type) ⇒ Object
Get the underlying type inside prop_type: - if the type is A, the function returns A - if the type is T.nilable(A), the function returns A.
-
.get_underlying_type_object(prop_type) ⇒ Object
The difference between this function and the above function is that the Sorbet type, like T::Types::Simple is preserved.
- .is_union_with_nilclass(prop_type) ⇒ Object
Class Method Details
.get_type_info(prop_type) ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/types/utils.rb', line 142 def self.get_type_info(prop_type) if prop_type.is_a?(T::Types::Union) non_nilable_type = T::Utils.unwrap_nilable(prop_type) if non_nilable_type && non_nilable_type.is_a?(T::Types::Simple) non_nilable_type = non_nilable_type.raw_type end TypeInfo.new(true, non_nilable_type) else TypeInfo.new(false, nil) end end |
.get_underlying_type(prop_type) ⇒ Object
Get the underlying type inside prop_type:
- if the type is A, the function returns A
- if the type is T.nilable(A), the function returns A
157 158 159 160 161 162 163 164 165 166 |
# File 'lib/types/utils.rb', line 157 def self.(prop_type) type_info = get_type_info(prop_type) if type_info.is_union_type type_info.non_nilable_type || prop_type elsif prop_type.is_a?(T::Types::Simple) prop_type.raw_type else prop_type end end |
.get_underlying_type_object(prop_type) ⇒ Object
The difference between this function and the above function is that the Sorbet type, like T::Types::Simple is preserved.
170 171 172 |
# File 'lib/types/utils.rb', line 170 def self.(prop_type) T::Utils.unwrap_nilable(prop_type) || prop_type end |