Module: StimulusPlumbers::Components::Plumber::Renderer::ClassMethods

Defined in:
lib/stimulus_plumbers/components/plumber/renderer.rb

Instance Method Summary collapse

Instance Method Details

#renders(method_name, with: nil, &block) ⇒ Object

rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity

Raises:

  • (ArgumentError)


17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/stimulus_plumbers/components/plumber/renderer.rb', line 17

def renders(method_name, with: nil, &block)
  raise ArgumentError, "method_name must be Symbol" unless method_name.is_a?(Symbol)
  raise ArgumentError, "provide either with: or a block" if !with.nil? && block_given?

  with = block if block_given?

  with_proc_or_symbol = with.is_a?(Proc) || with.is_a?(Symbol)
  with_klazz = with.is_a?(Module) || with.is_a?(String)
  raise ArgumentError, "with: must be a Symbol/Proc/Class" unless with_proc_or_symbol || with_klazz

  self.renderers = renderers.merge(method_name => with)
  ActiveSupport.version >= "7.2" ? generate_renderer_method(method_name) : eval_renderer_method(method_name)
end