class Jekyll::LiquidRenderer::File

def initialize(renderer, filename)

def initialize(renderer, filename)
  @renderer = renderer
  @filename = filename
end

def measure_bytes

def measure_bytes
  yield.tap do |str|
    @renderer.increment_bytes(@filename, str.bytesize)
  end
end

def measure_counts

def measure_counts
  @renderer.increment_count(@filename)
  yield
end

def measure_time

def measure_time
  before = Time.now
  yield
ensure
  after = Time.now
  @renderer.increment_time(@filename, after - before)
end

def parse(content)

def parse(content)
  measure_time do
    @renderer.cache[@filename] ||= Liquid::Template.parse(content, :line_numbers => true)
  end
  @template = @renderer.cache[@filename]
  self
end

def render(*args)

def render(*args)
  reset_template_assigns
  measure_time do
    measure_bytes do
      measure_counts do
        @template.render(*args)
      end
    end
  end
end

def render!(*args)

This method simply 'rethrows any error' before attempting to render the template.
def render!(*args)
  reset_template_assigns
  measure_time do
    measure_bytes do
      measure_counts do
        @template.render!(*args)
      end
    end
  end
end

def reset_template_assigns

`Liquid::Template` instances are cached in Jekyll 4.
clear assigns to `Liquid::Template` instance prior to rendering since
def reset_template_assigns
  @template.instance_assigns.clear
end

def warnings

def warnings
  @template.warnings
end