module Roda::RodaPlugins::Components::InstanceMethods

Public Instance Methods

component(name, opts = {}, &block) click to toggle source
# File lib/roda/plugins/components.rb, line 72
def component(name, opts = {}, &block)
  name = name.to_s

  component_request = ComponentRequest.new(self, self.class, name, opts, block)

  content = catch :halt do
    if setup_component = self.class.load_setup_component(name)
      instance_exec(component_request, &setup_component)
    end

    opts[:call] ||= 'display'

    instance_exec(component_request, &self.class.load_component(name))

    raise "Couldn't find on method `#{opts[:call]}`, for the `#{name}` component."
  end

  component_request.trigger_events

  content
end