Module: Roda::RodaPlugins::Components::InstanceMethods

Defined in:
lib/roda/plugins/components.rb

Instance Method Summary collapse

Instance Method Details

#component(name, opts = {}, &block) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# 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