module Liquid::StrainerFactory

StrainerFactory is the factory for the filters system.

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
  global_filters << 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

global_filters() click to toggle source
# File lib/liquid/strainer_factory.rb, line 19
def global_filters
  @global_filters ||= []
end
strainer_class_cache() click to toggle source
# File lib/liquid/strainer_factory.rb, line 32
def strainer_class_cache
  @strainer_class_cache ||= {}
end
strainer_from_cache(filters) click to toggle source
# File lib/liquid/strainer_factory.rb, line 23
def strainer_from_cache(filters)
  strainer_class_cache[filters] ||= begin
    klass = Class.new(StrainerTemplate)
    global_filters.each { |f| klass.add_filter(f) }
    filters.each { |f| klass.add_filter(f) }
    klass
  end
end