class Liquid::PartialCache

Public Class Methods

load(template_name, context:, parse_context:) click to toggle source
# File lib/locomotive/steam/liquid/patches.rb, line 66
def self.load(template_name, context:, parse_context:)
  begin
    cached_partials = (context.registers[:cached_partials] ||= {})
    cached = cached_partials[template_name]
    return cached if cached

    file_system = (context.registers[:file_system] ||= ::Liquid::Template.file_system)
    source = file_system.read_template_file(template_name)
    parse_context.partial = true

    partial = ::Liquid::Template.parse(source, parse_context)
    cached_partials[template_name] = partial


  rescue ::Liquid::SyntaxError => e
    # FIXME: we had to reload the template one more time. Not ideal.
    file_system = (context.registers[:file_system] ||= ::Liquid::Template.file_system)
    source = file_system.read_template_file(template_name)
    raise Locomotive::Steam::LiquidError.new(e, template_name, source)
  end
ensure
  parse_context.partial = false
end