Sha256: 99883186c4e5e0c277c8e9860feec5c706eb9c93b0aabfba15d8edd8b87fda10

Contents?: true

Size: 1.61 KB

Versions: 8

Compression:

Stored size: 1.61 KB

Contents

module Locomotive
  module Steam
    module Liquid
      module Tags

        class Snippet < ::Liquid::Include

          def parse(tokens)
            ActiveSupport::Notifications.instrument('steam.parse.include', page: options[:page], name: @template_name)

            # look for editable elements
            name = evaluate_snippet_name
            if options[:snippet_finder] && snippet = options[:snippet_finder].find(name)
              options[:parser]._parse(snippet, options.merge(snippet: name))
            end
          end

          def render(context)
            @template_name = evaluate_snippet_name(context)
            # @options doesn't include the page key if cache is on
            @options[:page] = context.registers[:page]

            begin
              super
            rescue Locomotive::Steam::ParsingRenderingError => e
              e.file = @template_name + ' [Snippet]'
              raise e
            end
          end

          private

          def read_template_from_file_system(context)
            service = context.registers[:services]
            snippet = service.snippet_finder.find(@template_name)

            raise SnippetNotFound.new("Snippet with slug '#{@template_name}' was not found") if snippet.nil?

            snippet.liquid_source
          end

          def evaluate_snippet_name(context = nil)
            context.try(:evaluate, @template_name) ||
            (!@template_name.is_a?(String) && @template_name.send(:state).first) ||
            @template_name
          end

        end

        ::Liquid::Template.register_tag('include'.freeze, Snippet)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
locomotivecms_steam-1.4.1 lib/locomotive/steam/liquid/tags/snippet.rb
locomotivecms_steam-1.4.0 lib/locomotive/steam/liquid/tags/snippet.rb
locomotivecms_steam-1.4.0.rc2 lib/locomotive/steam/liquid/tags/snippet.rb
locomotivecms_steam-1.4.0.rc1 lib/locomotive/steam/liquid/tags/snippet.rb
locomotivecms_steam-1.4.0.pre.rc.1 lib/locomotive/steam/liquid/tags/snippet.rb
locomotivecms_steam-1.3.0 lib/locomotive/steam/liquid/tags/snippet.rb
locomotivecms_steam-1.3.0.rc2 lib/locomotive/steam/liquid/tags/snippet.rb
locomotivecms_steam-1.3.0.rc1 lib/locomotive/steam/liquid/tags/snippet.rb