class Content::Pipeline
Constants
- VERSION
Attributes
filters[R]
opts[R]
Public Class Methods
new(filters = nil, opts = nil)
click to toggle source
# File lib/content/pipeline.rb, line 9 def initialize(filters = nil, opts = nil) if filters.is_a?(Hash) && opts.nil? opts = filters filters = nil end opts = {} if opts.nil? filters = Filters::DEFAULT_FILTERS if filters.nil? @opts, @filters = opts.freeze, [ filters ].flatten.freeze end
Public Instance Methods
filter(out, opts = {})
click to toggle source
# File lib/content/pipeline.rb, line 21 def filter(out, opts = {}) return out if out.nil? || out.empty? || @filters.empty? opts = @opts.deep_merge(opts) @filters.each_with_index do |f, i| fopts = opts.values_at(*to_opt(f)).delete_if(&:nil?). \ reduce({}, :merge) out = f.new(out, fopts).run(@filters[i + 1]) end out end
Private Instance Methods
to_opt(cls)
click to toggle source
# File lib/content/pipeline.rb, line 36 def to_opt(cls) cls = cls.name.split(/::/).last [cls.downcase, underscore_cls(cls) ].uniq.map( &:to_sym ) end
underscore_cls(cls)
click to toggle source
# File lib/content/pipeline.rb, line 44 def underscore_cls(cls) (cls[0].downcase + cls[1..-1]).gsub(/([A-Z])/) do "_" + $1.downcase end end