Module: Phlex::Sorbet::ClassMethods

Extended by:
T::Sig
Defined in:
lib/phlex/sorbet/class_methods.rb

Overview

Class methods added to components that include Phlex::Sorbet

Instance Method Summary collapse

Instance Method Details

#build_props(**kwargs) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/phlex/sorbet/class_methods.rb', line 40

def build_props(**kwargs)
  klass = props_class
  unless klass
    return nil if kwargs.empty?

    raise PropsNotDefinedError,
          "#{name} received props (#{kwargs.keys.inspect}) but does not define a Props class"
  end

  deserialize_props(klass, kwargs)
rescue InvalidPropsError, PropsNotDefinedError
  raise
rescue StandardError => e
  raise InvalidPropsError, "Invalid props for #{name}: #{e.message}"
end

#props_classObject



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/phlex/sorbet/class_methods.rb', line 16

def props_class
  return @props_class if defined?(@props_class)

  @props_class = T.let(
    begin
      klass = const_defined?(:Props) ? const_get(:Props) : nil
      validate_props_class!(klass) if klass
      klass
    end,
    T.nilable(T.class_of(T::Struct)),
  )
end