module T::Props::ClassMethods

def const(name, cls_or_args, **args)

def const(name, cls_or_args, **args)
  if (cls_or_args.is_a?(Hash) && cls_or_args.key?(:immutable)) || args.key?(:immutable)
    Kernel.raise ArgumentError.new("Cannot pass 'immutable' argument when using 'const' keyword to define a prop")
  end
  if cls_or_args.is_a?(Hash)
    self.prop(name, **cls_or_args.merge(immutable: true))
  else
    self.prop(name, cls_or_args, **args.merge(immutable: true))
  end
end

def decorator

def decorator
  @decorator ||= decorator_class.new(self)
end

def decorator_class

def decorator_class
  Decorator
end

def extended(child)

def extended(child)
  decorator.model_inherited(child.singleton_class)
  super
end

def included(child)

def included(child)
  decorator.model_inherited(child)
  super
end

def inherited(child)

def inherited(child)
  decorator.model_inherited(child)
  super
end

def plugin(mod)

Needs to be documented
def plugin(mod)
  decorator.plugin(mod)
end

def plugins

def plugins
  @plugins ||= []
end

def prepended(child)

def prepended(child)
  decorator.model_inherited(child)
  super
end

def prop(name, cls, **rules)

def prop(name, cls, **rules)
  cls = T::Utils.coerce(cls) if !cls.is_a?(Module)
  decorator.prop_defined(name, cls, rules)
end

def props

def props
  decorator.props
end

def reload_decorator!

def reload_decorator!
  @decorator = decorator_class.new(self)
end

def validate_prop_value(prop, val)

Returns:
  • (void) -

Parameters:
  • val (Object) --
  • prop (Symbol) --
def validate_prop_value(prop, val)
  decorator.validate_prop_value(prop, val)
end