akretion/locomotive_shopinvader

View on GitHub
lib/shop_invader/liquid/tags/snippet.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Locomotive
  module Steam
    module Liquid
      module Tags

        class EsiSnippet < Snippet

          def render(context)
            @context = context
            @template_name = evaluate_snippet_name(context)
            if not defined?(Rails)
                # We are using wagon without varnish
                # esi_include is automatically processed like an include
                process_esi = ENV.fetch('WAGON_ESI', 'false').downcase == "true"
            else
                process_esi = !@context.registers[:live_editing]
            end
            if process_esi
              "<esi:include src=\"#{snippet_path}\"/>"
            else
              super
            end
          end

          private

          def snippet_path
            default_locale = site.default_locale.to_sym
            same_locale = locale == default_locale

            if site.prefix_default_locale || !same_locale
              "/#{locale}/snippet/#{@template_name}"
            else
              "/snippet/#{@template_name}"
            end
          end

          def locale
            @locale ||= @context.registers[:locale]
          end

          def site
            @site ||= @context.registers[:site]
          end

          ::Liquid::Template.register_tag('esi_include'.freeze, EsiSnippet)
        end

      end
    end
  end
end