class Bridgetown::LiquidRenderer::FileSystem

Attributes

site[RW]

Public Instance Methods

read_template_file(template_path) click to toggle source
# File lib/bridgetown-core/liquid_renderer/file_system.rb, line 8
def read_template_file(template_path)
  load_paths = root
  found_paths = []

  load_paths.each do |load_path|
    # Use Liquid's gut checks to verify template pathname
    self.root = load_path
    full_template_path = full_path(template_path)

    # Look for .liquid as well as .html extensions
    path_variants = [
      Pathname.new(full_template_path),
      Pathname.new(full_template_path).sub_ext(".html"),
    ]

    found_paths << path_variants.find(&:exist?)
  end

  # Restore pristine state
  self.root = load_paths

  found_paths.compact!

  raise Liquid::FileSystemError, "No such template '#{template_path}'" if found_paths.empty?

  # Last path in the list wins
  LiquidComponent.parse(
    ::File.read(found_paths.last, **site.file_read_opts)
  ).content
end