lib/liquid/strainer_factory.rb in liquid-5.1.0 vs lib/liquid/strainer_factory.rb in liquid-5.2.0
- old
+ new
@@ -5,28 +5,29 @@
module StrainerFactory
extend self
def add_global_filter(filter)
strainer_class_cache.clear
- global_filters << filter
+ GlobalCache.add_filter(filter)
end
def create(context, filters = [])
strainer_from_cache(filters).new(context)
end
+ GlobalCache = Class.new(StrainerTemplate)
+
private
- def global_filters
- @global_filters ||= []
- end
-
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
+ 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
def strainer_class_cache
@strainer_class_cache ||= {}