module Spirit::Render::Processable

Provides methods to attach processors.

Public Instance Methods

postprocess(document) click to toggle source
# File lib/spirit/render/processable.rb, line 42
def postprocess(document)
  invoke_callbacks_in_reverse :postprocess, document
end
preprocess(document) click to toggle source
# File lib/spirit/render/processable.rb, line 37
def preprocess(document)
  instantiate_processors document
  invoke_callbacks :preprocess, document
end

Private Instance Methods

instantiate_processors(document) click to toggle source

Instantiate processors. {#processors} becomes a hash from classes to instances.

# File lib/spirit/render/processable.rb, line 48
def instantiate_processors(document)
  processors = self.class.processors.values.flatten.uniq
  instances  = processors.map { |c| [ c, c.new(self, document) ] }
  self.processors = Hash[instances]
end
invoke_callbacks(event, *args) click to toggle source
# File lib/spirit/render/processable.rb, line 55
def invoke_callbacks(event, *args)
  processors = processors_for event
  processors.each { |p| args = p.invoke_callbacks_for event, *args }
  args
end
invoke_callbacks_in_reverse(event, *args) click to toggle source
# File lib/spirit/render/processable.rb, line 62
def invoke_callbacks_in_reverse(event, *args)
  processors = processors_for(event).reverse
  processors.each { |p| args = p.invoke_callbacks_for event, *args }
  args
end
processors_for(event) click to toggle source
# File lib/spirit/render/processable.rb, line 69
def processors_for(event)
  classes = self.class.processors[event] || []
  classes.map { |c| processors[c] }.compact
end