class ViewComponent::Compiler

def define_render_template_for

Experimental RBS support (using type sampling data from the type_fusion project).

def define_render_template_for: () -> Symbol

This signature was generated using 2 samples from 1 application.

def define_render_template_for
  variant_elsifs = variants.compact.uniq.map do |variant|
    safe_name = "_call_variant_#{normalized_variant_name(variant)}_#{safe_class_name}"
    component_class.define_method(safe_name, component_class.instance_method(call_method_name(variant)))
    "elsif variant.to_sym == :'#{variant}'\n    #{safe_name}"
  end.join("\n")
  component_class.define_method("_call_#{safe_class_name}", component_class.instance_method(:call))
  body = <<-RUBY
    if variant.nil?
      _call_#{safe_class_name}
    #{variant_elsifs}
    else
      _call_#{safe_class_name}
    end
  RUBY
  redefinition_lock.synchronize do
    component_class.silence_redefinition_of_method(:render_template_for)
    component_class.class_eval <<-RUBY, __FILE__, __LINE__ + 1
    def render_template_for(variant = nil)
      #{body}
    end
    RUBY
  end
end