class NanocHtmlPipeline::Filter

Public Class Methods

filter_key(s) click to toggle source
# File lib/nanoc-html-pipeline/filter.rb, line 12
def self.filter_key(s)
  s.to_s.downcase.to_sym
end
is_filter(f) click to toggle source
# File lib/nanoc-html-pipeline/filter.rb, line 16
def self.is_filter(f)
  f < HTML::Pipeline::Filter
rescue LoadError, ArgumentError
  false
end

Public Instance Methods

run(content, params={}) click to toggle source

@param [String] content The content to filter

@return [String] The filtered content

# File lib/nanoc-html-pipeline/filter.rb, line 28
def run(content, params={})
  # Get options
  options = {:pipeline => []}.merge(params)

  filters = options.delete(:pipeline).map do |f|
    if self.class.is_filter(f)
      f
    else
      key = self.class.filter_key(f)
      filter = HTML::Pipeline.constants.find { |c| c.downcase == key }
      # possibly a custom filter
      if filter.nil?
        Nanoc.const_get(f)
      else
        HTML::Pipeline.const_get(filter)
      end
    end
  end

  HTML::Pipeline.new(filters, options).to_html(content)
end