Sha256: a750a7b9511c93eb71409899b6d61f2711c447abb0c4f56a43e8123557512af2

Contents?: true

Size: 1.44 KB

Versions: 48

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

module Bridgetown
  class LiquidRenderer
    # TODO: deprecate or move to a separate repo/plugin
    class File
      def initialize(renderer, filename)
        @renderer = renderer
        @filename = filename
      end

      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)
        measure_time do
          measure_bytes do
            measure_counts do
              @template.render(*args)
            end
          end
        end
      end

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

      def warnings
        @template.warnings
      end

      private

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

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

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

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
bridgetown-core-2.0.0.beta4 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-2.0.0.beta3 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-2.0.0.beta2 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-2.0.0.beta1 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.3.4 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.3.3 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.3.2 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.3.1 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.3.0 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.3.0.beta3 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.3.0.beta2 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.3.0.beta1 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.2.0 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.2.0.beta5 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.2.0.beta4 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.2.0.beta3 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.2.0.beta2 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.2.0.beta1 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.1.0 lib/bridgetown-core/liquid_renderer/file.rb
bridgetown-core-1.1.0.beta3 lib/bridgetown-core/liquid_renderer/file.rb