module T::Props::CustomType
Public Class Methods
checked_serialize(instance)
click to toggle source
# File lib/types/props/custom_type.rb, line 96 def self.checked_serialize(instance) val = T.cast(instance.class, T::Props::CustomType).serialize(instance) unless valid_serialization?(val) msg = "#{instance.class} did not serialize to a valid scalar type. It became a: #{val.class}" if val.is_a?(Hash) msg += "\nIf you want to store a structured Hash, consider using a T::Struct as your type." end raise TypeError.new(msg) end val end
included(_base)
click to toggle source
Calls superclass method
# File lib/types/props/custom_type.rb, line 54 def self.included(_base) super raise 'Please use "extend", not "include" to attach this module' end
scalar_type?(val)
click to toggle source
# File lib/types/props/custom_type.rb, line 61 def self.scalar_type?(val) # We don't need to check for val's included modules in # T::Configuration.scalar_types, because T::Configuration.scalar_types # are all classes. klass = T.let(val.class, T.nilable(Class)) until klass.nil? return true if T::Configuration.scalar_types.include?(klass.to_s) klass = klass.superclass end false end
valid_serialization?(val)
click to toggle source
# File lib/types/props/custom_type.rb, line 78 def self.valid_serialization?(val) case val when Array val.each do |v| return false unless scalar_type?(v) end true else scalar_type?(val) end end
Public Instance Methods
deserialize(scalar)
click to toggle source
# File lib/types/props/custom_type.rb, line 51 def deserialize(scalar); end
instance?(value)
click to toggle source
# File lib/types/props/custom_type.rb, line 21 def instance?(value) self.===(value) end
serialize(instance)
click to toggle source
# File lib/types/props/custom_type.rb, line 43 def serialize(instance); end
valid?(value)
click to toggle source
# File lib/types/props/custom_type.rb, line 33 def valid?(value) instance?(value) end