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 ||= {}