class ViewComponent::Template

def compile_to_component

def compile_to_component
  @component.silence_redefinition_of_method(call_method_name)
  # rubocop:disable Style/EvalWithLocation
  @component.class_eval <<~RUBY, @path, @lineno - 1
    def #{call_method_name}
      @view_context.instance_variable_set(:@virtual_path, virtual_path)
      #{compiled_source}
    end
  RUBY
  # rubocop:enable Style/EvalWithLocation
  @component.define_method(safe_method_name, @component.instance_method(@call_method_name))
end