Class: Liquid::PartialCache

Inherits:
Object
  • Object
show all
Defined in:
lib/locomotive/steam/liquid/patches.rb

Class Method Summary collapse

Class Method Details

.load(template_name, context:, parse_context:) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# 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