module Liquid::StrainerFactory

StrainerFactory is the factory for the filters system.

Constants

GlobalCache

Public Instance Methods

add_global_filter(filter) click to toggle source
# File lib/liquid/strainer_factory.rb, line 8
def add_global_filter(filter)
  strainer_class_cache.clear
  GlobalCache.add_filter(filter)
end
create(context, filters = []) click to toggle source
# File lib/liquid/strainer_factory.rb, line 13
def create(context, filters = [])
  strainer_from_cache(filters).new(context)
end

Private Instance Methods

strainer_class_cache() click to toggle source
# File lib/liquid/strainer_factory.rb, line 33
def strainer_class_cache
  @strainer_class_cache ||= {}
end
strainer_from_cache(filters) click to toggle source
# File lib/liquid/strainer_factory.rb, line 21
def strainer_from_cache(filters)
  if filters.empty?
    GlobalCache
  else
    strainer_class_cache[filters] ||= begin
      klass = Class.new(GlobalCache)
      filters.each { |f| klass.add_filter(f) }
      klass
    end
  end
end