module Roda::RodaPlugins::Components::ClassMethods

Public Instance Methods

component(name, events = [], &block) click to toggle source
# File lib/roda/plugins/components.rb, line 36
def component(name, events = [], &block)
  name                       = name.to_s
  cache[:components][name]   = block
  cache[:events][name]     ||= {}

  events.each do |event|
    if event.is_a? String
      event_array = cache[:events][name][event] ||= []
      event_array << { component: name, call: event }
    elsif event.is_a? Hash
      for_component = event[:for].to_s
      response_to   = event[:respond_to].to_s
      call_with     = event[:with]

      event_array = cache[:events][for_component || name][response_to] ||= []
      event_array << { component: name, call: call_with || response_to }
    end
  end
end
components() click to toggle source
# File lib/roda/plugins/components.rb, line 28
def components
  cache[:components].keys
end
components_opts() click to toggle source
# File lib/roda/plugins/components.rb, line 24
def components_opts
  opts[:components]
end
inherited(subclass) click to toggle source
Calls superclass method
# File lib/roda/plugins/components.rb, line 19
def inherited(subclass)
  super
  opts.merge! subclass.opts[:components]
end
load_component(name) click to toggle source
# File lib/roda/plugins/components.rb, line 32
def load_component name
  cache[:components][name]
end
load_setup_component(name) click to toggle source
# File lib/roda/plugins/components.rb, line 56
def load_setup_component name
  cache[:components]["_setup_#{name}"]
end
setup_component(name, &block) click to toggle source
# File lib/roda/plugins/components.rb, line 60
def setup_component(name, &block)
  cache[:components]["_setup_#{name}"] = block
end

Private Instance Methods

cache() click to toggle source
# File lib/roda/plugins/components.rb, line 66
def cache
  components_opts[:cache]
end