Class: Dimples::Plugin

Inherits:
Object
  • Object
show all
Defined in:
lib/dimples/plugin.rb

Constant Summary collapse

EVENTS =
i[
  post_write
  page_write
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(site) ⇒ Plugin

Returns a new instance of Plugin.



26
27
28
# File 'lib/dimples/plugin.rb', line 26

def initialize(site)
  @site = site
end

Class Method Details

.inherited(subclass) ⇒ Object



10
11
12
# File 'lib/dimples/plugin.rb', line 10

def self.inherited(subclass)
  (@subclasses ||= []) << subclass
end

.plugins(site) ⇒ Object



14
15
16
# File 'lib/dimples/plugin.rb', line 14

def self.plugins(site)
  @plugins ||= @subclasses&.map { |subclass| subclass.new(site) }
end

.process(site, event, item, &block) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/dimples/plugin.rb', line 18

def self.process(site, event, item, &block)
  plugins(site)&.each do |plugin|
    plugin.process(event, item, &block) if plugin.supports_event?(event)
  end

  yield if block_given?
end

Instance Method Details

#process(event, item, &block) ⇒ Object



30
# File 'lib/dimples/plugin.rb', line 30

def process(event, item, &block); end

#supported_eventsObject



32
33
34
# File 'lib/dimples/plugin.rb', line 32

def supported_events
  []
end

#supports_event?(event) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/dimples/plugin.rb', line 36

def supports_event?(event)
  supported_events.include?(event)
end