class Pakyow::Presenter::ProcessorCaller

@api private

Public Class Methods

new(instances) click to toggle source
# File lib/pakyow/presenter/processor.rb, line 50
def initialize(instances)
  @processors = normalize(instances)
end

Public Instance Methods

process(content, extension) click to toggle source
# File lib/pakyow/presenter/processor.rb, line 54
def process(content, extension)
  content = content.to_s

  processors_for_extension(extension).each do |processor|
    content = processor.call(content)
  end

  unless extension == :html
    processors_for_extension(:html).each do |processor|
      content = processor.call(content)
    end
  end

  content
end
process?(extension) click to toggle source
# File lib/pakyow/presenter/processor.rb, line 70
def process?(extension)
  @processors.key?(extension.tr(".", "").to_sym)
end

Private Instance Methods

normalize(instances) click to toggle source
# File lib/pakyow/presenter/processor.rb, line 80
def normalize(instances)
  instances.each_with_object({}) { |instance, processors|
    instance.class.extensions.each do |extension|
      (processors[extension] ||= []) << instance
    end
  }
end
processors_for_extension(extension) click to toggle source
# File lib/pakyow/presenter/processor.rb, line 76
def processors_for_extension(extension)
  @processors[extension] || []
end