module T
def self.arr?(t)
def self.arr?(t) if t.respond_to? :underlying_class return t.underlying_class == ::Array end false end
def self.arr_of(t)
def self.arr_of(t) get_raw_type(t.type) end
def self.get_raw_type(t)
def self.get_raw_type(t) if t.respond_to? :raw_type return t.raw_type elsif t.respond_to? :raw_a return T::Boolean if t.raw_a in [TrueClass, FalseClass] end t end
def self.hash?(t)
def self.hash?(t) if t.respond_to? :underlying_class return t.underlying_class == ::Hash end false end
def self.hash_of(t)
def self.hash_of(t) get_raw_type(t.values) end
def self.nilable?(t)
def self.nilable?(t) t.respond_to? :unwrap_nilable end
def self.nilable_of(t)
def self.nilable_of(t) if t.respond_to? :unwrap_nilable return simplify_type t.unwrap_nilable end nil end
def self.simplifiable?(t)
def self.simplifiable?(t) return t.is_a? T::Types::Simple end
def self.simplify_type(t)
def self.simplify_type(t) if t.is_a? T::Types::Simple return t.raw_type end t end