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